migration fixes

This commit is contained in:
Efstratios Giannopoulos 2024-06-14 15:41:40 +03:00
parent a056c8fd1d
commit cbd8041c84
1 changed files with 18 additions and 16 deletions

View File

@ -265,6 +265,12 @@ public class DatasetMigrationService {
this.entityManager.flush();
this.sortFieldSets(propertyDefinitionEntity, createdDescriptionReferenceEntities);
return propertyDefinitionEntity;
}
private void sortFieldSets(PropertyDefinitionEntity propertyDefinitionEntity, List<DescriptionReferenceEntity> createdDescriptionReferenceEntities){
Map<UUID, DescriptionReferenceEntity> descriptionReferenceEntitiesMap = createdDescriptionReferenceEntities.stream().collect(Collectors.toMap(DescriptionReferenceEntity::getId, x-> x));
Map<UUID, DescriptionReferenceDataEntity> descriptionReferenceDataEntityById = new HashMap<>();
for (DescriptionReferenceEntity descriptionReferenceEntity : createdDescriptionReferenceEntities){
@ -272,28 +278,24 @@ public class DatasetMigrationService {
if (propertyDefinition != null) descriptionReferenceDataEntityById.put(descriptionReferenceEntity.getId(), propertyDefinition);
}
for (PropertyDefinitionFieldSetEntity fieldSetEntity : propertyDefinitionEntity.getFieldSets().values()){
int newOrdinal = 0;
PropertyDefinitionFieldSetItemEntity firstFieldSet = fieldSetEntity.getItems().stream().findFirst().filter(x-> x.getOrdinal() == SimpleFieldSetOrdinal).orElse(null);
if (firstFieldSet != null){
this.ensureDescriptionReferenceOrdinal(firstFieldSet, descriptionReferenceEntitiesMap, descriptionReferenceDataEntityById, newOrdinal);
firstFieldSet.setOrdinal(newOrdinal);
newOrdinal++;
}
for (PropertyDefinitionFieldSetItemEntity propertyDefinitionFieldSetItemEntity : fieldSetEntity.getItems().stream().filter(x-> x.getOrdinal() >= 0 && x.getOrdinal() != SimpleFieldSetOrdinal).sorted(Comparator.comparingInt(PropertyDefinitionFieldSetItemEntity::getOrdinal)).toList()){
this.ensureDescriptionReferenceOrdinal(propertyDefinitionFieldSetItemEntity, descriptionReferenceEntitiesMap, descriptionReferenceDataEntityById, newOrdinal);
propertyDefinitionFieldSetItemEntity.setOrdinal(newOrdinal);
newOrdinal++;
LinkedList<PropertyDefinitionFieldSetItemEntity> sortedPropertyDefinitionFieldSetItemEntities = new LinkedList<>();
fieldSetEntity.getItems().stream().findFirst().filter(x -> x.getOrdinal() == SimpleFieldSetOrdinal).ifPresent(sortedPropertyDefinitionFieldSetItemEntities::addLast);
for (PropertyDefinitionFieldSetItemEntity propertyDefinitionFieldSetItemEntity : fieldSetEntity.getItems().stream().filter(x-> x.getOrdinal() >= 0 && x.getOrdinal() != SimpleFieldSetOrdinal).sorted(Comparator.comparingInt(PropertyDefinitionFieldSetItemEntity::getOrdinal)).toList()){
sortedPropertyDefinitionFieldSetItemEntities.addLast(propertyDefinitionFieldSetItemEntity);
}
for (PropertyDefinitionFieldSetItemEntity propertyDefinitionFieldSetItemEntity : fieldSetEntity.getItems().stream().filter(x-> x.getOrdinal() < 0 && x.getOrdinal() != SimpleFieldSetOrdinal).sorted(Comparator.comparingInt(PropertyDefinitionFieldSetItemEntity::getOrdinal)).toList()){
this.ensureDescriptionReferenceOrdinal(propertyDefinitionFieldSetItemEntity, descriptionReferenceEntitiesMap, descriptionReferenceDataEntityById, newOrdinal);
propertyDefinitionFieldSetItemEntity.setOrdinal(newOrdinal);
newOrdinal++;
sortedPropertyDefinitionFieldSetItemEntities.addLast(propertyDefinitionFieldSetItemEntity);
}
for (int ordinal = 0; ordinal < sortedPropertyDefinitionFieldSetItemEntities.size(); ordinal++){
PropertyDefinitionFieldSetItemEntity fieldSet = sortedPropertyDefinitionFieldSetItemEntities.get(ordinal);
this.ensureDescriptionReferenceOrdinal(fieldSet, descriptionReferenceEntitiesMap, descriptionReferenceDataEntityById, ordinal);
fieldSet.setOrdinal(ordinal);
}
}
this.entityManager.flush();
return propertyDefinitionEntity;
}
private void ensureDescriptionReferenceOrdinal(PropertyDefinitionFieldSetItemEntity propertyDefinitionFieldSetItemEntity, Map<UUID, DescriptionReferenceEntity> descriptionReferenceEntitiesMap, Map<UUID, DescriptionReferenceDataEntity> descriptionReferenceDataEntityById, int newOrdinal){