diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java index 1ed26d848..9039d7f8f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java @@ -109,7 +109,9 @@ public class DossierTemplateImportService { ImportTemplateResult archiveResult = readDossierTemplateImportArchive(request); - return importDossierTemplate(archiveResult).getDossierTemplateId(); + TemplateImportInfo templateImportInfo = importDossierTemplate(archiveResult); + + return templateImportInfo.getDossierTemplateId(); } @@ -165,7 +167,6 @@ public class DossierTemplateImportService { } throw e; } - return templateImportInfo; } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentMappingService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentMappingService.java index bc7245e7e..146263df1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentMappingService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentMappingService.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.UUID; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import com.iqser.red.service.persistence.management.v1.processor.entity.ComponentMappingEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; @@ -229,7 +230,7 @@ public class ComponentMappingService { return dossierTemplateId + "/" + id + "_" + name + "_" + fileName; } - + @Transactional public void deleteByDossierTemplateId(String dossierTemplateId) { componentMappingPersistenceService.getByDossierTemplateId(dossierTemplateId) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java index 7ffcf8bc7..2d67aed6e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java @@ -405,6 +405,7 @@ public class DictionaryManagementService { } + @Transactional public void hardDeleteByDossierTemplateId(String dossierTemplateId) { dictionaryPersistenceService.hardDeleteTypesByDossierTemplateId(dossierTemplateId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierDeletionService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierDeletionService.java index 2ba896148..24dee8350 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierDeletionService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierDeletionService.java @@ -5,6 +5,10 @@ import java.util.List; import org.springframework.stereotype.Service; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository; + import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @@ -15,6 +19,9 @@ public class DossierDeletionService { private final FileDeletionService fileDeletionService; private final DossierService dossierService; private final DictionaryManagementService dictionaryManagementService; + private final DossierAttributePersistenceService dossierAttributePersistenceService; + private final DossierAttributeConfigRepository dossierAttributeConfigRepository; + private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; @Transactional @@ -45,12 +52,16 @@ public class DossierDeletionService { } - @Transactional - public void deleteAllDossiersInTemplate(String dossierId) { + public void deleteAllDossiersInTemplate(String dossierTemplateId) { + + for (String dossierId : dossierService.getAllDossierIdsForDossierTemplateId(dossierTemplateId)) { + + fileDeletionService.hardDeleteFilesAndDataByDossierId(dossierId); + dictionaryManagementService.hardDeleteByDossierId(dossierId); + dossierAttributePersistenceService.deleteDossierAttribute(dossierId); + dossierService.hardDeleteDossier(dossierId); + } - fileDeletionService.hardDeleteFilesAndDataByDossierId(dossierId); - dictionaryManagementService.hardDeleteByDossierId(dossierId); - dossierService.hardDeleteDossier(dossierId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java index 5fcf3c375..bb4efd2f6 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java @@ -119,6 +119,7 @@ public class DossierService { } + @Transactional public void hardDeleteDossier(String dossierId) { dossierPersistenceService.hardDelete(dossierId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateManagementService.java index b438c9dc6..f826928a3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateManagementService.java @@ -8,8 +8,11 @@ import java.util.stream.Collectors; import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; @@ -28,6 +31,10 @@ public class DossierTemplateManagementService { private final DictionaryManagementService dictionaryManagementService; private final ComponentMappingService componentMappingService; private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; + private final DossierAttributePersistenceService dossierAttributePersistenceService; + private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; + private final ReportTemplatePersistenceService reportTemplatePersistenceService; + private final WatermarkService watermarkService; public DossierTemplate createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest dossierTemplate) { @@ -50,10 +57,13 @@ public class DossierTemplateManagementService { public void deleteDossierTemplateCompletely(String dossierTemplateId) { + watermarkService.deleteByDossierTemplateId(dossierTemplateId); + reportTemplatePersistenceService.deleteAllByDossierTemplateId(dossierTemplateId); fileAttributeConfigPersistenceService.deleteByDossierTemplateId(dossierTemplateId); dictionaryManagementService.hardDeleteByDossierTemplateId(dossierTemplateId); componentMappingService.deleteByDossierTemplateId(dossierTemplateId); dossierDeletionService.deleteAllDossiersInTemplate(dossierTemplateId); + dossierAttributeConfigPersistenceService.deleteAllDossierAttributeConfigsInTemplate(dossierTemplateId); dossierTemplatePersistenceService.deleteDossierTemplate(dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java index 454904e1f..8d5fe57c5 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java @@ -70,7 +70,8 @@ public class WatermarkService { validateWatermarkNameIsUnique(watermark.getName(), loadedWatermark.get().getDossierTemplateId(), loadedWatermark.get().getId()); BeanUtils.copyProperties(watermark, loadedWatermark.get(), "dossierTemplateId", "createdBy", "dateAdded", "dateModified"); loadedWatermark.get().setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); - var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()).orElseThrow(() -> new NotFoundException("Dossier Template not found")); + var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()) + .orElseThrow(() -> new NotFoundException("Dossier Template not found")); loadedWatermark.get().setDossierTemplate(dossierTemplate); return loadedWatermark.get(); } else { // if not found by id -> add it as a new watermark @@ -79,7 +80,8 @@ public class WatermarkService { WatermarkEntity watermarkEntity = new WatermarkEntity(); BeanUtils.copyProperties(watermark, watermarkEntity, "id", "dateAdded", "dateModified"); watermarkEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); - var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()).orElseThrow(() -> new NotFoundException("Dossier Template not found")); + var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()) + .orElseThrow(() -> new NotFoundException("Dossier Template not found")); watermarkEntity.setDossierTemplate(dossierTemplate); return watermarkRepository.save(watermarkEntity); } @@ -89,7 +91,8 @@ public class WatermarkService { WatermarkEntity watermarkEntity = new WatermarkEntity(); BeanUtils.copyProperties(watermark, watermarkEntity, "id", "dateAdded", "dateModified"); watermarkEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); - var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()).orElseThrow(() -> new NotFoundException("Dossier Template not found")); + var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()) + .orElseThrow(() -> new NotFoundException("Dossier Template not found")); watermarkEntity.setDossierTemplate(dossierTemplate); return watermarkRepository.save(watermarkEntity); } @@ -168,4 +171,11 @@ public class WatermarkService { return count != 0; } + + @Transactional + public void deleteByDossierTemplateId(String dossierTemplateId) { + + watermarkRepository.deleteByDossierTemplateId(dossierTemplateId); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java index 2d5124d5d..334c0015f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java @@ -341,20 +341,21 @@ public class DictionaryPersistenceService { public void hardDeleteTypesByDossierTemplateId(String dossierTemplateId) { for (TypeEntity typeEntity : typeRepository.findAllByDossierTemplateId(dossierTemplateId)) { - entryRepository.deleteAllByTypeId(typeEntity.getType()); - falsePositiveEntryRepository.deleteAllByTypeId(typeEntity.getType()); - falseRecommendationEntryRepository.deleteAllByTypeId(typeEntity.getType()); + entryRepository.deleteAllByTypeId(typeEntity.getId()); + falsePositiveEntryRepository.deleteAllByTypeId(typeEntity.getId()); + falseRecommendationEntryRepository.deleteAllByTypeId(typeEntity.getId()); typeRepository.deleteById(typeEntity.getId()); } } + @Transactional public void hardDeleteTypesByDossierId(String dossierId) { for (TypeEntity typeEntity : typeRepository.findByDossierId(dossierId)) { - entryRepository.deleteAllByTypeId(typeEntity.getType()); - falsePositiveEntryRepository.deleteAllByTypeId(typeEntity.getType()); - falseRecommendationEntryRepository.deleteAllByTypeId(typeEntity.getType()); + entryRepository.deleteAllByTypeId(typeEntity.getId()); + falsePositiveEntryRepository.deleteAllByTypeId(typeEntity.getId()); + falseRecommendationEntryRepository.deleteAllByTypeId(typeEntity.getId()); typeRepository.deleteById(typeEntity.getId()); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributeConfigPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributeConfigPersistenceService.java index 18e146390..f2ab3a741 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributeConfigPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributeConfigPersistenceService.java @@ -135,4 +135,11 @@ public class DossierAttributeConfigPersistenceService { return result.isPresent() ? result.get().getId() : null; } + + @Transactional + public void deleteAllDossierAttributeConfigsInTemplate(String dossierTemplateId) { + + dossierAttributeConfigRepository.deleteAllByDossierTemplateId(dossierTemplateId); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java index 6bb729b13..24e8cb6e6 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java @@ -5,7 +5,6 @@ import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Optional; import java.util.UUID; -import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -17,8 +16,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier. import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.ComponentMappingService; -import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; @@ -29,7 +26,9 @@ import jakarta.transaction.Transactional; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; +import lombok.extern.slf4j.Slf4j; +@Slf4j @Service @RequiredArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) @@ -167,7 +166,6 @@ public class DossierTemplatePersistenceService { } - @Transactional public List getAllDossierTemplates() { var allDossierTemplates = dossierTemplateRepository.findAllWhereDeletedIsFalse(); @@ -177,7 +175,6 @@ public class DossierTemplatePersistenceService { } - @Transactional public DossierTemplateEntity getDossierTemplate(String dossierTemplateId) { var dossierTemplate = dossierTemplateRepository.findByIdAndNotDeleted(dossierTemplateId) @@ -242,6 +239,4 @@ public class DossierTemplatePersistenceService { dossierTemplateRepository.saveAndFlush(dossierTemplate); } - - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java index a48006378..d73dad888 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java @@ -180,6 +180,7 @@ public class FileAttributeConfigPersistenceService { for (FileAttributeConfigEntity fileAttribute : getFileAttributes(dossierTemplateId)) { deleteFileAttribute(fileAttribute.getId()); } + fileAttributesGeneralConfigurationRepository.deleteByDossierTemplateId(dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java index 1a8ddc47c..f08ff5d41 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java @@ -77,4 +77,14 @@ public class ReportTemplatePersistenceService { } } + + @Transactional + public void deleteAllByDossierTemplateId(String dossierTemplateId) { + + for (ReportTemplateEntity reportTemplateEntity : findByDossierTemplateId(dossierTemplateId)) { + delete(reportTemplateEntity.getTemplateId()); + } + + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierAttributeConfigRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierAttributeConfigRepository.java index 1b4b47ceb..5840b1aea 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierAttributeConfigRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierAttributeConfigRepository.java @@ -19,4 +19,6 @@ public interface DossierAttributeConfigRepository extends JpaRepository { + void deleteByDossierTemplateId(String dossierTemplateId); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/WatermarkRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/WatermarkRepository.java index 2979ac9b9..8b36b3783 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/WatermarkRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/WatermarkRepository.java @@ -10,4 +10,7 @@ public interface WatermarkRepository extends JpaRepository findByDossierTemplateId(String dossierTemplateId); + + void deleteByDossierTemplateId(String dossierTemplateId); + }