SUPPORT-9421: fix after update platform version
This commit is contained in:
parent
b1e33efd60
commit
b2a9641b22
1 changed files with 19 additions and 21 deletions
|
|
@ -38,7 +38,7 @@ public abstract class ContainerValueLoaderServiceBase extends Behavior
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
validateParametersNumber(params.length);
|
validateParametersNumber(params.length);
|
||||||
return new ArrayList<>(loadData(params, idToColumnMapping(guids)));
|
return new ArrayList<>(loadData(params, byColumnMapping(guids)));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void validateParametersNumber(int parametersLength);
|
protected abstract void validateParametersNumber(int parametersLength);
|
||||||
|
|
@ -47,27 +47,26 @@ public abstract class ContainerValueLoaderServiceBase extends Behavior
|
||||||
|
|
||||||
protected abstract List<EntityFilter> createEntityFilters(Object[] params);
|
protected abstract List<EntityFilter> createEntityFilters(Object[] params);
|
||||||
|
|
||||||
private Map<String, EntityColumn> idToColumnMapping(List<String> guids) {
|
private Map<String, FieldValueByContainer<?,?>> byColumnMapping(List<String> guids) {
|
||||||
Map<String, FieldValueByContainer<?>> byColumnMapping = getScriptsMapping(guids,
|
Map<String, FieldValueByContainer<?,?>> byColumnMapping = getScriptsMapping(guids,
|
||||||
fieldDefaultValue -> fieldDefaultValue.loadType == LoadType.BY_COLUMN
|
fieldDefaultValue -> fieldDefaultValue.loadType == LoadType.BY_COLUMN
|
||||||
);
|
);
|
||||||
if (byColumnMapping.isEmpty()) {
|
if (byColumnMapping.isEmpty()) {
|
||||||
throw new IllegalArgumentException("No control data to load");
|
throw new IllegalArgumentException("No control data to load");
|
||||||
}
|
}
|
||||||
Map<String, EntityColumn> idToColumnMapping = byColumnMapping.entrySet().stream()
|
|
||||||
.collect(Collectors.toMap(
|
return byColumnMapping;
|
||||||
Map.Entry::getKey,
|
|
||||||
entry -> entry.getValue().getValueColumn()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
return idToColumnMapping;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<FieldData> loadData(Object[] params, Map<String, EntityColumn> idToColumnMapping) {
|
private List<FieldData> loadData(Object[] params, Map<String, FieldValueByContainer<?,?>> byColumnMapping ) {
|
||||||
Set<EntityColumn> columns = new HashSet<>(idToColumnMapping.values());
|
Set<EntityColumn> columns = byColumnMapping.values().stream()
|
||||||
|
.map(FieldValueByContainer::getValueColumn)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
Map<EntityColumn, Object> columnToDataMapping;
|
Map<EntityColumn, Object> columnToDataMapping;
|
||||||
if (loadByPkCondition()) {
|
if (loadByPkCondition()) {
|
||||||
columnToDataMapping = loadDao.loadByPK(columns, params[0].toString()).getColumnToDataMap();
|
columnToDataMapping = loadDao.loadByPK(columns, params[0].toString())
|
||||||
|
.getColumnToDataMap();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LoadOptions loadOptions = new LoadOptions();
|
LoadOptions loadOptions = new LoadOptions();
|
||||||
|
|
@ -78,19 +77,18 @@ public abstract class ContainerValueLoaderServiceBase extends Behavior
|
||||||
: Collections.emptyMap();
|
: Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
return idToColumnMapping.entrySet().stream()
|
return byColumnMapping.entrySet().stream()
|
||||||
.map(entry -> {
|
.map(entry -> {
|
||||||
DataConverter dataConverter = DataConverterProvider.getDataConverter(
|
FieldValueByContainer<Object, Object> fieldValue = (FieldValueByContainer<Object, Object>) entry.getValue();
|
||||||
entry.getValue().getType());
|
Object rawValue = columnToDataMapping.get(fieldValue.getValueColumn());
|
||||||
Object convertedValue = dataConverter.convertValueForLoad(
|
Object convertedValue = fieldValue.convertValueForLoad(rawValue);
|
||||||
columnToDataMapping.get(entry.getValue()));
|
|
||||||
return new FieldData(entry.getKey(), convertedValue);
|
return new FieldData(entry.getKey(), convertedValue);
|
||||||
})
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, FieldValueByContainer<?>> getScriptsMapping(List<String> guids,
|
private Map<String, FieldValueByContainer<?,?>> getScriptsMapping(List<String> guids,
|
||||||
final Predicate<FieldValueByContainer<?>> predicate) {
|
final Predicate<FieldValueByContainer<?,?>> predicate) {
|
||||||
return guids.stream()
|
return guids.stream()
|
||||||
.map(guid -> new HashMap.SimpleEntry<>(guid, getFieldOnEventValueScript(guid)))
|
.map(guid -> new HashMap.SimpleEntry<>(guid, getFieldOnEventValueScript(guid)))
|
||||||
.filter(entry -> entry.getValue() != null)
|
.filter(entry -> entry.getValue() != null)
|
||||||
|
|
@ -98,7 +96,7 @@ public abstract class ContainerValueLoaderServiceBase extends Behavior
|
||||||
.collect(Collectors.toMap(HashMap.SimpleEntry::getKey, HashMap.SimpleEntry::getValue));
|
.collect(Collectors.toMap(HashMap.SimpleEntry::getKey, HashMap.SimpleEntry::getValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FieldValueByContainer<?> getFieldOnEventValueScript(String guid) {
|
private FieldValueByContainer<?,?> getFieldOnEventValueScript(String guid) {
|
||||||
try {
|
try {
|
||||||
return getScriptInObject(guid, FieldValueByContainer.class);
|
return getScriptInObject(guid, FieldValueByContainer.class);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue