diff --git a/backend/src/main/java/service/loading/ContainerValueLoaderServiceBase.java b/backend/src/main/java/service/loading/ContainerValueLoaderServiceBase.java index 536a9fc..54a7e8c 100644 --- a/backend/src/main/java/service/loading/ContainerValueLoaderServiceBase.java +++ b/backend/src/main/java/service/loading/ContainerValueLoaderServiceBase.java @@ -38,7 +38,7 @@ public abstract class ContainerValueLoaderServiceBase extends Behavior return Collections.emptyList(); } validateParametersNumber(params.length); - return new ArrayList<>(loadData(params, idToColumnMapping(guids))); + return new ArrayList<>(loadData(params, byColumnMapping(guids))); } protected abstract void validateParametersNumber(int parametersLength); @@ -47,27 +47,26 @@ public abstract class ContainerValueLoaderServiceBase extends Behavior protected abstract List createEntityFilters(Object[] params); - private Map idToColumnMapping(List guids) { - Map> byColumnMapping = getScriptsMapping(guids, + private Map> byColumnMapping(List guids) { + Map> byColumnMapping = getScriptsMapping(guids, fieldDefaultValue -> fieldDefaultValue.loadType == LoadType.BY_COLUMN ); if (byColumnMapping.isEmpty()) { throw new IllegalArgumentException("No control data to load"); } - Map idToColumnMapping = byColumnMapping.entrySet().stream() - .collect(Collectors.toMap( - Map.Entry::getKey, - entry -> entry.getValue().getValueColumn() - ) - ); - return idToColumnMapping; + + return byColumnMapping; } - private List loadData(Object[] params, Map idToColumnMapping) { - Set columns = new HashSet<>(idToColumnMapping.values()); + private List loadData(Object[] params, Map> byColumnMapping ) { + Set columns = byColumnMapping.values().stream() + .map(FieldValueByContainer::getValueColumn) + .collect(Collectors.toSet()); + Map columnToDataMapping; if (loadByPkCondition()) { - columnToDataMapping = loadDao.loadByPK(columns, params[0].toString()).getColumnToDataMap(); + columnToDataMapping = loadDao.loadByPK(columns, params[0].toString()) + .getColumnToDataMap(); } else { LoadOptions loadOptions = new LoadOptions(); @@ -78,19 +77,18 @@ public abstract class ContainerValueLoaderServiceBase extends Behavior : Collections.emptyMap(); } - return idToColumnMapping.entrySet().stream() + return byColumnMapping.entrySet().stream() .map(entry -> { - DataConverter dataConverter = DataConverterProvider.getDataConverter( - entry.getValue().getType()); - Object convertedValue = dataConverter.convertValueForLoad( - columnToDataMapping.get(entry.getValue())); + FieldValueByContainer fieldValue = (FieldValueByContainer) entry.getValue(); + Object rawValue = columnToDataMapping.get(fieldValue.getValueColumn()); + Object convertedValue = fieldValue.convertValueForLoad(rawValue); return new FieldData(entry.getKey(), convertedValue); }) .collect(Collectors.toList()); } - private Map> getScriptsMapping(List guids, - final Predicate> predicate) { + private Map> getScriptsMapping(List guids, + final Predicate> predicate) { return guids.stream() .map(guid -> new HashMap.SimpleEntry<>(guid, getFieldOnEventValueScript(guid))) .filter(entry -> entry.getValue() != null) @@ -98,7 +96,7 @@ public abstract class ContainerValueLoaderServiceBase extends Behavior .collect(Collectors.toMap(HashMap.SimpleEntry::getKey, HashMap.SimpleEntry::getValue)); } - private FieldValueByContainer getFieldOnEventValueScript(String guid) { + private FieldValueByContainer getFieldOnEventValueScript(String guid) { try { return getScriptInObject(guid, FieldValueByContainer.class); }