diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/StorageToMongoCopyService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/StorageToMongoCopyService.java index 1cb109027..03b46841b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/StorageToMongoCopyService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/StorageToMongoCopyService.java @@ -25,7 +25,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; -import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.ComponentDocument; import com.iqser.red.storage.commons.exception.StorageException; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; import com.iqser.red.storage.commons.service.StorageService; @@ -76,8 +75,15 @@ public class StorageToMongoCopyService { } + private void copyEntityLogs(DossierFile dossierFile) { + if (fileManagementStorageService.entityLogExists(dossierFile.dossierId, dossierFile.fileId)) { + log.info("EntityLog already exists in Mongo for dossierId={}, fileId={}.", + dossierFile.dossierId, dossierFile.fileId); + return; + } + log.info("Reading dossier {} file {} from storage", dossierFile.dossierId, dossierFile.fileId); Optional entityLogFromStorage = getEntityLogFromStorageForMigration(dossierFile.dossierId, dossierFile.fileId); if (entityLogFromStorage.isPresent()) { @@ -139,6 +145,9 @@ public class StorageToMongoCopyService { if (optionalComponentsOverrides.isEmpty()) { return; } + if(!componentLogService.getOverrides(file.dossierId(), file.fileId()).isEmpty()) { + return; + } ComponentsOverrides oldComponentsOverrides = optionalComponentsOverrides.get(); oldComponentsOverrides.getComponentOverrides() .forEach((componentName, componentValue) -> { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentDefinitionService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentDefinitionService.java index c89234cf2..4ec5e17a0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentDefinitionService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentDefinitionService.java @@ -9,7 +9,9 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; @@ -47,22 +49,28 @@ public class ComponentDefinitionService { validateDossierTemplateExists(dossierTemplateId); validateAddRequest(componentDefinitionAddRequests); - List componentEntities = new ArrayList<>(); - componentDefinitionAddRequests.forEach(componentDefinitionAddRequest -> { - Optional optionalIdOfSoftDeleted = componentDefinitionPersistenceService.findIdByDossierTemplateIdAndTechnicalNameAndIsSoftDeleted(dossierTemplateId, - componentDefinitionAddRequest.getTechnicalName()); - ComponentDefinitionEntity entity; - if (optionalIdOfSoftDeleted.isEmpty()) { - entity = componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, dossierTemplateId); - } else { - int rank = componentDefinitionPersistenceService.maxRankByDossierTemplateId(dossierTemplateId) + 1; - entity = componentDefinitionPersistenceService.restoreComponent(dossierTemplateId, optionalIdOfSoftDeleted.get()); - entity.setDescription(componentDefinitionAddRequest.getDescription()); - entity.setRank(rank); - entity = componentDefinitionPersistenceService.update(entity); - } - componentEntities.add(entity); - }); + List componentEntities = componentDefinitionAddRequests.stream() + .map(request -> { + Optional optionalComponentDefinition = componentDefinitionPersistenceService.findIdByDossierTemplateIdAndTechnicalName( + dossierTemplateId, + request.getTechnicalName()); + + return optionalComponentDefinition.map(componentDefinition -> { + if (componentDefinition.getSoftDeleteTime() != null) { + int rank = componentDefinitionPersistenceService.maxRankByDossierTemplateId(dossierTemplateId) + 1; + ComponentDefinitionEntity restored = componentDefinitionPersistenceService.restoreComponent(dossierTemplateId, componentDefinition.getId()); + restored.setDescription(request.getDescription()); + restored.setRank(rank); + return componentDefinitionPersistenceService.update(restored); + } + // return unchanged + return componentDefinition; + }) + .orElseGet(() -> componentDefinitionPersistenceService.insert(request, dossierTemplateId)); + }) + .filter(Objects::nonNull) + .toList(); + return componentEntities.stream() .map(componentDefinitionEntity -> MagicConverter.convert(componentDefinitionEntity, ComponentDefinition.class)) .sorted(Comparator.comparing(ComponentDefinition::getRank)) @@ -72,11 +80,11 @@ public class ComponentDefinitionService { @Transactional public List createComponentsInternal(String dossierTemplateId, List componentDefinitionAddRequests) { + return createComponents(dossierTemplateId, componentDefinitionAddRequests); } - private void validateAddRequest(List componentDefinitionAddRequests) { long nrOfComponentsWithEmptyTechnicalName = componentDefinitionAddRequests.stream() diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ComponentDefinitionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ComponentDefinitionPersistenceService.java index 485bff595..2b2d8ba23 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ComponentDefinitionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ComponentDefinitionPersistenceService.java @@ -121,9 +121,9 @@ public class ComponentDefinitionPersistenceService { } - public Optional findIdByDossierTemplateIdAndTechnicalNameAndIsSoftDeleted(String dossierTemplateId, String technicalName) { + public Optional findIdByDossierTemplateIdAndTechnicalName(String dossierTemplateId, String technicalName) { - return componentDefinitionRepository.findIdByDossierTemplateIdAndTechnicalNameAndIsSoftDeleted(dossierTemplateId, technicalName); + return componentDefinitionRepository.findIdByDossierTemplateIdAndTechnicalName(dossierTemplateId, technicalName); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ComponentDefinitionRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ComponentDefinitionRepository.java index a7ce93bdd..36540316f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ComponentDefinitionRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ComponentDefinitionRepository.java @@ -37,8 +37,7 @@ public interface ComponentDefinitionRepository extends JpaRepository findIdByDossierTemplateIdAndTechnicalNameAndIsSoftDeleted(@Param("dossierTemplateId") String dossierTemplateId, @Param("technicalName") String technicalName); + Optional findIdByDossierTemplateIdAndTechnicalName(String dossierTemplateId, String technicalName); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentDefinitionTests.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentDefinitionTests.java index e048be0ea..b4074fc9d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentDefinitionTests.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentDefinitionTests.java @@ -162,7 +162,7 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe var componentDefinitionAddRequest = buildComponentDefinitionAddRequest(dossierTemplate); var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest)); - assertEquals(response.size(), 1); + assertEquals(1, response.size()); dossierTemplateExternalClient.deleteComponents(dossierTemplate.getId(), List.of(response.get(0).getId())); @@ -176,7 +176,7 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe componentDefinitionAddRequest.setDescription(changedDescription); int count = componentDefinitionPersistenceService.maxRankByDossierTemplateId(dossierTemplate.getId()); response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest)); - assertEquals(response.size(), 1); + assertEquals(1, response.size()); assertEquals(response.get(0).getDescription(), changedDescription); assertEquals(response.get(0).getRank(), count + 1); }