diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java index 96de1dc80..aa1ddd9ce 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java @@ -381,7 +381,6 @@ public class DossierController implements DossierResource { throw new AccessDeniedException("Can not delete dossier that is owned by a different user"); } - dossierManagementService.softDeleteDossier(dossierId); auditPersistenceService.audit(AuditRequest.builder() @@ -450,7 +449,7 @@ public class DossierController implements DossierResource { @PostFilter("hasPermission(filterObject.id, 'Dossier', 'VIEW_OBJECT')") public List getSoftDeletedDossiers() { - var dossiers = dossierManagementService.getSoftDeletedDossiers() + var dossiers = dossierManagementService.getSoftDeletedDossiers() .stream() .map(dossierACLService::enhanceDossierWithACLData) .collect(Collectors.toList()); @@ -463,7 +462,7 @@ public class DossierController implements DossierResource { @PostFilter("hasPermission(filterObject.id, 'Dossier', 'VIEW_OBJECT')") public List getArchivedDossiers() { - var dossiers = dossierManagementService.getArchivedDossiers() + var dossiers = dossierManagementService.getArchivedDossiers() .stream() .map(dossierACLService::enhanceDossierWithACLData) .collect(Collectors.toList()); diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierTemplateController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierTemplateController.java index 1e9baa3c9..1236803bd 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierTemplateController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierTemplateController.java @@ -24,13 +24,15 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ExportDownloadRequest; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateExportService; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService; 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.service.DossierManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateStatsService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierTemplateResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; @@ -42,7 +44,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStats; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ExportDownloadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ImportDossierTemplateRequest; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; @@ -61,7 +62,8 @@ public class DossierTemplateController implements DossierTemplateResource { private final AuditPersistenceService auditPersistenceService; private final DossierManagementService dossierManagementService; private final DossierACLService dossierACLService; - private final UserService userService; + private final DossierTemplateImportService dossierTemplateImportService; + private final DossierTemplateExportService dossierTemplateExportService; @Override @@ -125,7 +127,7 @@ public class DossierTemplateController implements DossierTemplateResource { throw new ConflictException("Can not delete dossier template because there are dossiers based on it"); } - dossierTemplateManagementService.deleteDossierTemplate(dossierTemplateId, userId); + dossierTemplateManagementService.softDeleteDossierTemplate(dossierTemplateId, userId); auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) .objectId(dossierTemplateId) @@ -150,7 +152,7 @@ public class DossierTemplateController implements DossierTemplateResource { throw new ConflictException("Can not delete dossier template because there are dossiers based on it"); } - dossierTemplateManagementService.deleteDossierTemplate(dossierTemplateId, userId); + dossierTemplateManagementService.softDeleteDossierTemplate(dossierTemplateId, userId); auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) .objectId(dossierTemplateId) @@ -224,15 +226,16 @@ public class DossierTemplateController implements DossierTemplateResource { try { ExportDownloadRequest request = ExportDownloadRequest.builder().dossierTemplateId(dossierTemplateId).userId(KeycloakSecurity.getUserId()).build(); - var response = dossierTemplateManagementService.prepareExportDownload(request); + dossierTemplateManagementService.validateDossierTemplateForDuplicateRanks(request.getDossierTemplateId()); + String storageId = dossierTemplateExportService.prepareExportDownload(request); auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) - .objectId(response.getValue()) + .objectId(storageId) .category(AuditCategory.DOWNLOAD.name()) .message("Export Download was prepared") .details(Map.of("dossierTemplateId", request.getDossierTemplateId())) .build()); - return new DownloadResponse(response.getValue()); + return new DownloadResponse(storageId); } catch (FeignException e) { throw processFeignException(e); } @@ -265,15 +268,15 @@ public class DossierTemplateController implements DossierTemplateResource { .userId(KeycloakSecurity.getUserId()) .archive(file.getBytes()) .build(); - DossierTemplate loadedDossierTemplate = dossierTemplateManagementService.importDossierTemplate(request); + String importedDossierTemplateId = dossierTemplateImportService.importDossierTemplate(request); auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) - .objectId(loadedDossierTemplate.getId()) + .objectId(importedDossierTemplateId) .category(AuditCategory.DOSSIER_TEMPLATE.name()) .message("Dossier template was imported") - .details(Map.of("dossierTemplateId", loadedDossierTemplate.getId())) + .details(Map.of("dossierTemplateId", importedDossierTemplateId)) .build()); - return convert(loadedDossierTemplate); + return convert(dossierTemplateManagementService.getDossierTemplate(importedDossierTemplateId)); } catch (IOException e) { throw new BadRequestException(e.getMessage(), e); } catch (FeignException e) { diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java index c05366f0d..31b44c51e 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java @@ -37,7 +37,10 @@ public class EntityLogController implements EntityLogResource { accessControlService.checkViewPermissionsToDossier(dossierId); accessControlService.validateFileResourceExistence(fileId); - return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLog(dossierId, fileId, excludedTypes == null ? new ArrayList<>() : excludedTypes, includeUnprocessed)); + return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLog(dossierId, + fileId, + excludedTypes == null ? new ArrayList<>() : excludedTypes, + includeUnprocessed)); } diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java index 0bd75f712..b0f71242d 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java @@ -276,11 +276,7 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - List responseList = manualRedactionService.addRecategorization(dossierId, - fileId, - dossier, - recategorizationRequests, - includeUnprocessed); + List responseList = manualRedactionService.addRecategorization(dossierId, fileId, dossier, recategorizationRequests, includeUnprocessed); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DownloadControllerV2.java b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DownloadControllerV2.java index 5a89c5332..40c315c98 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DownloadControllerV2.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DownloadControllerV2.java @@ -27,34 +27,37 @@ public class DownloadControllerV2 implements DownloadResource { private final DownloadController downloadController; private final DownloadStatusPersistenceService downloadStatusPersistenceService; + @Transactional public DownloadStatusList getDownloadStatusList() { var downloads = downloadStatusPersistenceService.getStatusesByUser(KeycloakSecurity.getUserId()); - return new DownloadStatusList(downloads.stream().map( - status -> - DownloadStatus.builder() - .id(status.getUuid()) // This is a workaround the real id is the storageId. - .userId(status.getUserId()) - .filename(status.getFilename()) - .mimeType(status.getMimeType()) - .errorCause(status.getErrorCause()) - .status(status.getStatus()) - .creationDate(status.getCreationDate()) - .lastDownload(status.getLastDownload()) - .fileSize(status.getFileSize()) - .dossierId(status.getDossier() != null ? status.getDossier().getId() : null) - .fileIds(status.getFiles() - .stream() - .map(FileEntity::getId) - .toList()) - .downloadFileTypes(status.getDownloadFileTypes() - .stream() - .toList()) - .reportTemplateIds(status.getReports().stream().map(ReportTemplateEntity::getTemplateId).toList()) - .build()).toList() - ); + return new DownloadStatusList(downloads.stream() + .map(status -> DownloadStatus.builder() + .id(status.getUuid()) // This is a workaround the real id is the storageId. + .userId(status.getUserId()) + .filename(status.getFilename()) + .mimeType(status.getMimeType()) + .errorCause(status.getErrorCause()) + .status(status.getStatus()) + .creationDate(status.getCreationDate()) + .lastDownload(status.getLastDownload()) + .fileSize(status.getFileSize()) + .dossierId(status.getDossier() != null ? status.getDossier().getId() : null) + .fileIds(status.getFiles() + .stream() + .map(FileEntity::getId) + .toList()) + .downloadFileTypes(status.getDownloadFileTypes() + .stream() + .toList()) + .reportTemplateIds(status.getReports() + .stream() + .map(ReportTemplateEntity::getTemplateId) + .toList()) + .build()) + .toList()); } @@ -81,7 +84,10 @@ public class DownloadControllerV2 implements DownloadResource { .downloadFileTypes(status.getDownloadFileTypes() .stream() .toList()) - .reportTemplateIds(status.getReports().stream().map(ReportTemplateEntity::getTemplateId).toList()) + .reportTemplateIds(status.getReports() + .stream() + .map(ReportTemplateEntity::getTemplateId) + .toList()) .build(); } diff --git a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/mapper/ComponentMapper.java b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/mapper/ComponentMapper.java index e3fe4085e..b307a3a7a 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/mapper/ComponentMapper.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/mapper/ComponentMapper.java @@ -34,11 +34,13 @@ public interface ComponentMapper { List toComponentLogEntries(List values); + Component toComponent(ComponentLogEntry entry); List toComponents(List entries); + ComponentLogEntry toComponentLogEntry(Component component); diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ComponentLogResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ComponentLogResource.java index d3d4916c8..9e7220d18 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ComponentLogResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ComponentLogResource.java @@ -49,9 +49,7 @@ public interface ComponentLogResource { @PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Adds overrides for components", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) - void addOverride(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId, - @RequestBody ComponentsOverrides componentsOverrides); + void addOverride(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody ComponentsOverrides componentsOverrides); @ResponseBody @@ -59,8 +57,7 @@ public interface ComponentLogResource { @GetMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Gets overrides for components", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found")}) - ComponentsOverrides getOverrides(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId); + ComponentsOverrides getOverrides(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId); @ResponseBody @@ -68,8 +65,6 @@ public interface ComponentLogResource { @PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + "/revert" + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Reverts overrides for components", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) - void revertOverrides(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId, - @RequestBody RevertOverrideRequest revertOverrideRequest); + void revertOverrides(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody RevertOverrideRequest revertOverrideRequest); } diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java index 81f88b481..d96784e2d 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java @@ -55,7 +55,9 @@ public interface EntityLogResource { @GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/pages", produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Gets the entity log for a fileId with all entities found on the given page numbers", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) - EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = "pageNumbers", defaultValue = "") List pageNumbers); + EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId, + @RequestParam(value = "pageNumbers", defaultValue = "") List pageNumbers); @GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + ANALYSIS_NUMBER_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java index 8424afe2b..849a43d3e 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java @@ -56,15 +56,15 @@ public interface SupportResource { @PostMapping(value = REANALYSIS_REST_PATH + DOSSIER_TEMPLATE_DOSSIER_TEMPLATE_ID_PATH_VARIABLE) @Operation(summary = "Reanalyze all files in dossier template", description = """ ## Reanalyze Files Endpoint - + Use this endpoint to reanalyze all files in a specified Dossier Template. The reanalysis process can be tailored using various filtering options provided in the request body. - + ### Parameters - + - **DossierTemplateId**: Specifies the Dossier Template whose files need to be reanalyzed. - + ### Request Body Configuration Options - + - **dossierIds**: List of dossier IDs to filter. If empty, all dossiers are selected for reanalysis. - **fileIds**: List of file IDs to filter. If empty, all files are selected for reanalysis. - **repeatStructureAnalysis**: Boolean. If true, layout parsing and named entity recognition will be repeated. @@ -120,16 +120,16 @@ public interface SupportResource { + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Exports all dossiers and files from a given Dossier Template.", description = """ ## Export Files Endpoint - + Use this endpoint to export a full Dossier Template, including all configurations, dossiers, and files. The endpoint returns a String storageId, which is used to query the DownloadController for the export zip archive's status and to download the archive. - + ### Parameters - + - **DossierTemplateId**: Specifies the Dossier Template to be exported. - + ### Request Body Configuration Options - + - **dossierIds**: List of dossier IDs to filter. If empty, all dossiers are selected. - **fileIds**: List of file IDs to filter. If empty, all files are selected. - **excludeLayoutFiles**: Boolean. If true, excludes DOCUMENT_STRUCTURE/_PAGES/_TEXT/_POSITIONS, SIMPLIFIED_TEXT, and NER_ENTITIES files. diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/BulkDownloadRequest.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/BulkDownloadRequest.java index ace05e4fe..2aef82f54 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/BulkDownloadRequest.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/BulkDownloadRequest.java @@ -22,4 +22,5 @@ public class BulkDownloadRequest { private Set downloadFileTypes = new HashSet<>(); private String redactionPreviewColor; private List fileIds = new ArrayList<>(); + } diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ComponentOverrideList.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ComponentOverrideList.java index 257e870eb..189b78121 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ComponentOverrideList.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ComponentOverrideList.java @@ -19,4 +19,5 @@ public class ComponentOverrideList { String fileId; List componentOverrides = new ArrayList<>(); + } diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DossierAttributeDefinitionList.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DossierAttributeDefinitionList.java index a8ec38b8d..6963ae05f 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DossierAttributeDefinitionList.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DossierAttributeDefinitionList.java @@ -14,5 +14,6 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class DossierAttributeDefinitionList { - private List dossierAttributeDefinitions= new ArrayList<>(); + private List dossierAttributeDefinitions = new ArrayList<>(); + } diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DossierStatusDefinitionList.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DossierStatusDefinitionList.java index 20d62ae92..7bf7b10c3 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DossierStatusDefinitionList.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DossierStatusDefinitionList.java @@ -15,4 +15,5 @@ import lombok.NoArgsConstructor; public class DossierStatusDefinitionList { private List dossierStatusDefinitions = new ArrayList<>(); + } diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierResource.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierResource.java index 2d244e182..8aaa6df29 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierResource.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierResource.java @@ -89,8 +89,8 @@ public interface DossierResource { @Operation(summary = "Update or set attributes for a specific dossier.", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Dossier attributes successfully updated."), @ApiResponse(responseCode = "404", description = "Not found")}) void setDossierAttributes(@Parameter(name = DOSSIER_TEMPLATE_ID_PARAM, description = "The identifier of a dossier template", required = true) @PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, - @Parameter(name = DOSSIER_ID_PARAM, description = "The identifier of a dossier", required = true) @PathVariable(DOSSIER_ID_PARAM) String dossierId, - @RequestBody DossierAttributes dossierAttributes); + @Parameter(name = DOSSIER_ID_PARAM, description = "The identifier of a dossier", required = true) @PathVariable(DOSSIER_ID_PARAM) String dossierId, + @RequestBody DossierAttributes dossierAttributes); @ResponseBody diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml index c8f397a26..8b74c324f 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml @@ -415,7 +415,7 @@ paths: post: operationId: uploadMapping summary: Upload a new component mapping to a DossierTemplate. - description: | + description: | Use this endpoint to upload a new component mapping to a specific DossierTemplate. #### File Requirements @@ -434,7 +434,7 @@ paths: - The component mapping file can be utilized in component rules to relate components to existing master data. #### Example - + | search_value | mapped_value | |--------------|--------------| | Alice | Manager | @@ -595,9 +595,9 @@ paths: - Component Definitions summary: Create new component definitions description: | - Create new component definitions for a given dossier template. The component will have a technical name which is automatically converted to snake case - that can't be updated after the creation. The rank is used to determine the order in which the components are displayed. The component's rank will - automatically be appended at the end based on the current number of components of this dossier template. + Create new component definitions for a given dossier template. The component will have a technical name which is automatically converted to snake case + that can't be updated after the creation. The rank is used to determine the order in which the components are displayed. The component's rank will + automatically be appended at the end based on the current number of components of this dossier template. parameters: - $ref: '#/components/parameters/dossierTemplateId' requestBody: @@ -890,7 +890,7 @@ paths: summary: Retrieve a list of dossiers based on a specific dossier template. description: | By default, this endpoint provides a list of all *active* dossiers that are based on a specific dossier template. - + It returns an object containing an array of dossier objects under the key `dossiers`. Each dossier object contains an identifier, a name, a description, an owner, and other fields with further details about the dossier. @@ -2184,7 +2184,7 @@ components: A toggle to determine the deletion mode for a dossier: - `true`: The dossier will be permanently deleted and can't be restored. - `false` (default): Soft-delete, allowing restoration within the application-configured retention period. - + Using this parameter, you can also permanently delete a previously soft-deleted dossier during its retention period. > **Note:** Deleting a dossier also deletes all associated files. @@ -2202,7 +2202,7 @@ components: - `true`: The file will be permanently deleted and can't be restored. - `false` (default): Soft-delete, allowing restoration within the retention period, provided its parent dossier hasn't been deleted. If the parent dossier has been deleted meanwhile, it needs to be restored first. - + Using this parameter, you can also permanently delete a previously soft-deleted file during its retention period. permanentlyDeleteFiles: name: deletePermanently @@ -3324,7 +3324,7 @@ components: - a0044ae9-ddca-4f97-b0a1-3cb2517dbf39 - c2e33246-e50a-4c43-831c-6789a5637db8 - 6123fa16-6943-4b74-8524-54b0046a0ce6 - approverIds: [] + approverIds: [ ] reportTemplateIds: - daadea5f-917b-482a-b7d2-e65afe8f80ca - 8130acf6-4910-4123-827c-caacd8111402 @@ -3495,7 +3495,7 @@ components: - technicalName - displayName ComponentDefinitionUpdateRequest: - description: | + description: | The ComponentDefinitionUpdateRequest object represents a request to update a component definition within a dossier template. Only the display name and description can be updated. example: @@ -4627,10 +4627,10 @@ components: authorizationCode: authorizationUrl: /auth/realms/{workspaceId}/protocol/openid-connect/auth tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token - scopes: {} + scopes: { } password: tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token - scopes: {} + scopes: { } clientCredentials: tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token - scopes: {} \ No newline at end of file + scopes: { } \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml index 3b09721fe..569a956e0 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml @@ -31,7 +31,7 @@ servers: - url: https://app.redactmanager.com description: RedactManager Cloud Service security: - - FF-OAUTH: [] + - FF-OAUTH: [ ] tags: - name: 1. Dossier Templates description: Operations related to dossier templates. @@ -258,7 +258,7 @@ paths: summary: Retrieve a list of dossiers based on a specific dossier template. description: | By default, this endpoint provides a list of all *active* dossiers that are based on a specific dossier template. - + It returns an object containing an array of dossier objects under the key `dossiers`. Each dossier object contains an identifier, a name, a description, an owner, and other fields with further details about the dossier. @@ -1309,7 +1309,7 @@ components: A toggle to determine the deletion mode for a dossier: - `true`: The dossier will be permanently deleted and can't be restored. - `false` (default): Soft-delete, allowing restoration within the application-configured retention period. - + Using this parameter, you can also permanently delete a previously soft-deleted dossier during its retention period. > **Note:** Deleting a dossier also deletes all associated files. @@ -1327,7 +1327,7 @@ components: - `true`: The file will be permanently deleted and can't be restored. - `false` (default): Soft-delete, allowing restoration within the retention period, provided its parent dossier hasn't been deleted. If the parent dossier has been deleted meanwhile, it needs to be restored first. - + Using this parameter, you can also permanently delete a previously soft-deleted file during its retention period. permanentlyDeleteFiles: name: deletePermanently @@ -3171,10 +3171,10 @@ components: authorizationCode: authorizationUrl: /auth/realms/{workspaceId}/protocol/openid-connect/auth tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token - scopes: {} + scopes: { } password: tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token - scopes: {} + scopes: { } clientCredentials: tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token - scopes: {} \ No newline at end of file + scopes: { } \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/acl/custom/dossier/ViewObjectDossierObjectPermissionService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/acl/custom/dossier/ViewObjectDossierObjectPermissionService.java index 8716e65ae..a4a83fdd9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/acl/custom/dossier/ViewObjectDossierObjectPermissionService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/acl/custom/dossier/ViewObjectDossierObjectPermissionService.java @@ -1,6 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier; -import java.util.ArrayList; import java.util.Collection; import java.util.Set; import java.util.stream.Collectors; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/MessagingConfiguration.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/MessagingConfiguration.java index 9437fa4a1..1c4b94541 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/MessagingConfiguration.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/MessagingConfiguration.java @@ -253,12 +253,12 @@ public class MessagingConfiguration { .build(); } + @Bean @ConditionalOnProperty(prefix = "persistence-service", name = "migrateOnly", havingValue = "false") public Queue ocrResponseQueue() { - return QueueBuilder.durable(OCR_RESPONSE_QUEUE) - .build(); + return QueueBuilder.durable(OCR_RESPONSE_QUEUE).build(); } @@ -266,8 +266,7 @@ public class MessagingConfiguration { @ConditionalOnProperty(prefix = "persistence-service", name = "migrateOnly", havingValue = "false") public Queue ocrDLQ() { - return QueueBuilder.durable(OCR_DLQ) - .build(); + return QueueBuilder.durable(OCR_DLQ).build(); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/WebSocketSecurityConfig.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/WebSocketSecurityConfig.java index d701de243..c22934abe 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/WebSocketSecurityConfig.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/WebSocketSecurityConfig.java @@ -73,6 +73,7 @@ public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBro } + private Optional extractTenantId(Message message) { StompHeaderAccessor sha = StompHeaderAccessor.wrap(message); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierImportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierImportService.java index f309674e3..58907fda3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierImportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierImportService.java @@ -11,6 +11,7 @@ import com.iqser.red.service.persistence.management.v1.processor.dataexchange.mo 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.service.DossierCreatorService; +import com.iqser.red.service.persistence.management.v1.processor.service.DossierService; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateExportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateExportService.java index 2421099d4..ed0a096c0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateExportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateExportService.java @@ -100,18 +100,17 @@ public class DossierTemplateExportService { RabbitTemplate rabbitTemplate; - public JSONPrimitive prepareExportDownload(ExportDownloadRequest request) { + public String prepareExportDownload(ExportDownloadRequest request) { var mimeType = "application/zip"; - dossierTemplatePersistenceService.validateDossierTemplateForDuplicateRanks(request.getDossierTemplateId()); String downloadFilename = request.getDossierTemplateId() + ".zip"; String storageId = StorageIdUtils.getStorageId(request.getUserId(), request.getDossierTemplateId()); downloadStatusPersistenceService.createStatus(request.getUserId(), storageId, downloadFilename, mimeType); addToExportDownloadQueue(ExportDownloadMessage.builder().dossierTemplateId(request.getDossierTemplateId()).storageId(storageId).userId(request.getUserId()).build(), 1); - return new JSONPrimitive<>(storageId); + return storageId; } @@ -123,6 +122,7 @@ public class DossierTemplateExportService { }); } + @Observed(name = "DossierTemplateExportService", contextualName = "export-dossier-template") public long createDownloadArchive(ExportDownloadMessage downloadJob) throws IOException { @@ -142,6 +142,7 @@ public class DossierTemplateExportService { } + @Observed(name = "DossierTemplateExportService", contextualName = "write-dossier-template-to-archive") public void addDossierTemplateToArchive(FileSystemBackedArchiver fileSystemBackedArchiver, String folder, DossierTemplateEntity dossierTemplate) throws IOException { 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 26900e99c..75408c54e 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 @@ -21,6 +21,11 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ComponentMappingImportModel; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ImportTemplateResult; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.TemplateImportInfo; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zipreaders.DossierTemplateArchiveReader; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zipreaders.ZipEntryIterator; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity; @@ -29,15 +34,12 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier. import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; 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.dataexchange.models.ComponentMappingImportModel; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ImportTemplateResult; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.TemplateImportInfo; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zipreaders.DossierTemplateArchiveReader; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zipreaders.ZipEntryIterator; import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService; import com.iqser.red.service.persistence.management.v1.processor.service.ComponentMappingService; +import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.ReportTemplateService; import com.iqser.red.service.persistence.management.v1.processor.service.RulesValidationService; import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; @@ -56,11 +58,14 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkMo import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinition; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionAddRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentMappingMetadata; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ReportTemplateUploadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.Colors; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierStatusInfo; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ImportDossierTemplateRequest; import com.iqser.red.service.redaction.v1.model.DroolsValidation; import com.iqser.red.storage.commons.service.StorageService; @@ -84,6 +89,7 @@ public class DossierTemplateImportService { LegalBasisMappingPersistenceService legalBasisMappingPersistenceService; RulesPersistenceService rulesPersistenceService; DossierTemplatePersistenceService dossierTemplatePersistenceService; + DossierTemplateManagementService dossierTemplateManagementService; DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; ColorsService colorsService; @@ -121,11 +127,13 @@ public class DossierTemplateImportService { return dossierTemplateArchiveReader.buildResult(); } + @Observed(name = "DossierTemplateImportService", contextualName = "import-template") public TemplateImportInfo importDossierTemplate(ImportTemplateResult request) { long start = System.currentTimeMillis(); - String dossierTemplateId; + String dossierTemplateId = null; + var dossierTemplateMeta = request.getDossierTemplate(); TemplateImportInfo templateImportInfo = TemplateImportInfo.builder().build(); @@ -137,220 +145,277 @@ public class DossierTemplateImportService { } if (existingDossierTemplate != null) { - dossierTemplateId = existingDossierTemplate.getId(); + dossierTemplateId = updateExistingDossierTemplate(request, existingDossierTemplate, dossierTemplateMeta, templateImportInfo); + templateImportInfo.setDossierTemplateId(dossierTemplateId); - // override the existing dossier template - updateDossierTemplateMeta(existingDossierTemplate, dossierTemplateMeta, request.getUserId()); - dossierTemplateRepository.save(existingDossierTemplate); + long elapsedTime = System.currentTimeMillis() - start; + log.info("Finished update of existing dossier template in {} ms for: {}", elapsedTime, dossierTemplateId); + return templateImportInfo; + } - existingDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(existingDossierTemplate) - .name())); + try { + importNewDossierTemplate(request, dossierTemplateMeta, templateImportInfo); + long elapsedTime = System.currentTimeMillis() - start; + log.info("Finished import dossier template in {} ms for: {}", elapsedTime, templateImportInfo.getDossierTemplateId()); - // set colors - this.setColors(dossierTemplateId, request.getColors()); - - // set watermarks - if (CollectionUtils.isNotEmpty(request.getWatermarks())) { - Set toSetWatermarks = request.getWatermarks() - .stream() - .map(WatermarkModel::getName) - .filter(Objects::nonNull) - .collect(Collectors.toSet()); - var currentWatermarkConfigs = watermarkService.getWatermarksForDossierTemplateId(dossierTemplateId); - Set configsToRemove = currentWatermarkConfigs.stream() - .filter(c -> !toSetWatermarks.contains(c.getName())) - .collect(Collectors.toSet()); - var watermarkNameToEntity = currentWatermarkConfigs.stream() - .collect(Collectors.toMap(WatermarkEntity::getName, Function.identity())); - - request.getWatermarks() - .forEach(watermark -> { - log.info("watermark to add: " + watermark.getName()); - Long initialId = watermark.getId(); - if (!watermarkNameToEntity.isEmpty() && watermarkNameToEntity.get(watermark.getName()) != null) { - - watermark.setId(watermarkNameToEntity.get(watermark.getName()).getId()); - } else { - watermark.setId(null); - } - watermark.setDossierTemplateId(dossierTemplateId); - var entity = watermarkService.createOrUpdateWatermark(watermark); - templateImportInfo.getLongMapping().put(initialId, entity.getId()); - }); - configsToRemove.forEach(watermark -> watermarkService.deleteWatermark(watermark.getId())); + } catch (Exception e) { + log.error("Error with message: {} occurred during import, undo import", e.getMessage(), e); + if (templateImportInfo != null && templateImportInfo.getDossierTemplateId() != null) { + dossierTemplateManagementService.deleteDossierTemplateCompletely(templateImportInfo.getDossierTemplateId()); } + throw e; + } - // dossier status - if (CollectionUtils.isNotEmpty(request.getDossierStatusInfos())) { - this.updateDossierStates(request, dossierTemplateId); - } else { // no states to add, delete current states - List currentStates = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId); - currentStates.forEach(state -> dossierStatusPersistenceService.deleteDossierStatus(state.getId(), null)); - } + return templateImportInfo; + } - // update dossier attributes - if (CollectionUtils.isNotEmpty(request.getDossierAttributesConfigs())) { - this.updateDossierAttributes(request, dossierTemplateId, templateImportInfo); - } else { // no dossier attributes to add, but delete existing ones - var currentConfigs = dossierAttributeConfigPersistenceService.getDossierAttributes(dossierTemplateId); - currentConfigs.forEach(da -> dossierAttributeConfigPersistenceService.deleteDossierAttribute(da.getId())); - } - //update file attributes - if (CollectionUtils.isNotEmpty(request.getFileAttributesConfigs())) { - this.updateFileAttributes(request, dossierTemplateId, templateImportInfo); - } else { // no file attributes to add, but delete existing - var currentConfigs = fileAttributeConfigPersistenceService.getFileAttributes(dossierTemplateId); - currentConfigs.forEach(fa -> fileAttributeConfigPersistenceService.deleteFileAttribute(fa.getId())); - } + private void importNewDossierTemplate(ImportTemplateResult request, DossierTemplate dossierTemplateMeta, TemplateImportInfo templateImportInfo) { - entityTypeImportService.updateTypes(dossierTemplateId, null, request.getEntityTypeImportModel()); + String dossierTemplateId; + // creates new dossier template + if (StringUtils.isEmpty(dossierTemplateMeta.getName())) { + throw new ConflictException("DossierTemplate name must be set"); + } + this.validateDossierTemplateName(dossierTemplateMeta); + DossierTemplateEntity dossierTemplateEntity = new DossierTemplateEntity(); - if (CollectionUtils.isNotEmpty(request.getComponentDefinitions())) { - this.updateComponents(request, dossierTemplateId); - } else { // no components to add, but remove existing ones - List currentComponents = componentDefinitionPersistenceService.findComponentsByDossierTemplateId(dossierTemplateId); - this.deleteComponents(currentComponents); - } + // order is important + BeanUtils.copyProperties(dossierTemplateMeta, dossierTemplateEntity); + dossierTemplateEntity.setId(UUID.randomUUID().toString()); + dossierTemplateEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); + dossierTemplateEntity.setCreatedBy(request.getUserId()); + //set rules - //set report templates - var existingReports = reportTemplatePersistenceService.findByDossierTemplateId(dossierTemplateId); + var loadedDossierTemplate = dossierTemplateRepository.save(dossierTemplateEntity); + loadedDossierTemplate.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(loadedDossierTemplate)); + dossierTemplateId = loadedDossierTemplate.getId(); + templateImportInfo.setDossierTemplateId(dossierTemplateId); + // set colors + this.updateColors(dossierTemplateId, request.getColors()); - List reportsUpdated = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(request.getReportTemplateUploadRequests())) { - request.getReportTemplateUploadRequests() - .forEach(reportRequest -> { - reportRequest.setDossierTemplateId(dossierTemplateId); - var report = reportTemplateService.uploadTemplate(reportRequest); - reportsUpdated.add(report.getTemplateId()); - }); - } - - // delete the reports that were not in the import - existingReports.forEach(r -> { - String storageId = r.getStorageId(); - if (!reportsUpdated.contains(r.getTemplateId())) { - storageService.deleteObject(TenantContext.getTenantId(), storageId); - reportTemplatePersistenceService.delete(r.getTemplateId()); - } - }); - - // set legal basis - if (CollectionUtils.isNotEmpty(request.getLegalBases())) { - legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases()); - } else { // delete existing - legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId); - } - - } else { - // creates new dossier template - if (StringUtils.isEmpty(dossierTemplateMeta.getName())) { - throw new ConflictException("DossierTemplate name must be set"); - } - this.validateDossierTemplateName(dossierTemplateMeta); - DossierTemplateEntity dossierTemplateEntity = new DossierTemplateEntity(); - - // order is important - BeanUtils.copyProperties(dossierTemplateMeta, dossierTemplateEntity); - dossierTemplateEntity.setId(UUID.randomUUID().toString()); - dossierTemplateEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); - dossierTemplateEntity.setCreatedBy(request.getUserId()); - //set rules - - var loadedDossierTemplate = dossierTemplateRepository.save(dossierTemplateEntity); - loadedDossierTemplate.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(loadedDossierTemplate)); - - dossierTemplateId = loadedDossierTemplate.getId(); - // set colors - this.setColors(dossierTemplateId, request.getColors()); - - // set watermarks - if (CollectionUtils.isNotEmpty(request.getWatermarks())) { - request.getWatermarks() - .forEach(watermark -> { - Long initialId = watermark.getId(); - watermark.setDossierTemplateId(dossierTemplateId); - watermark.setId(null); - var en = watermarkService.createOrUpdateWatermark(watermark); - templateImportInfo.getLongMapping().put(initialId, en.getId()); - }); - } - - // dossier status - if (CollectionUtils.isNotEmpty(request.getDossierStatusInfos())) { - request.getDossierStatusInfos() - .forEach(state -> { - state.setId(null); - this.updateDossierStatus(dossierTemplateId, state); - }); - } - - //set dossier attributes - if (CollectionUtils.isNotEmpty(request.getDossierAttributesConfigs())) { - request.getDossierAttributesConfigs() - .forEach(da -> { - String initialId = da.getId(); - da.setId(null); // in order to create a new dossier attribute - var e = dossierAttributeConfigPersistenceService.addOrUpdateDossierAttribute(dossierTemplateId, convert(da, DossierAttributeConfigEntity.class)); - templateImportInfo.getIdMapping().put(initialId, e.getId()); - }); - } - - //set file attributes - if (CollectionUtils.isNotEmpty(request.getFileAttributesConfigs())) { - request.getFileAttributesConfigs() - .forEach(fa -> { - String initialId = fa.getId(); - fa.setId(null); // in order to force creation of new file attribute - var e = fileAttributeConfigPersistenceService.addOrUpdateFileAttribute(dossierTemplateId, convert(fa, FileAttributeConfigEntity.class)); - templateImportInfo.getIdMapping().put(initialId, e.getId()); - }); - } - - //set types - entityTypeImportService.importEntityTypes(dossierTemplateId, null, request.getEntityTypeImportModel()); - - // set components - if (CollectionUtils.isNotEmpty(request.getComponentDefinitions())) { - for (ComponentDefinition componentDefinition : request.getComponentDefinitions()) { - ComponentDefinitionAddRequest componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder() - .displayName(componentDefinition.getDisplayName()) - .description(componentDefinition.getDescription()) - .technicalName(componentDefinition.getTechnicalName()) - .build(); - componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, componentDefinition.getRank(), dossierTemplateId); - } - } - - //set report templates - if (CollectionUtils.isNotEmpty(request.getReportTemplateUploadRequests())) { - request.getReportTemplateUploadRequests() - .forEach(reportRequest -> { - reportRequest.setDossierTemplateId(dossierTemplateId); - reportTemplateService.uploadTemplate(reportRequest); - }); - } - // set legal basis - if (CollectionUtils.isNotEmpty(request.getLegalBases())) { - legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases()); + // set watermarks + if (CollectionUtils.isNotEmpty(request.getWatermarks())) { + for (WatermarkModel watermark : request.getWatermarks()) { + Long initialId = watermark.getId(); + watermark.setDossierTemplateId(dossierTemplateId); + watermark.setId(null); + var en = watermarkService.createOrUpdateWatermark(watermark); + templateImportInfo.getLongMapping().put(initialId, en.getId()); } } + // dossier status + if (CollectionUtils.isNotEmpty(request.getDossierStatusInfos())) { + for (DossierStatusInfo state : request.getDossierStatusInfos()) { + state.setId(null); + this.updateDossierStatus(dossierTemplateId, state); + } + } + + //set dossier attributes + if (CollectionUtils.isNotEmpty(request.getDossierAttributesConfigs())) { + for (DossierAttributeConfig da : request.getDossierAttributesConfigs()) { + String initialId = da.getId(); + da.setId(null); // in order to create a new dossier attribute + var e = dossierAttributeConfigPersistenceService.addOrUpdateDossierAttribute(dossierTemplateId, convert(da, DossierAttributeConfigEntity.class)); + templateImportInfo.getIdMapping().put(initialId, e.getId()); + } + } + + //set file attributes + if (CollectionUtils.isNotEmpty(request.getFileAttributesConfigs())) { + for (FileAttributeConfig fa : request.getFileAttributesConfigs()) { + String initialId = fa.getId(); + fa.setId(null); // in order to force creation of new file attribute + var e = fileAttributeConfigPersistenceService.addOrUpdateFileAttribute(dossierTemplateId, convert(fa, FileAttributeConfigEntity.class)); + templateImportInfo.getIdMapping().put(initialId, e.getId()); + } + } + + //set types + entityTypeImportService.importEntityTypes(dossierTemplateId, null, request.getEntityTypeImportModel()); + + // set components + if (CollectionUtils.isNotEmpty(request.getComponentDefinitions())) { + for (ComponentDefinition componentDefinition : request.getComponentDefinitions()) { + ComponentDefinitionAddRequest componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder() + .displayName(componentDefinition.getDisplayName()) + .description(componentDefinition.getDescription()) + .technicalName(componentDefinition.getTechnicalName()) + .build(); + componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, componentDefinition.getRank(), dossierTemplateId); + } + } + + //set report templates + if (CollectionUtils.isNotEmpty(request.getReportTemplateUploadRequests())) { + for (ReportTemplateUploadRequest reportRequest : request.getReportTemplateUploadRequests()) { + reportRequest.setDossierTemplateId(dossierTemplateId); + reportTemplateService.uploadTemplate(reportRequest); + } + } + // set legal basis + if (CollectionUtils.isNotEmpty(request.getLegalBases())) { + legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases()); + } + setRulesWhenCompiled(request, dossierTemplateId); + setComponentMappings(dossierTemplateId, request.getComponentMappings()); + setFileAttributeGeneralConfig(request, dossierTemplateId); + + } + + + private void setFileAttributeGeneralConfig(ImportTemplateResult request, String dossierTemplateId) { // file attribute general configuration if (request.getFileAttributesGeneralConfiguration() != null) { fileAttributeConfigPersistenceService.setFileAttributesGeneralConfig(dossierTemplateId, convert(request.getFileAttributesGeneralConfiguration(), FileAttributesGeneralConfigurationEntity.class)); } + } + + private String updateExistingDossierTemplate(ImportTemplateResult request, + DossierTemplateEntity existingDossierTemplate, + DossierTemplate dossierTemplateMeta, + TemplateImportInfo templateImportInfo) { + + String dossierTemplateId; + dossierTemplateId = existingDossierTemplate.getId(); + updateDossierTemplateMeta(existingDossierTemplate, dossierTemplateMeta, request.getUserId()); + dossierTemplateRepository.save(existingDossierTemplate); + existingDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(existingDossierTemplate) + .name())); + updateColors(dossierTemplateId, request.getColors()); + updateWatermarks(request, templateImportInfo, dossierTemplateId); + updateDossiers(request, dossierTemplateId); + updateDossierAttributes(request, templateImportInfo, dossierTemplateId); + updateFileAttributes(request, templateImportInfo, dossierTemplateId); + entityTypeImportService.updateTypes(dossierTemplateId, null, request.getEntityTypeImportModel()); + updateComponents(request, dossierTemplateId); + var existingReports = reportTemplatePersistenceService.findByDossierTemplateId(dossierTemplateId); + updateReports(request, dossierTemplateId, existingReports); + updateLegalBasis(request, dossierTemplateId); setRulesWhenCompiled(request, dossierTemplateId); setComponentMappings(dossierTemplateId, request.getComponentMappings()); + setFileAttributeGeneralConfig(request, dossierTemplateId); + return dossierTemplateId; + } - templateImportInfo.setDossierTemplateId(dossierTemplateId); - long elapsedTime = System.currentTimeMillis() - start; - log.info("Finished import dossier template : {} for: {}", elapsedTime, dossierTemplateId); - return templateImportInfo; + private void updateLegalBasis(ImportTemplateResult request, String dossierTemplateId) { + // set legal basis + if (CollectionUtils.isNotEmpty(request.getLegalBases())) { + legalBasisMappingPersistenceService.setLegalBasisMapping(dossierTemplateId, request.getLegalBases()); + } else { // delete existing + legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId); + } + } + + + private void updateReports(ImportTemplateResult request, String dossierTemplateId, List existingReports) { + + List reportsUpdated = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(request.getReportTemplateUploadRequests())) { + for (ReportTemplateUploadRequest reportRequest : request.getReportTemplateUploadRequests()) { + reportRequest.setDossierTemplateId(dossierTemplateId); + var report = reportTemplateService.uploadTemplate(reportRequest); + reportsUpdated.add(report.getTemplateId()); + } + } + + // delete the reports that were not in the import + existingReports.forEach(r -> { + String storageId = r.getStorageId(); + if (!reportsUpdated.contains(r.getTemplateId())) { + storageService.deleteObject(TenantContext.getTenantId(), storageId); + reportTemplatePersistenceService.delete(r.getTemplateId()); + } + }); + } + + + private void updateComponents(ImportTemplateResult request, String dossierTemplateId) { + + if (CollectionUtils.isNotEmpty(request.getComponentDefinitions())) { + request.getComponentDefinitions() + .forEach(componentDefinition -> { + componentDefinition.setDossierTemplateId(dossierTemplateId); + componentDefinitionPersistenceService.insert(MagicConverter.convert(componentDefinition, ComponentDefinitionEntity.class)); + }); + } else { // no components to add, but remove existing ones + List currentComponents = componentDefinitionPersistenceService.findComponentsByDossierTemplateId(dossierTemplateId); + currentComponents.forEach(componentDefinition -> { + componentDefinitionPersistenceService.delete(componentDefinition.getId()); + }); + } + } + + + private void updateFileAttributes(ImportTemplateResult request, TemplateImportInfo templateImportInfo, String dossierTemplateId) { + //update file attributes + if (CollectionUtils.isNotEmpty(request.getFileAttributesConfigs())) { + this.updateFileAttributes(request, dossierTemplateId, templateImportInfo); + } else { // no file attributes to add, but delete existing + var currentConfigs = fileAttributeConfigPersistenceService.getFileAttributes(dossierTemplateId); + currentConfigs.forEach(fa -> fileAttributeConfigPersistenceService.deleteFileAttribute(fa.getId())); + } + } + + + private void updateWatermarks(ImportTemplateResult request, TemplateImportInfo templateImportInfo, String dossierTemplateId) { + // set watermarks + if (CollectionUtils.isNotEmpty(request.getWatermarks())) { + Set toSetWatermarks = request.getWatermarks() + .stream() + .map(WatermarkModel::getName) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + var currentWatermarkConfigs = watermarkService.getWatermarksForDossierTemplateId(dossierTemplateId); + Set configsToRemove = currentWatermarkConfigs.stream() + .filter(c -> !toSetWatermarks.contains(c.getName())) + .collect(Collectors.toSet()); + var watermarkNameToEntity = currentWatermarkConfigs.stream() + .collect(Collectors.toMap(WatermarkEntity::getName, Function.identity())); + + for (WatermarkModel watermarkModel : request.getWatermarks()) { + log.info("watermark to add: " + watermarkModel.getName()); + Long initialId = watermarkModel.getId(); + if (!watermarkNameToEntity.isEmpty() && watermarkNameToEntity.get(watermarkModel.getName()) != null) { + + watermarkModel.setId(watermarkNameToEntity.get(watermarkModel.getName()).getId()); + } else { + watermarkModel.setId(null); + } + watermarkModel.setDossierTemplateId(dossierTemplateId); + var entity = watermarkService.createOrUpdateWatermark(watermarkModel); + templateImportInfo.getLongMapping().put(initialId, entity.getId()); + } + configsToRemove.forEach(watermark -> watermarkService.deleteWatermark(watermark.getId())); + } + } + + + private void updateDossiers(ImportTemplateResult request, String dossierTemplateId) { + // dossier status + if (CollectionUtils.isNotEmpty(request.getDossierStatusInfos())) { + this.updateDossierStates(request, dossierTemplateId); + } else { // no states to add, delete current states + List currentStates = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId); + currentStates.forEach(state -> dossierStatusPersistenceService.deleteDossierStatus(state.getId(), null)); + } + } + + + private void updateDossierAttributes(ImportTemplateResult request, TemplateImportInfo templateImportInfo, String dossierTemplateId) { + + if (CollectionUtils.isNotEmpty(request.getDossierAttributesConfigs())) { + this.updateDossierAttributes(request, dossierTemplateId, templateImportInfo); + } else { // no dossier attributes to add, but delete existing ones + var currentConfigs = dossierAttributeConfigPersistenceService.getDossierAttributes(dossierTemplateId); + currentConfigs.forEach(da -> dossierAttributeConfigPersistenceService.deleteDossierAttribute(da.getId())); + } } @@ -434,7 +499,7 @@ public class DossierTemplateImportService { } - private void setColors(String dossierTemplateId, Colors requestedColors) { + private void updateColors(String dossierTemplateId, Colors requestedColors) { // set colors if (requestedColors != null) { ColorsEntity colorsEntity = convert(requestedColors, ColorsEntity.class); @@ -529,24 +594,6 @@ public class DossierTemplateImportService { } - private void updateComponents(ImportTemplateResult request, String dossierTemplateId) { - - request.getComponentDefinitions() - .forEach(componentDefinition -> { - componentDefinition.setDossierTemplateId(dossierTemplateId); - componentDefinitionPersistenceService.insert(MagicConverter.convert(componentDefinition, ComponentDefinitionEntity.class)); - }); - } - - - private void deleteComponents(List componentDefinitionEntities) { - - componentDefinitionEntities.forEach(componentDefinition -> { - componentDefinitionPersistenceService.delete(componentDefinition.getId()); - }); - } - - private void validateDossierTemplateName(DossierTemplate dossierTemplateMeta) { int nameSuffix = 0; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/EntityTypeExportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/EntityTypeExportService.java index e949768dd..dd5a1fa16 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/EntityTypeExportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/EntityTypeExportService.java @@ -41,6 +41,7 @@ public class EntityTypeExportService { ObjectMapper mapper; EntryPersistenceService entryPersistenceService; + @Observed(name = "EntityTypeExportService", contextualName = "export-entity-type") public void addEntityTypeToArchive(FileSystemBackedArchiver fileSystemBackedArchiver, TypeEntity typeEntity, String folder) throws JsonProcessingException { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/FileExchangeImportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/FileExchangeImportService.java index bd3ff7bd6..4ac11061f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/FileExchangeImportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/FileExchangeImportService.java @@ -10,6 +10,7 @@ import com.iqser.red.service.persistence.management.v1.processor.dataexchange.mo import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.TemplateImportInfo; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.ImportResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; @@ -32,6 +33,7 @@ public class FileExchangeImportService { FileExchangeArchivalService fileExchangeArchivalService; ReportTemplatePersistenceService reportTemplateService; ObservationRegistry registry; + DossierTemplateManagementService dossierTemplateManagementService; @Observed(name = "FileExchangeImportService", contextualName = "import-files") @@ -68,11 +70,18 @@ public class FileExchangeImportService { .stream() .map(ReportTemplateEntity::getTemplateId) .toList(); - - for (Dossier dossierToImport : fileExchangeImportModel.getDossiers()) { - dossierImportService.importDossier(fileExchangeImportModel, userId, dossierToImport, templateImportInfo, allReportTemplateIds); + try { + for (Dossier dossierToImport : fileExchangeImportModel.getDossiers()) { + dossierImportService.importDossier(fileExchangeImportModel, userId, dossierToImport, templateImportInfo, allReportTemplateIds); + } + return templateImportInfo.getDossierTemplateId(); + } catch (Exception e) { + log.error("Error with message {} ocurred, deleting imported dossier template again.", e.getMessage()); + if (templateImportInfo.getDossierTemplateId() != null) { + dossierTemplateManagementService.deleteDossierTemplateCompletely(templateImportInfo.getDossierTemplateId()); + } + throw e; } - return templateImportInfo.getDossierTemplateId(); } @@ -90,5 +99,4 @@ public class FileExchangeImportService { } } - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/ManualChangesExportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/ManualChangesExportService.java index eb6b60725..9e30bbd16 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/ManualChangesExportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/ManualChangesExportService.java @@ -39,29 +39,29 @@ public class ManualChangesExportService { ManualChangesExportModel exportModel = new ManualChangesExportModel(); exportModel.setManualAddExportModels(addRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) - .stream() - .map(mapper::toModel) - .toList()); + .stream() + .map(mapper::toModel) + .toList()); exportModel.setManualRemoveExportModels(removeRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) - .stream() - .map(mapper::toModel) - .toList()); + .stream() + .map(mapper::toModel) + .toList()); exportModel.setManualForceExportModels(forceRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) - .stream() - .map(mapper::toModel) - .toList()); + .stream() + .map(mapper::toModel) + .toList()); exportModel.setManualLegalBasisChangeExportModels(legalBasisChangePersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) - .stream() - .map(mapper::toModel) - .toList()); + .stream() + .map(mapper::toModel) + .toList()); exportModel.setManualRecategorizationExportModels(recategorizationPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) - .stream() - .map(mapper::toModel) - .toList()); + .stream() + .map(mapper::toModel) + .toList()); exportModel.setManualResizeExportModels(resizeRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) - .stream() - .map(mapper::toModel) - .toList()); + .stream() + .map(mapper::toModel) + .toList()); return exportModel; } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/zipreaders/ZipEntryIterator.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/zipreaders/ZipEntryIterator.java index 2669501dd..da67546fe 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/zipreaders/ZipEntryIterator.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/zipreaders/ZipEntryIterator.java @@ -70,7 +70,7 @@ public class ZipEntryIterator implements Iterator, AutoCloseable { double compressionRatio = (double) totalSizeEntry / nextEntry.getCompressedSize(); if (compressionRatio > compressionThresholdRatio) { - throw new BadRequestException("ZIP-Bomb detected (compressionRatio). " + compressionRatio + "/" + compressionThresholdRatio ); + throw new BadRequestException("ZIP-Bomb detected (compressionRatio). " + compressionRatio + "/" + compressionThresholdRatio); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/ComponentMappingEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/ComponentMappingEntity.java index 67f27f504..e9668dc8c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/ComponentMappingEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/ComponentMappingEntity.java @@ -4,7 +4,6 @@ import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.List; -import org.hibernate.annotations.Fetch; import org.springframework.data.annotation.LastModifiedDate; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/AnnotationEntityId.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/AnnotationEntityId.java index bb127624a..db3e52811 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/AnnotationEntityId.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/AnnotationEntityId.java @@ -4,7 +4,6 @@ import java.io.Serializable; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/CommentEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/CommentEntity.java index 739f5bcf8..67a5a3cb8 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/CommentEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/CommentEntity.java @@ -2,6 +2,8 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.annotat import java.time.OffsetDateTime; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; @@ -9,9 +11,6 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/RectangleEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/RectangleEntity.java index 1ff69ffe6..c6b247f11 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/RectangleEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/RectangleEntity.java @@ -1,7 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.annotations; import jakarta.persistence.Embeddable; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ViewedPageEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ViewedPageEntity.java index f8286d4d1..eb6ab8793 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ViewedPageEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ViewedPageEntity.java @@ -3,6 +3,8 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.annotat import java.io.Serializable; import java.time.OffsetDateTime; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; + import jakarta.persistence.Column; import jakarta.persistence.Embeddable; import jakarta.persistence.EmbeddedId; @@ -11,9 +13,6 @@ import jakarta.persistence.FetchType; import jakarta.persistence.ManyToOne; import jakarta.persistence.MapsId; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/audit/AuditEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/audit/AuditEntity.java index 0b2763e7d..7c0fbcbb9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/audit/AuditEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/audit/AuditEntity.java @@ -4,6 +4,8 @@ import java.time.OffsetDateTime; import java.util.HashMap; import java.util.Map; +import com.iqser.red.service.persistence.management.v1.processor.utils.JSONMapConverter; + import jakarta.persistence.Basic; import jakarta.persistence.Column; import jakarta.persistence.Convert; @@ -13,9 +15,6 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.management.v1.processor.utils.JSONMapConverter; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ApplicationConfigurationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ApplicationConfigurationEntity.java index 05fcc900a..afbe19bc5 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ApplicationConfigurationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ApplicationConfigurationEntity.java @@ -4,7 +4,6 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ColorsEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ColorsEntity.java index c5ad43f13..24d2236f4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ColorsEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/ColorsEntity.java @@ -8,7 +8,6 @@ import jakarta.persistence.Id; import jakarta.persistence.PrePersist; import jakarta.persistence.PreUpdate; import jakarta.persistence.Table; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DictionaryEntryEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DictionaryEntryEntity.java index 69521864f..74b663c7d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DictionaryEntryEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DictionaryEntryEntity.java @@ -6,7 +6,6 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DictionaryFalseRecommendationEntryEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DictionaryFalseRecommendationEntryEntity.java index a712ac189..7d99af8a9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DictionaryFalseRecommendationEntryEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DictionaryFalseRecommendationEntryEntity.java @@ -6,7 +6,6 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureEntity.java index b2bdaf86a..fcd104181 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureEntity.java @@ -1,13 +1,12 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; +import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Lob; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureKmsEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureKmsEntity.java index 9911d6ba4..e975effb2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureKmsEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureKmsEntity.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; +import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings; + import jakarta.persistence.Basic; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -7,9 +9,6 @@ import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.Lob; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureTypeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureTypeEntity.java index acd7e1a2a..ea9c05c41 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureTypeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureTypeEntity.java @@ -1,15 +1,14 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignatureType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; import jakarta.persistence.Id; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignatureType; -import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/FileAttributesGeneralConfigurationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/FileAttributesGeneralConfigurationEntity.java index d03bf6c98..3cdafabad 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/FileAttributesGeneralConfigurationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/FileAttributesGeneralConfigurationEntity.java @@ -1,15 +1,14 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.MapsId; import jakarta.persistence.OneToOne; import jakarta.persistence.Table; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/LegalBasisEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/LegalBasisEntity.java index 59309f109..2d6615ffc 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/LegalBasisEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/LegalBasisEntity.java @@ -2,7 +2,6 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu import jakarta.persistence.Column; import jakarta.persistence.Embeddable; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/LegalBasisMappingEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/LegalBasisMappingEntity.java index 8c09d538b..843e04806 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/LegalBasisMappingEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/LegalBasisMappingEntity.java @@ -3,11 +3,15 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu import java.util.ArrayList; import java.util.List; -import jakarta.persistence.*; - import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; +import jakarta.persistence.Column; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java index bdbe6b86a..447664f00 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java @@ -2,6 +2,9 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu import java.time.OffsetDateTime; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; @@ -9,10 +12,6 @@ import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/WatermarkEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/WatermarkEntity.java index 32072f0b4..1366d5c5c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/WatermarkEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/WatermarkEntity.java @@ -2,6 +2,11 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu import java.time.OffsetDateTime; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.HorizontalTextAlignment; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.VerticalTextAlignment; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.WatermarkOrientation; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; @@ -13,12 +18,6 @@ import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.HorizontalTextAlignment; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.VerticalTextAlignment; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.WatermarkOrientation; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/ComponentDefinitionEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/ComponentDefinitionEntity.java index 31ad16c90..89d7c6ffb 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/ComponentDefinitionEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/ComponentDefinitionEntity.java @@ -4,8 +4,6 @@ import java.time.OffsetDateTime; import jakarta.persistence.Column; import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; import jakarta.persistence.UniqueConstraint; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierAttributeConfigEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierAttributeConfigEntity.java index d32875d31..2c368edf3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierAttributeConfigEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierAttributeConfigEntity.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.dossier; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierAttributeType; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; @@ -7,9 +9,6 @@ import jakarta.persistence.Enumerated; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierAttributeType; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierAttributeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierAttributeEntity.java index f2e1ea0fd..66d5f0d33 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierAttributeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierAttributeEntity.java @@ -7,7 +7,6 @@ import jakarta.persistence.Embeddable; import jakarta.persistence.EmbeddedId; import jakarta.persistence.Entity; import jakarta.persistence.Table; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java index feeb1226b..b0886bc76 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java @@ -6,6 +6,17 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity; +import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownloadFileTypeConverter; +import com.iqser.red.service.persistence.management.v1.processor.utils.JSONStringSetConverter; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierVisibility; + import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Convert; @@ -19,18 +30,6 @@ import jakarta.persistence.ManyToMany; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; - -import org.hibernate.annotations.Fetch; -import org.hibernate.annotations.FetchMode; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity; -import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownloadFileTypeConverter; -import com.iqser.red.service.persistence.management.v1.processor.utils.JSONStringSetConverter; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierVisibility; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java index e2f85fef9..e717e91e0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java @@ -3,6 +3,9 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.dossier import java.util.ArrayList; import java.util.List; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; @@ -11,10 +14,6 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; - -import org.hibernate.annotations.Fetch; -import org.hibernate.annotations.FetchMode; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeConfigEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeConfigEntity.java index 4a182c0b8..6ca5a5a6d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeConfigEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeConfigEntity.java @@ -1,5 +1,8 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.dossier; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeType; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; @@ -7,10 +10,6 @@ import jakarta.persistence.Enumerated; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeType; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeEntity.java index add81d9e4..abfc0e988 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeEntity.java @@ -7,7 +7,6 @@ import jakarta.persistence.Embeddable; import jakarta.persistence.EmbeddedId; import jakarta.persistence.Entity; import jakarta.persistence.Table; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/ReportTemplateEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/ReportTemplateEntity.java index 2d3e69bfa..faf7dc8ad 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/ReportTemplateEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/ReportTemplateEntity.java @@ -4,6 +4,8 @@ import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.List; +import com.fasterxml.jackson.annotation.JsonIgnore; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; @@ -11,9 +13,6 @@ import jakarta.persistence.Id; import jakarta.persistence.ManyToMany; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; - -import com.fasterxml.jackson.annotation.JsonIgnore; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadRedactionFileStatusEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadRedactionFileStatusEntity.java index 6d68d43b8..359f131f8 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadRedactionFileStatusEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadRedactionFileStatusEntity.java @@ -1,17 +1,21 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.download; +import java.util.ArrayList; +import java.util.List; + import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail; import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownloadRedactionFileDetailsConverter; -import jakarta.persistence.*; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.ArrayList; -import java.util.List; - @Data @Entity @Builder diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/index/IndexInformationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/index/IndexInformationEntity.java index e1e33db3e..5d9bfa38d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/index/IndexInformationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/index/IndexInformationEntity.java @@ -2,13 +2,12 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.index; import java.time.OffsetDateTime; +import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/migration/MigrationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/migration/MigrationEntity.java index 08a214d4c..13696e266 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/migration/MigrationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/migration/MigrationEntity.java @@ -6,7 +6,6 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/migration/SaasMigrationStatusEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/migration/SaasMigrationStatusEntity.java index b4ed82546..8082bcd84 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/migration/SaasMigrationStatusEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/migration/SaasMigrationStatusEntity.java @@ -2,7 +2,12 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.migrati import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.SaasMigrationStatus; -import jakarta.persistence.*; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.Id; +import jakarta.persistence.Table; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationEntity.java index 3602548d7..2d050eb9f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationEntity.java @@ -4,6 +4,8 @@ import java.time.OffsetDateTime; import java.util.HashMap; import java.util.Map; +import com.iqser.red.service.persistence.management.v1.processor.utils.JSONMapConverter; + import jakarta.persistence.Basic; import jakarta.persistence.Column; import jakarta.persistence.Convert; @@ -12,11 +14,7 @@ import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; -import jakarta.persistence.SequenceGenerator; import jakarta.persistence.Table; - -import com.iqser.red.service.persistence.management.v1.processor.utils.JSONMapConverter; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationPreferencesEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationPreferencesEntity.java index c5ba59d42..8101fb327 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationPreferencesEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/notification/NotificationPreferencesEntity.java @@ -3,18 +3,17 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.notific import java.util.ArrayList; import java.util.List; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.EmailNotificationType; + import jakarta.persistence.Column; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.Id; import jakarta.persistence.Table; - -import org.hibernate.annotations.Fetch; -import org.hibernate.annotations.FetchMode; - -import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.EmailNotificationType; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/permissions/CustomPermissionEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/permissions/CustomPermissionEntity.java index b41e3dab1..ddb4582a9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/permissions/CustomPermissionEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/permissions/CustomPermissionEntity.java @@ -7,7 +7,6 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.IdClass; import jakarta.persistence.Table; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/jobs/CreateJobsConfiguration.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/jobs/CreateJobsConfiguration.java index 660fbfa8f..0f41ef832 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/jobs/CreateJobsConfiguration.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/jobs/CreateJobsConfiguration.java @@ -2,8 +2,6 @@ package com.iqser.red.service.persistence.management.v1.processor.jobs; import java.text.ParseException; -import com.iqser.red.service.persistence.management.v1.processor.service.job.*; - import org.quartz.CronExpression; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; @@ -13,6 +11,15 @@ import org.quartz.TriggerBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import com.iqser.red.service.persistence.management.v1.processor.service.job.AnalysisFlagCalculationSchedulerJob; +import com.iqser.red.service.persistence.management.v1.processor.service.job.AutomaticAnalysisJob; +import com.iqser.red.service.persistence.management.v1.processor.service.job.DeletedFilesCleanupJob; +import com.iqser.red.service.persistence.management.v1.processor.service.job.DownloadCleanupJob; +import com.iqser.red.service.persistence.management.v1.processor.service.job.DownloadReadyJob; +import com.iqser.red.service.persistence.management.v1.processor.service.job.KeyCloakUserSyncJob; +import com.iqser.red.service.persistence.management.v1.processor.service.job.SendNotificationEmailJob; +import com.iqser.red.service.persistence.management.v1.processor.service.job.SyncUserPermissionsJob; + @Configuration public class CreateJobsConfiguration { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/lifecycle/LifecycleProperties.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/lifecycle/LifecycleProperties.java index f11104bbd..4e897f439 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/lifecycle/LifecycleProperties.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/lifecycle/LifecycleProperties.java @@ -13,4 +13,5 @@ import lombok.NoArgsConstructor; public class LifecycleProperties { private String basePackage; + } \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/mapper/ManualChangesExportMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/mapper/ManualChangesExportMapper.java index 5e5f4b6b6..9a6beea47 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/mapper/ManualChangesExportMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/mapper/ManualChangesExportMapper.java @@ -8,6 +8,12 @@ import org.mapstruct.MappingTarget; import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualAddExportModel; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualForceExportModel; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualLegalBasisChangeExportModel; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualRecategorizationExportModel; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualRemoveExportModel; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualResizeExportModel; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity; @@ -16,12 +22,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.annotati import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualAddExportModel; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualForceExportModel; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualLegalBasisChangeExportModel; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualRecategorizationExportModel; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualRemoveExportModel; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualResizeExportModel; @Mapper public interface ManualChangesExportMapper { @@ -74,7 +74,8 @@ public interface ManualChangesExportMapper { @AfterMapping default void setFileStatusAndId(ManualLegalBasisChangeExportModel model, @MappingTarget ManualLegalBasisChangeEntity.ManualLegalBasisChangeEntityBuilder entity, - @Context FileEntity file, @Context String userId) { + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); entity.id(annotationEntityId); @@ -86,7 +87,8 @@ public interface ManualChangesExportMapper { @AfterMapping default void setFileStatusAndId(ManualRecategorizationExportModel model, @MappingTarget ManualRecategorizationEntity.ManualRecategorizationEntityBuilder entity, - @Context FileEntity file, @Context String userId) { + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); entity.id(annotationEntityId); @@ -96,7 +98,10 @@ public interface ManualChangesExportMapper { @AfterMapping - default void setFileStatusAndId(ManualAddExportModel model, @MappingTarget ManualRedactionEntryEntity.ManualRedactionEntryEntityBuilder entity, @Context FileEntity file, @Context String userId) { + default void setFileStatusAndId(ManualAddExportModel model, + @MappingTarget ManualRedactionEntryEntity.ManualRedactionEntryEntityBuilder entity, + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); entity.id(annotationEntityId); @@ -106,7 +111,10 @@ public interface ManualChangesExportMapper { @AfterMapping - default void setFileStatusAndId(ManualResizeExportModel model, @MappingTarget ManualResizeRedactionEntity.ManualResizeRedactionEntityBuilder entity, @Context FileEntity file, @Context String userId) { + default void setFileStatusAndId(ManualResizeExportModel model, + @MappingTarget ManualResizeRedactionEntity.ManualResizeRedactionEntityBuilder entity, + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); entity.id(annotationEntityId); @@ -116,7 +124,10 @@ public interface ManualChangesExportMapper { @AfterMapping - default void setFileStatusAndId(ManualForceExportModel model, @MappingTarget ManualForceRedactionEntity.ManualForceRedactionEntityBuilder entity, @Context FileEntity file, @Context String userId) { + default void setFileStatusAndId(ManualForceExportModel model, + @MappingTarget ManualForceRedactionEntity.ManualForceRedactionEntityBuilder entity, + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); entity.id(annotationEntityId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/ComponentOverride.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/ComponentOverride.java index 5a06c3994..e03ce504d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/ComponentOverride.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/ComponentOverride.java @@ -18,4 +18,5 @@ public class ComponentOverride { String name; List componentOverrideValues = new ArrayList<>(); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/ManualChangesQueryOptions.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/ManualChangesQueryOptions.java index db8c91ec1..c492d4ece 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/ManualChangesQueryOptions.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/ManualChangesQueryOptions.java @@ -1,11 +1,9 @@ package com.iqser.red.service.persistence.management.v1.processor.model; import java.util.Collections; -import java.util.List; import java.util.Set; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry; import lombok.Builder; import lombok.Getter; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/AnalyseEvent.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/AnalyseEvent.java index 3ca4d5b0d..1bf96e707 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/AnalyseEvent.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/AnalyseEvent.java @@ -21,7 +21,9 @@ public class AnalyseEvent { private int numberOfPagesToOCR; private int numberOfOCRedPages; + public AnalyseEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, Integer analysisNumber, OffsetDateTime timestamp) { + this.dossierId = dossierId; this.fileId = fileId; this.analyseStatus = analyseStatus; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DossierEvent.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DossierEvent.java index f8eefbde7..4ce49246d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DossierEvent.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DossierEvent.java @@ -10,6 +10,8 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor public class DossierEvent { + private String dossierId; private DossierEventType dossierEventType; + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DossierEventType.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DossierEventType.java index 7399e1c5a..ed14e47b8 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DossierEventType.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DossierEventType.java @@ -1,5 +1,11 @@ package com.iqser.red.service.persistence.management.v1.processor.model.websocket; public enum DossierEventType { - CREATE, UPDATE, SOFT_DELETE, HARD_DELETE, UNDELETE, ARCHIVE, UNARCHIVE + CREATE, + UPDATE, + SOFT_DELETE, + HARD_DELETE, + UNDELETE, + ARCHIVE, + UNARCHIVE } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DownloadEvent.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DownloadEvent.java index 9b64a898b..cd0d6e4a5 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DownloadEvent.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/DownloadEvent.java @@ -16,4 +16,5 @@ public class DownloadEvent { private String downloadId; private String userId; private DownloadStatusValue status; + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/FileEvent.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/FileEvent.java index 244ca757b..891cd78d8 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/FileEvent.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/FileEvent.java @@ -15,5 +15,4 @@ public class FileEvent { private String fileId; private FileEventType fileEventType; - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/FileEventType.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/FileEventType.java index c075d892a..0787859ee 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/FileEventType.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/FileEventType.java @@ -1,5 +1,9 @@ package com.iqser.red.service.persistence.management.v1.processor.model.websocket; public enum FileEventType { - CREATE, UPDATE, SOFT_DELETE, HARD_DELETE, UNDELETE + CREATE, + UPDATE, + SOFT_DELETE, + HARD_DELETE, + UNDELETE } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/NotificationEvent.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/NotificationEvent.java index 8c147a0b0..4db187eb0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/NotificationEvent.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/websocket/NotificationEvent.java @@ -12,4 +12,5 @@ import lombok.NoArgsConstructor; public class NotificationEvent { private String userId; + } 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 c9c775b4b..936feb787 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 @@ -222,6 +222,13 @@ public class ComponentMappingService { } + public void deleteByDossierTemplateId(String dossierTemplateId) { + + componentMappingPersistenceService.getByDossierTemplateId(dossierTemplateId) + .forEach(cm -> componentMappingPersistenceService.deleteById(dossierTemplateId, cm.getId())); + } + + private static class CSVSorter implements Comparator { @Override 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 8df87041d..248806af3 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 @@ -33,6 +33,7 @@ import com.iqser.red.service.persistence.management.v1.processor.utils.TypeMappe import com.iqser.red.service.persistence.management.v1.processor.validation.DictionaryValidator; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.TypeRankSummary; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import jakarta.transaction.Transactional; @@ -237,10 +238,11 @@ public class DictionaryManagementService { @Transactional public void addEntries(String typeId, List entries, boolean removeCurrent, boolean ignoreInvalidEntries, DictionaryEntryType dictionaryEntryType) { + addEntries(typeId, entries, removeCurrent, ignoreInvalidEntries, dictionaryEntryType, false); } - - + + @Transactional public void addEntries(String typeId, List entries, boolean removeCurrent, boolean ignoreInvalidEntries, DictionaryEntryType dictionaryEntryType, boolean isImport) { @@ -403,6 +405,12 @@ public class DictionaryManagementService { } + public void hardDeleteByDossierTemplateId(String dossierTemplateId) { + + dictionaryPersistenceService.hardDeleteTypesByDossierTemplateId(dossierTemplateId); + } + + public long getCurrentVersion(String typeId) { Type typeResult = MagicConverter.convert(dictionaryPersistenceService.getType(typeId), Type.class); @@ -432,4 +440,10 @@ public class DictionaryManagementService { } + + public List getTypeRankSummaryList(String dossierTemplateId) { + + return dictionaryPersistenceService.getTypeRankSummaryList(dossierTemplateId); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java index 993f7e4d8..9b8a67d53 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java @@ -132,7 +132,8 @@ public class DictionaryService { if (entriesToDelete != null && !entriesToDelete.isEmpty()) { deleteGlobalEntries(type, dossierTemplateId, entriesToDelete, dictionaryEntryType); } - if (entriesToAdd != null && !entriesToAdd.isEmpty() && !entriesToAdd.stream().allMatch(String::isEmpty)) { + if (entriesToAdd != null && !entriesToAdd.isEmpty() && !entriesToAdd.stream() + .allMatch(String::isEmpty)) { addGlobalEntries(type, dossierTemplateId, entriesToAdd, false, dictionaryEntryType); } } @@ -150,7 +151,8 @@ public class DictionaryService { if (entriesToDelete != null && !entriesToDelete.isEmpty()) { deleteDossierEntries(type, dossierTemplateId, entriesToDelete, dossierId, dictionaryEntryType); } - if (entriesToAdd != null && !entriesToAdd.isEmpty() && !entriesToAdd.stream().allMatch(String::isEmpty)) { + if (entriesToAdd != null && !entriesToAdd.isEmpty() && !entriesToAdd.stream() + .allMatch(String::isEmpty)) { addDossierEntries(type, dossierTemplateId, entriesToAdd, false, dossierId, dictionaryEntryType); } } @@ -487,6 +489,7 @@ public class DictionaryService { return MagicConverter.convert(colorsService.getColors(dossierTemplateId), Colors.class); } + @PreAuthorize("hasAuthority('" + ADD_UPDATE_DICTIONARY_TYPE + "')") public void changeAddToDictionary(String type, String dossierTemplateId, String dossierId, boolean addToDictionary) { 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 f1e91341e..210029729 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 @@ -44,6 +44,14 @@ public class DossierDeletionService { } + @Transactional + public void deleteAllDossiersInTemplate(String dossierId) { + + fileDeletionService.hardDeleteFilesAndDataByDossierId(dossierId); + dossierService.hardDeleteDossier(dossierId); + } + + public void hardDeleteFileDataAndIndexUpdates(String dossierId, List fileIds) { fileDeletionService.hardDeleteFileDataAndIndexUpdates(dossierId, fileIds); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierIdFileIdRequestValidator.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierIdFileIdRequestValidator.java index 11dc6aa41..2a1dcc480 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierIdFileIdRequestValidator.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierIdFileIdRequestValidator.java @@ -23,6 +23,7 @@ public class DossierIdFileIdRequestValidator { DossierManagementService dossierManagementService; FileStatusManagementService fileStatusManagementService; + @Observed(name = "DossierIdFileIdRequestValidator", contextualName = "validate-request") public void validateRequestOrThrow404(String dossierTemplateId, Set dossierIds, Set fileIds) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java index 7ef356635..2cc1f830a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java @@ -64,8 +64,9 @@ public class DossierManagementService { List fileStatuses = fileStatusService.getDossierStatus(dossierId); var relevantFileIds = fileStatuses.stream() - .filter(fileStatus -> fileStatus.getDeleted() == null).map(FileModel::getId).toList(); - + .filter(fileStatus -> fileStatus.getDeleted() == null) + .map(FileModel::getId) + .toList(); dossierDeletionService.softDeleteDossier(dossierId, relevantFileIds, now); fileDeletionService.reindexDeletedFiles(dossierId, relevantFileIds); @@ -119,6 +120,7 @@ public class DossierManagementService { } + @Transactional public Set getAllDossierIdsForDossierTemplateId(String dossierTemplateId) { @@ -208,7 +210,10 @@ public class DossierManagementService { for (String dossierId : dossierIds) { - List fileIds = fileStatusService.getDossierStatus(dossierId).stream().map(FileModel::getId).collect(Collectors.toList()); + List fileIds = fileStatusService.getDossierStatus(dossierId) + .stream() + .map(FileModel::getId) + .collect(Collectors.toList()); dossierDeletionService.hardDeleteDossier(dossierId, fileIds); dossierDeletionService.hardDeleteFileDataAndIndexUpdates(dossierId, fileIds); } @@ -221,10 +226,13 @@ public class DossierManagementService { for (String dossierId : dossierIds) { var dossier = dossierService.getDossierById(dossierId); List fileStatuses = fileStatusService.getDossierStatus(dossierId); - var relevantFileIds = fileStatuses.stream().filter(fileStatus -> fileStatus.getDeleted() != null && (fileStatus.getDeleted().equals(dossier.getSoftDeletedTime()) || fileStatus.getDeleted() - .isAfter(dossier.getSoftDeletedTime()))).map(FileModel::getId).collect(Collectors.toList()); + var relevantFileIds = fileStatuses.stream() + .filter(fileStatus -> fileStatus.getDeleted() != null && (fileStatus.getDeleted().equals(dossier.getSoftDeletedTime()) || fileStatus.getDeleted() + .isAfter(dossier.getSoftDeletedTime()))) + .map(FileModel::getId) + .collect(Collectors.toList()); - dossierDeletionService.undeleteDossier(dossierId,relevantFileIds,dossier.getSoftDeletedTime()); + dossierDeletionService.undeleteDossier(dossierId, relevantFileIds, dossier.getSoftDeletedTime()); dossierDeletionService.reindexUndeletedFiles(dossier.getDossierTemplateId(), dossierId, relevantFileIds); } 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 23bd3769f..5fcf3c375 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 @@ -6,6 +6,7 @@ import java.util.Set; import org.springframework.stereotype.Service; +import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; @@ -153,6 +154,7 @@ public class DossierService { return dossierPersistenceService.findAllDossiersForDossierTemplateId(dossierTemplateId); } + public Set getAllDossierIdsForDossierTemplateId(String dossierTemplateId) { return dossierPersistenceService.findAllDossierIdsForDossierTemplateId(dossierTemplateId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 6d56e875e..11849c511 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -92,7 +92,6 @@ public class DossierTemplateCloneService { } DossierTemplateEntity clonedDossierTemplate = DossierTemplateEntity.copyDossierTemplateEntityWithoutChildEntities(dossierTemplate.get()); - dossierTemplatePersistenceService.validateDossierTemplateForDuplicateRanks(dossierTemplateId); OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); clonedDossierTemplate.setId(UUID.randomUUID().toString()); clonedDossierTemplate.setName(cloneDossierTemplateRequest.getName()); 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 074f204cc..2160e4740 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 @@ -3,18 +3,15 @@ package com.iqser.red.service.persistence.management.v1.processor.service; import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; +import java.util.stream.Collectors; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateExportService; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; -import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; 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; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ExportDownloadRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ImportDossierTemplateRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -24,10 +21,11 @@ import lombok.extern.slf4j.Slf4j; @RequiredArgsConstructor public class DossierTemplateManagementService { - private final DossierTemplateExportService dossierTemplateExportService; - private final DossierTemplateImportService dossierTemplateImportService; private final DossierTemplatePersistenceService dossierTemplatePersistenceService; private final DossierTemplateCloneService dossierTemplateCloneService; + private final DossierDeletionService dossierDeletionService; + private final DictionaryManagementService dictionaryManagementService; + private final ComponentMappingService componentMappingService; public DossierTemplate createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest dossierTemplate) { @@ -48,29 +46,40 @@ public class DossierTemplateManagementService { } - public void deleteDossierTemplate(String dossierTemplateId, String deletingUserId) { + public void deleteDossierTemplateCompletely(String dossierTemplateId) { - dossierTemplatePersistenceService.deleteDossierTemplate(dossierTemplateId, deletingUserId); + dictionaryManagementService.hardDeleteByDossierTemplateId(dossierTemplateId); + componentMappingService.deleteByDossierTemplateId(dossierTemplateId); + dossierDeletionService.deleteAllDossiersInTemplate(dossierTemplateId); + dossierTemplatePersistenceService.deleteDossierTemplate(dossierTemplateId); + } + + + public void softDeleteDossierTemplate(String dossierTemplateId, String userId) { + + dossierTemplatePersistenceService.softDeleteDossierTemplate(dossierTemplateId, userId); } public DossierTemplate cloneDossierTemplate(String dossierTemplateId, CloneDossierTemplateRequest cloneDossierTemplateRequest) { + validateDossierTemplateForDuplicateRanks(dossierTemplateId); return convert(dossierTemplateCloneService.cloneDossierTemplate(dossierTemplateId, cloneDossierTemplateRequest), DossierTemplate.class); } - public JSONPrimitive prepareExportDownload(ExportDownloadRequest request) { + public void validateDossierTemplateForDuplicateRanks(String dossierTemplateId) { - return dossierTemplateExportService.prepareExportDownload(request); - } - - - - public DossierTemplate importDossierTemplate(ImportDossierTemplateRequest request) { - - String dossierTemplateId = dossierTemplateImportService.importDossierTemplate(request); - return convert(dossierTemplatePersistenceService.getDossierTemplate(dossierTemplateId), DossierTemplate.class); + var duplicateRanks = dictionaryManagementService.getTypeRankSummaryList(dossierTemplateId) + .stream() + .filter(t -> t.getTypesCount() > 1) + .toList(); + if (!duplicateRanks.isEmpty()) { + String errorMessage = "Duplicate ranks found in dossier template " + dossierTemplateId + "\n" + duplicateRanks.stream() + .map(t -> String.format(" Rank %d has %d entries", t.getRank(), t.getTypesCount())) + .collect(Collectors.joining("\n")); + throw new BadRequestException(errorMessage); + } } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMongoWrapperService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMongoWrapperService.java index 9814197cd..f51302c03 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMongoWrapperService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMongoWrapperService.java @@ -37,7 +37,12 @@ public class EntityLogMongoWrapperService { if (includeUnprocessed) { DossierEntity dossier = dossierService.getDossierById(dossierId); ManualRedactions unprocessedManualRedactions = manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.unprocessedOnly(), ids); - entityLogEntries = entityLogMergeService.mergeEntityLogEntries(unprocessedManualRedactions, entityLogEntries.stream().map(EntityLogEntry::getId).toList(), dossier, fileId); + entityLogEntries = entityLogMergeService.mergeEntityLogEntries(unprocessedManualRedactions, + entityLogEntries.stream() + .map(EntityLogEntry::getId) + .toList(), + dossier, + fileId); } return entityLogEntries; } @@ -47,4 +52,5 @@ public class EntityLogMongoWrapperService { return String.format("EntityLogEntry does not exist for annotationId ID \"%s\"!", annotationId); } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java index 373e1b8c0..a527cc29f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java @@ -45,6 +45,7 @@ public class EntityLogService { return entityLog; } + @Observed(name = "EntityLogService", contextualName = "get-entity-log") public EntityLog getEntityLog(String dossierId, String fileId, boolean includeUnProcessed) { @@ -52,6 +53,8 @@ public class EntityLogService { postProcessEntityLog(dossierId, fileId, entityLog, includeUnProcessed); return entityLog; } + + @Observed(name = "EntityLogService", contextualName = "get-entity-log") public EntityLog getEntityLog(String dossierId, String fileId, List excludedTypes, boolean includeUnProcessed) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileDeletionService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileDeletionService.java index 57322f64c..c0821c6ef 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileDeletionService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileDeletionService.java @@ -16,28 +16,34 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RecategorizationPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.search.v1.model.IndexMessageType; + import jakarta.transaction.Transactional; +import lombok.AccessLevel; import lombok.RequiredArgsConstructor; +import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; @Slf4j @Service @RequiredArgsConstructor +@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public class FileDeletionService { - private final CommentPersistenceService commentPersistenceService; - private final ViewedPagesPersistenceService viewedPagesPersistenceService; - private final AddRedactionPersistenceService addRedactionPersistenceService; - private final ForceRedactionPersistenceService forceRedactionPersistenceService; - private final RemoveRedactionPersistenceService removeRedactionPersistenceService; - private final RecategorizationPersistenceService recategorizationPersistenceService; - private final LegalBasisChangePersistenceService legalBasisChangePersistenceService; - private final ResizeRedactionPersistenceService resizeRedactionPersistenceService; - private final FileStatusPersistenceService fileStatusPersistenceService; - private final FileManagementStorageService fileManagementStorageService; - private final IndexingService indexingService; + CommentPersistenceService commentPersistenceService; + ViewedPagesPersistenceService viewedPagesPersistenceService; + AddRedactionPersistenceService addRedactionPersistenceService; + ForceRedactionPersistenceService forceRedactionPersistenceService; + RemoveRedactionPersistenceService removeRedactionPersistenceService; + RecategorizationPersistenceService recategorizationPersistenceService; + LegalBasisChangePersistenceService legalBasisChangePersistenceService; + ResizeRedactionPersistenceService resizeRedactionPersistenceService; + FileStatusPersistenceService fileStatusPersistenceService; + FileManagementStorageService fileManagementStorageService; + IndexingService indexingService; + FileAttributesRepository fileAttributesRepository; @Transactional @@ -83,6 +89,8 @@ public class FileDeletionService { private void hardDeleteFileData(String dossierId, List fileIds) { fileIds.forEach(fileId -> { + fileManagementStorageService.deleteEntityLog(dossierId, fileId); + fileManagementStorageService.deleteComponentLog(dossierId, fileId); Arrays.stream(FileType.values()) .forEach(fileType -> { try { @@ -137,11 +145,22 @@ public class FileDeletionService { // delete all viewed pages for all files viewedPagesPersistenceService.deleteForFiles(fileIds); + fileAttributesRepository.deleteByFileIds(fileIds); + fileStatusPersistenceService.hardDeleteFiles(fileIds); } + @Transactional + public void hardDeleteFilesAndDataByDossierId(String dossierId) { + + List fileIds = fileStatusPersistenceService.getStatusIdsForDossier(dossierId); + hardDeleteFileData(dossierId, fileIds); + hardDeleteFiles(fileIds); + } + + public void reindexDeletedFiles(String dossierId, Collection relevantFileIds) { relevantFileIds.forEach(fileId -> { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java index 3851b5aa2..abde52f44 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java @@ -20,6 +20,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.imported.ImportedRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.section.SectionGrid; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.ComponentLogMongoService; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.EntityLogMongoService; import com.iqser.red.storage.commons.exception.StorageException; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; @@ -40,6 +41,8 @@ public class FileManagementStorageService { private final EntityLogMongoService entityLogMongoService; + private final ComponentLogMongoService componentLogMongoService; + @SneakyThrows public byte[] getStoredObjectBytes(String dossierId, String fileId, FileType fileType) { @@ -145,6 +148,7 @@ public class FileManagementStorageService { entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog); } + @SneakyThrows public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) { @@ -217,6 +221,12 @@ public class FileManagementStorageService { } + public void deleteComponentLog(String dossierId, String fileId) { + + componentLogMongoService.deleteComponentLog(dossierId, fileId); + } + + public void deleteEntityLog(String dossierId, String fileId) { entityLogMongoService.deleteEntityLog(dossierId, fileId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusManagementService.java index 626a13c98..04bd41956 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusManagementService.java @@ -38,11 +38,13 @@ public class FileStatusManagementService { return fileStatusService.getAllFiles(); } + public List getAllDossierTemplateStatus(String dossierTemplateId) { return fileStatusService.getDossierTemplateStatus(dossierTemplateId); } + public List getDossierStatus(String dossierId) { return fileStatusService.getDossierStatus(dossierId) @@ -52,7 +54,6 @@ public class FileStatusManagementService { } - public List getAllDossierStatus(String dossierId) { return fileStatusService.getDossierStatus(dossierId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java index 842997c7b..9ce0bf328 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java @@ -95,6 +95,7 @@ public class FileStatusService { WebsocketService websocketService; + @Transactional public List getAllRelevantStatusesForReanalysisScheduler() { @@ -125,6 +126,7 @@ public class FileStatusService { return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList); } + @Transactional public List getDossierTemplateStatus(String dossierTemplateId) { @@ -133,6 +135,7 @@ public class FileStatusService { return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList); } + @Transactional public List getAllFiles() { @@ -141,6 +144,7 @@ public class FileStatusService { return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList); } + @Transactional public List getAllErrorFiles() { @@ -202,7 +206,6 @@ public class FileStatusService { var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); var fileEntity = fileStatusPersistenceService.getStatus(fileId); - if (!fileManagementStorageService.objectExists(dossierId, fileId, FileType.ORIGIN)) { addToPreprocessingQueue(dossierId, fileId, fileEntity.getFilename()); sendReadOnlyAnalysisEvent(dossierId, fileId, fileEntity); @@ -302,14 +305,24 @@ public class FileStatusService { } - private void sendAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity){ - if(fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR) || fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS) || fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED)){ + private void sendAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity) { + + if (fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED) + || fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR) + || fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS) + || fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED)) { websocketService.sendAnalysisEvent(dossierId, fileId, AnalyseStatus.PROCESSING, fileEntity.getNumberOfAnalyses() + 1); } } - private void sendReadOnlyAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity){ - if(fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR) || fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS) || fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.OCR_PROCESSING)){ + + private void sendReadOnlyAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity) { + + if (fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED) + || fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR) + || fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS) + || fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED) + || fileEntity.getProcessingStatus().equals(ProcessingStatus.OCR_PROCESSING)) { websocketService.sendAnalysisEvent(dossierId, fileId, AnalyseStatus.READ_ONLY_PROCESSING, fileEntity.getNumberOfAnalyses() + 1); } } @@ -536,7 +549,8 @@ public class FileStatusService { public void setStatusSuccessful(String dossierId, String fileId, AnalyzeResult analyzeResult) { - fileStatusPersistenceService.updateProcessingStatus(dossierId, fileId, + fileStatusPersistenceService.updateProcessingStatus(dossierId, + fileId, analyzeResult.getNumberOfPages(), analyzeResult.getDictionaryVersion(), analyzeResult.getRulesVersion(), @@ -621,6 +635,7 @@ public class FileStatusService { public void setStatusIndexingSuccessful(String fileId) { + fileStatusPersistenceService.setUpdateStatusIndexingSuccessful(fileId); FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId); websocketService.sendFileEvent(fileStatus.getDossierId(), fileId, FileEventType.UPDATE); @@ -642,6 +657,7 @@ public class FileStatusService { public void updateFileModificationDate(String fileId, OffsetDateTime fileManipulationDate) { + fileStatusPersistenceService.updateFileModificationDate(fileId, fileManipulationDate); FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId); websocketService.sendFileEvent(fileStatus.getDossierId(), fileId, FileEventType.UPDATE); 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 ffcaae738..add7bc12e 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 @@ -17,6 +17,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; +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.WatermarkRepository; import com.iqser.red.service.persistence.management.v1.processor.utils.ColorUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel; @@ -35,7 +36,7 @@ public class WatermarkService { private final static int DEFAULT_OPACITY = 30; private final WatermarkRepository watermarkRepository; private final DossierRepository dossierRepository; - private final DossierTemplatePersistenceService dossierTemplatePersistenceService; + private final DossierTemplateRepository dossierTemplateRepository; @Transactional @@ -70,7 +71,7 @@ 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 = dossierTemplatePersistenceService.getDossierTemplate(loadedWatermark.get().getDossierTemplateId()); + 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,7 @@ public class WatermarkService { WatermarkEntity watermarkEntity = new WatermarkEntity(); BeanUtils.copyProperties(watermark, watermarkEntity, "id", "dateAdded", "dateModified"); watermarkEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); - var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(watermark.getDossierTemplateId()); + var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()).orElseThrow(() -> new NotFoundException("Dossier Template not found")); watermarkEntity.setDossierTemplate(dossierTemplate); return watermarkRepository.save(watermarkEntity); } @@ -89,7 +90,7 @@ public class WatermarkService { WatermarkEntity watermarkEntity = new WatermarkEntity(); BeanUtils.copyProperties(watermark, watermarkEntity, "id", "dateAdded", "dateModified"); watermarkEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); - var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(watermark.getDossierTemplateId()); + var dossierTemplate = dossierTemplateRepository.findById(watermark.getDossierTemplateId()).orElseThrow(() -> new NotFoundException("Dossier Template not found")); watermarkEntity.setDossierTemplate(dossierTemplate); return watermarkRepository.save(watermarkEntity); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WebsocketService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WebsocketService.java index 3fd624280..4b39e4c25 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WebsocketService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WebsocketService.java @@ -30,33 +30,44 @@ public class WebsocketService { public void sendAnalysisEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, int analysisNumber) { - template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/analysis-events", new AnalyseEvent(dossierId, fileId, analyseStatus, analysisNumber, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS))); + template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/analysis-events", + new AnalyseEvent(dossierId, fileId, analyseStatus, analysisNumber, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS))); } + public void sendOcrUpdateAnalysisEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, int analysisNumber, int numberOfPagesToOCR, int numberOfOCRedPages) { - template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/analysis-events", new AnalyseEvent(dossierId, fileId, analyseStatus, analysisNumber, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), numberOfPagesToOCR, numberOfOCRedPages)); + template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/analysis-events", + new AnalyseEvent(dossierId, + fileId, + analyseStatus, + analysisNumber, + OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), + numberOfPagesToOCR, + numberOfOCRedPages)); } - public void sendDownloadEvent(String downloadId, String userId, DownloadStatusValue downloadStatusValue){ + public void sendDownloadEvent(String downloadId, String userId, DownloadStatusValue downloadStatusValue) { template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/download-events", new DownloadEvent(downloadId, userId, downloadStatusValue)); } - public void sendFileEvent(String dossierId, String fileId, FileEventType fileEventType){ + public void sendFileEvent(String dossierId, String fileId, FileEventType fileEventType) { template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/file-events", new FileEvent(dossierId, fileId, fileEventType)); } - public void sendDossierEvent(String dossierId, DossierEventType dossierEventType){ + public void sendDossierEvent(String dossierId, DossierEventType dossierEventType) { template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/dossier-events", new DossierEvent(dossierId, dossierEventType)); } - public void sendNotificationEvent(String userId){ + + public void sendNotificationEvent(String userId) { + template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/notification-events", new NotificationEvent(userId)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadCompressionMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadCompressionMessageReceiver.java index d9ab7b453..b5906fb42 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadCompressionMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadCompressionMessageReceiver.java @@ -1,6 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.service.download; -import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Service; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadPreparationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadPreparationService.java index 24ef01a88..3d2c44785 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadPreparationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadPreparationService.java @@ -47,10 +47,8 @@ import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation import com.knecon.fforesight.tenantcommons.TenantContext; import jakarta.transaction.Transactional; -import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; -import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadProcessorService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadProcessorService.java index 8461bdbd6..e845c6b6a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadProcessorService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/DownloadProcessorService.java @@ -7,7 +7,6 @@ import java.util.stream.Collectors; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; -import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; @@ -39,7 +38,6 @@ public class DownloadProcessorService { downloadStatusPersistenceService.updateStatus(downloadJob.getStorageId(), DownloadStatusValue.GENERATING); websocketService.sendDownloadEvent(downloadJob.getStorageId(), downloadJob.getUserId(), DownloadStatusValue.GENERATING); - var dossier = dossierService.getDossierById(downloadStatus.getFiles() .iterator().next().getDossierId()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionDlqMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionDlqMessageReceiver.java index ab0928b1d..38332d276 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionDlqMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionDlqMessageReceiver.java @@ -2,18 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.downlo import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.X_ERROR_INFO_HEADER; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionMessage; -import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; -import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatusValue; -import com.iqser.red.service.redaction.report.v1.api.model.ReportRequestMessage; - -import lombok.AccessLevel; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; -import lombok.extern.slf4j.Slf4j; +import java.io.IOException; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitHandler; @@ -22,7 +11,17 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.retry.support.RetryTemplate; import org.springframework.stereotype.Service; -import java.io.IOException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionMessage; +import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; +import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatusValue; + +import lombok.AccessLevel; +import lombok.RequiredArgsConstructor; +import lombok.experimental.FieldDefaults; +import lombok.extern.slf4j.Slf4j; @Slf4j @Service diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionResultMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionResultMessageReceiver.java index 2e9f19bbd..f9409673c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionResultMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/download/RedactionResultMessageReceiver.java @@ -1,5 +1,11 @@ package com.iqser.red.service.persistence.management.v1.processor.service.download; +import org.springframework.amqp.AmqpRejectAndDontRequeueException; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Service; + import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; @@ -11,12 +17,6 @@ import lombok.SneakyThrows; import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; -import org.springframework.amqp.AmqpRejectAndDontRequeueException; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.annotation.RabbitHandler; -import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.stereotype.Service; - @Slf4j @Service @RequiredArgsConstructor diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/AnalysisFlagCalculationSchedulerJob.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/AnalysisFlagCalculationSchedulerJob.java index 4b1c80f4d..a506d9866 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/AnalysisFlagCalculationSchedulerJob.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/AnalysisFlagCalculationSchedulerJob.java @@ -2,7 +2,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service.job; import static com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils.isTenantReadyForPersistence; -import java.time.OffsetDateTime; import java.util.Set; import org.quartz.DisallowConcurrentExecution; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/DeletedFilesCleanupJob.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/DeletedFilesCleanupJob.java index c94958700..c01cc5ba9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/DeletedFilesCleanupJob.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/DeletedFilesCleanupJob.java @@ -3,7 +3,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service.job; import java.time.OffsetDateTime; import java.util.List; -import com.iqser.red.service.persistence.management.v1.processor.service.FileDeletionService; import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobExecutionContext; @@ -12,6 +11,7 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierService; +import com.iqser.red.service.persistence.management.v1.processor.service.FileDeletionService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; import com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils; import com.knecon.fforesight.tenantcommons.TenantContext; @@ -62,7 +62,7 @@ public class DeletedFilesCleanupJob implements Job { .isBefore(now.minusHours(applicationConfigurationEntity.getSoftDeleteCleanupTime()))) { fileDeletionService.hardDeleteFile(file.getId()); - fileDeletionService.hardDeleteFileDataAndIndexUpdates(dossierEntity.getId(),file.getId()); + fileDeletionService.hardDeleteFileDataAndIndexUpdates(dossierEntity.getId(), file.getId()); log.info("Hard deleted file with dossier id {} and file id {}", dossierEntity.getId(), file.getId()); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/DownloadReadyJob.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/DownloadReadyJob.java index eaae4b3a6..ff39be692 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/DownloadReadyJob.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/job/DownloadReadyJob.java @@ -1,7 +1,11 @@ package com.iqser.red.service.persistence.management.v1.processor.service.job; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadCompressingService; -import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadPreparationService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadRedactionFileStatusRepository; import com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils; @@ -12,11 +16,6 @@ import com.knecon.fforesight.tenantcommons.TenantProvider; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.quartz.DisallowConcurrentExecution; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.springframework.stereotype.Service; - @Slf4j @RequiredArgsConstructor @Service diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionDictionaryUpdateHandler.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionDictionaryUpdateHandler.java index b859a58a2..83ad345b3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionDictionaryUpdateHandler.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionDictionaryUpdateHandler.java @@ -69,17 +69,17 @@ public class ManualRedactionDictionaryUpdateHandler { Set typeIdsOfModifiedDictionaries) { List dictionaryEntriesToUnDelete = dictionaryManagementService.getAllEntriesInDossierTemplate(manualRequestWithAddToDictionary.getDictionaryTypeId(), - value, - manualRequestWithAddToDictionary.getDictionaryEntryType()); + value, + manualRequestWithAddToDictionary.getDictionaryEntryType()); dictionaryEntriesToUnDelete.forEach(entry -> { typeIdsOfModifiedDictionaries.add(entry.getTypeId()); addToDictionary(entry.getTypeId(), value, manualRequestWithAddToDictionary.getDossierId(), fileId, manualRequestWithAddToDictionary.getDictionaryEntryType()); }); addToDictionary(manualRequestWithAddToDictionary.getDictionaryTypeId(), - value, - manualRequestWithAddToDictionary.getDossierId(), - fileId, - manualRequestWithAddToDictionary.getDictionaryEntryType()); + value, + manualRequestWithAddToDictionary.getDossierId(), + fileId, + manualRequestWithAddToDictionary.getDictionaryEntryType()); typeIdsOfModifiedDictionaries.add(manualRequestWithAddToDictionary.getDictionaryTypeId()); return typeIdsOfModifiedDictionaries; } @@ -300,7 +300,8 @@ public class ManualRedactionDictionaryUpdateHandler { resizeRedactionsWithSameValue.forEach(resizeRedaction -> { var file = fileStatusPersistenceService.getStatus(resizeRedaction.getId().getFileId()); var dossierForResizeRedaction = dossierPersistenceService.findByDossierId(file.getDossierId()); - if (!file.getWorkflowStatus().equals(WorkflowStatus.APPROVED) && dossierTemplateId.equals(dossierForResizeRedaction.getDossierTemplateId()) + if (!file.getWorkflowStatus().equals(WorkflowStatus.APPROVED) + && dossierTemplateId.equals(dossierForResizeRedaction.getDossierTemplateId()) && (resizeRedaction.isAddToAllDossiers() || resizeRedaction.getUpdateDictionary())) { resizeRedactionPersistenceService.hardDelete(resizeRedaction.getId().getFileId(), resizeRedaction.getId().getAnnotationId()); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java index 0bdabee5b..750f70ec3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java @@ -49,11 +49,11 @@ public class ManualRedactionProviderService { private final ResizeRedactionPersistenceService resizeRedactionPersistenceService; + public void convertUnprocessedAddToDictionariesToLocalChanges(String fileId) { - public void convertUnprocessedAddToDictionariesToLocalChanges(String fileId){ var unprocessedManualAdds = addRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.unprocessedOnly()); - for (var unprocessedManualAdd : unprocessedManualAdds){ - if (unprocessedManualAdd.isAddToDictionary() || unprocessedManualAdd.isAddToAllDossiers()){ + for (var unprocessedManualAdd : unprocessedManualAdds) { + if (unprocessedManualAdd.isAddToDictionary() || unprocessedManualAdd.isAddToAllDossiers()) { unprocessedManualAdd.setAddToDictionary(false); unprocessedManualAdd.setAddToAllDossiers(false); unprocessedManualAdd.setLegalBasis(""); @@ -65,6 +65,7 @@ public class ManualRedactionProviderService { @Transactional public ManualRedactions getManualRedactions(String fileId, ManualChangesQueryOptions options) { + return getManualRedactions(fileId, options, Collections.emptyList()); } @@ -121,13 +122,25 @@ public class ManualRedactionProviderService { legalBasisChanges = Collections.emptySet(); } - if(!annotationIds.isEmpty()){ - return new ManualRedactions(removals.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), - entriesToAdd.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), - forceRedactions.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), - recategorizations.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), - legalBasisChanges.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), - resizeRedactions.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet())); + if (!annotationIds.isEmpty()) { + return new ManualRedactions(removals.stream() + .filter(r -> annotationIds.contains(r.getAnnotationId())) + .collect(Collectors.toSet()), + entriesToAdd.stream() + .filter(r -> annotationIds.contains(r.getAnnotationId())) + .collect(Collectors.toSet()), + forceRedactions.stream() + .filter(r -> annotationIds.contains(r.getAnnotationId())) + .collect(Collectors.toSet()), + recategorizations.stream() + .filter(r -> annotationIds.contains(r.getAnnotationId())) + .collect(Collectors.toSet()), + legalBasisChanges.stream() + .filter(r -> annotationIds.contains(r.getAnnotationId())) + .collect(Collectors.toSet()), + resizeRedactions.stream() + .filter(r -> annotationIds.contains(r.getAnnotationId())) + .collect(Collectors.toSet())); } return new ManualRedactions(removals, entriesToAdd, forceRedactions, recategorizations, legalBasisChanges, resizeRedactions); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionService.java index 74b7b8993..b55bd9b44 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionService.java @@ -222,7 +222,6 @@ public class ManualRedactionService { removeRedactionRequest.getDossierTemplateId()); } - log.info("add removeRedaction for file {} and annotation {}", fileId, removeRedactionRequest.getAnnotationId()); IdRemovalEntity idRemoval = removeRedactionPersistenceService.insert(fileId, removeRedactionRequest); 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 f970eeb56..105ff4adb 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 @@ -15,8 +15,11 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; 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.FileAttributesRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalsePositiveEntryRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionarySummaryResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.TypeRankSummary; @@ -34,6 +37,9 @@ public class DictionaryPersistenceService { private final DossierRepository dossierRepository; private final EntryRepository entryRepository; + private final FalsePositiveEntryRepository falsePositiveEntryRepository; + private final FileAttributesRepository fileAttributesRepository; + private final FalseRecommendationEntryRepository falseRecommendationEntryRepository; @Transactional(Transactional.TxType.REQUIRES_NEW) // This needs a single transaction because of the creation of types on the fly, otherwise add entries will fails @@ -229,6 +235,7 @@ public class DictionaryPersistenceService { typeRepository.updateByIdSetIncrementVersionByOne(typeId); } + @Transactional public void setVersion(String typeId, long version) { @@ -328,4 +335,15 @@ 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()); + 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/DossierPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java index a4e10a712..7aa6b2b40 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java @@ -65,7 +65,7 @@ public class DossierPersistenceService { if (createOrUpdateDossierRequest.getDossierStatusId() != null) { var dossierStatus = dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId()); - if (dossierStatus.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) { + if (dossierStatus.getDossierTemplate().getId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) { dossier.setDossierStatus(dossierStatus); } else { throw new BadRequestException("Invalid Dossier Status"); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java index 050584b87..86514f875 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java @@ -17,6 +17,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe 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.persistence.repository.DossierStatusRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.utils.DossierStatusFilteringMapper; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierStatusInfo; @@ -31,7 +32,7 @@ public class DossierStatusPersistenceService { public static final String DOSSIER_STATUS_NOT_FOUND_MESSAGE = "Dossier Status with Id %s not found."; private final DossierStatusRepository dossierStatusRepository; - private final DossierTemplatePersistenceService dossierTemplatePersistenceService; + private final DossierTemplateRepository dossierTemplateRepository; private final DossierStatusFilteringMapper dossierStatusFilteringMapper; private final static int MAX_STATUS_NAME_LENGTH = 255; @@ -64,16 +65,19 @@ public class DossierStatusPersistenceService { validateDossierStatusForTemplate(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), null); DossierStatusEntity dossierStatus = new DossierStatusEntity(); dossierStatus.setId(UUID.randomUUID().toString()); - BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus); - var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId()); // in case of duplicate ranks, increase the ranks if (dossierStatusRepository.getDuplicateRanks(createOrUpdateDossierStatusRequest.getDossierTemplateId(), createOrUpdateDossierStatusRequest.getRank()) > 0) { dossierStatusRepository.adjustRanksForDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId(), createOrUpdateDossierStatusRequest.getRank()); } - var loadedDossierStatus = dossierStatusRepository.save(dossierStatus); - loadedDossierStatus.setDossierTemplate(dossierTemplate); + BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus); + if (createOrUpdateDossierStatusRequest.getDossierTemplateId() != null) { + var dossierTemplate = dossierTemplateRepository.findById(createOrUpdateDossierStatusRequest.getDossierTemplateId()) + .orElseThrow(() -> new NotFoundException("DossierTemplate with id" + createOrUpdateDossierStatusRequest.getDossierTemplateId())); - return loadedDossierStatus; + dossierStatus.setDossierTemplate(dossierTemplate); + } + + return dossierStatusRepository.save(dossierStatus); } } @@ -114,7 +118,6 @@ public class DossierStatusPersistenceService { } - @Transactional public List getAllDossierStatuses(List dossierTemplateIds) { 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 a1bd54ad1..6bb729b13 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 @@ -17,6 +17,8 @@ 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; @@ -24,10 +26,13 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus; import jakarta.transaction.Transactional; +import lombok.AccessLevel; import lombok.RequiredArgsConstructor; +import lombok.experimental.FieldDefaults; @Service @RequiredArgsConstructor +@FieldDefaults(level = AccessLevel.PRIVATE) public class DossierTemplatePersistenceService { @Value("${application.type}") @@ -35,15 +40,13 @@ public class DossierTemplatePersistenceService { public static final String DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE = "DossierTemplate with Id %s not found."; - private final DossierTemplateRepository dossierTemplateRepository; - private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService; - private final RulesPersistenceService rulesPersistenceService; - private final DictionaryPersistenceService dictionaryPersistenceService; + final DossierTemplateRepository dossierTemplateRepository; + final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService; + final RulesPersistenceService rulesPersistenceService; + final TypeRepository typeRepository; - private final TypeRepository typeRepository; - - private final static int MAX_NAME_LENGTH = 255; - private final static int MAX_DESCRIPTION_LENGTH = 4000; + static int MAX_NAME_LENGTH = 255; + static int MAX_DESCRIPTION_LENGTH = 4000; @Transactional @@ -201,7 +204,7 @@ public class DossierTemplatePersistenceService { @Transactional - public void deleteDossierTemplate(String dossierTemplateId, String deletingUserId) { + public void softDeleteDossierTemplate(String dossierTemplateId, String deletingUserId) { dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> { @@ -216,6 +219,7 @@ public class DossierTemplatePersistenceService { dossierTemplate.setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossierTemplate.setSoftDeleteTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossierTemplate.setName(dossierTemplate.getName() + "_" + OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); + } }, () -> { throw new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId)); @@ -224,6 +228,14 @@ public class DossierTemplatePersistenceService { } + @Transactional + public void deleteDossierTemplate(String dossierTemplateId) { + + rulesPersistenceService.deleteRulesByDossierTemplateId(dossierTemplateId); + dossierTemplateRepository.deleteById(dossierTemplateId); + } + + @Transactional(Transactional.TxType.REQUIRES_NEW) public void insertDossierTemplate(DossierTemplateEntity dossierTemplate) { @@ -231,18 +243,5 @@ public class DossierTemplatePersistenceService { } - public void validateDossierTemplateForDuplicateRanks(String dossierTemplateId) { - - var duplicateRanks = dictionaryPersistenceService.getTypeRankSummaryList(dossierTemplateId) - .stream() - .filter(t -> t.getTypesCount() > 1) - .collect(Collectors.toList()); - if (!duplicateRanks.isEmpty()) { - String errorMessage = "Duplicate ranks found in dossier template " + dossierTemplateId + "\n" + duplicateRanks.stream() - .map(t -> String.format(" Rank %d has %d entries", t.getRank(), t.getTypesCount())) - .collect(Collectors.joining("\n")); - throw new BadRequestException(errorMessage); - } - } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java index a9ec3de3c..ce34409f4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java @@ -134,7 +134,8 @@ public class DownloadStatusPersistenceService { @Transactional public DownloadStatusEntity getStatusesByUuid(String uuid) { - return downloadStatusRepository.findByUuid(uuid).orElseThrow(() -> new NotFoundException(String.format("DownloadStatus not found for uuid: %s", uuid))); + return downloadStatusRepository.findByUuid(uuid) + .orElseThrow(() -> new NotFoundException(String.format("DownloadStatus not found for uuid: %s", uuid))); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java index cb64a37eb..4f3be8fce 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java @@ -403,7 +403,10 @@ public class FileStatusPersistenceService { public List getStatusesForDossierTemplate(String dossierTemplateId) { return dossierService.findAllDossiersForDossierTemplateId(dossierTemplateId) - .stream().map(dossier -> fileRepository.findByDossierId(dossier.getId())).flatMap(List::stream).toList(); + .stream() + .map(dossier -> fileRepository.findByDossierId(dossier.getId())) + .flatMap(List::stream) + .toList(); } @@ -453,7 +456,7 @@ public class FileStatusPersistenceService { @Transactional public void softDelete(String fileId, OffsetDateTime softDeletedTime) { - fileRepository.setSoftDelete(fileId, ProcessingStatus.PROCESSED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), softDeletedTime); + fileRepository.setSoftDelete(fileId, ProcessingStatus.PROCESSED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), softDeletedTime); } @@ -668,4 +671,10 @@ public class FileStatusPersistenceService { fileRepository.setLastFlagCalculationDate(fileId, lastFlagCalculation, OffsetDateTime.now()); } + + public List getStatusIdsForDossier(String dossierId) { + + return fileRepository.findIdsByDossierId(dossierId); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java index 6aa0b050c..d8f12a415 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java @@ -3,6 +3,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntityKey; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RuleSetRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; @@ -139,6 +140,7 @@ public class RulesPersistenceService { }); } + @Transactional public void setRules(@NonNull String rules, String dossierTemplateId, RuleFileType ruleFileType, long version, boolean timeoutDetected) { @@ -166,4 +168,11 @@ public class RulesPersistenceService { ruleSetRepository.updateTimeoutDetected(dossierTemplateId, ruleFileType.name()); } + + public void deleteRulesByDossierTemplateId(String id) { + + ruleSetRepository.deleteById(new RuleSetEntityKey(id, RuleFileType.ENTITY.name())); + ruleSetRepository.deleteById(new RuleSetEntityKey(id, RuleFileType.COMPONENT.name())); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/SaasMigrationStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/SaasMigrationStatusPersistenceService.java index a2a71292e..8235fb210 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/SaasMigrationStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/SaasMigrationStatusPersistenceService.java @@ -42,6 +42,7 @@ public class SaasMigrationStatusPersistenceService { return migrationStatusOptional.isPresent() && migrationStatusOptional.get().getStatus() != SaasMigrationStatus.FINISHED; } + public boolean migrationFinishedForTenant() { return saasMigrationStatusRepository.findAllWhereStatusNotFinishedAndNotError() == 0; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java index a5ae0e9bb..d012d5f46 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java @@ -56,8 +56,8 @@ public class ViewedPagesPersistenceService { public void deleteForFiles(List fileIds) { - viewedPagesRepository.deleteByFileIds(fileIds); + viewedPagesRepository.deleteByFileIds(fileIds); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/CommentPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/CommentPersistenceService.java index 73e47c219..689699e7e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/CommentPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/CommentPersistenceService.java @@ -55,17 +55,21 @@ public class CommentPersistenceService { return commentRepository.existsByFileIdAndSoftDeletedTimeIsNull(fileId); } + public void softDeleteCommentsForFiles(List fileId, OffsetDateTime softDeletedTime) { // commentRepository.softDeleteCommentsByFilesAndAnnotationSoftDeletedTime(fileId, softDeletedTime); commentRepository.softDeleteCommentsByFiles(fileId, softDeletedTime); } + public void undeleteByFileId(String fileId, OffsetDateTime deletionTime) { commentRepository.undeleteByFileId(fileId, deletionTime); } + public void deleteByFileIds(List fileIds) { + commentRepository.deleteCommentsByFiles(fileIds); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ForceRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ForceRedactionPersistenceService.java index 0f24e1099..08fb79bb4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ForceRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ForceRedactionPersistenceService.java @@ -43,11 +43,13 @@ public class ForceRedactionPersistenceService { return forceRedactionRepository.findByFileIdAndOptions(fileId, options.isIncludeDeletions(), options.isIncludeOnlyUnprocessed()); } + public int softDeleteByFileIds(List fileIds, OffsetDateTime softDeletionTime) { return forceRedactionRepository.softDeleteByFileIds(fileIds, softDeletionTime); } + public int deleteByFileIds(List fileIds) { return forceRedactionRepository.deleteByFileIds(fileIds); @@ -74,12 +76,14 @@ public class ForceRedactionPersistenceService { forceRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null); } + @Transactional public void markAsProcessed(String annotationId, String fileId) { forceRedactionRepository.markAsProcessed(new AnnotationEntityId(annotationId, fileId), OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); } + public void undeleteByFileId(String fileId, OffsetDateTime deletionTime) { forceRedactionRepository.undeleteByFileId(fileId, deletionTime); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java index 520c15a27..1a8c16700 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java @@ -84,16 +84,19 @@ public class LegalBasisChangePersistenceService { return legalBasisChangeRepository.findByFileIdAndOptions(fileId, options.isIncludeDeletions(), options.isIncludeOnlyUnprocessed()); } + public int softDeleteByFileIds(List fileIds, OffsetDateTime softDeletionTime) { return legalBasisChangeRepository.softDeleteByFileIds(fileIds, softDeletionTime); } + public int deleteByFileIds(List fileIds) { return legalBasisChangeRepository.deleteByFileIds(fileIds); } + public void undeleteByFileId(String fileId, OffsetDateTime deletionTime) { legalBasisChangeRepository.undeleteByFileId(fileId, deletionTime); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RecategorizationPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RecategorizationPersistenceService.java index 6b5148f7a..a09308648 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RecategorizationPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RecategorizationPersistenceService.java @@ -87,21 +87,25 @@ public class RecategorizationPersistenceService { .orElseThrow(() -> new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); } + public List findEntriesByFileIdAndOptions(String fileId, ManualChangesQueryOptions options) { return recategorizationRepository.findByFileIdAndOptions(fileId, options.isIncludeDeletions(), options.isIncludeOnlyUnprocessed(), options.isIncludeDictChanges()); } + public int softDeleteByFileIds(List fileIds, OffsetDateTime softDeletionTime) { return recategorizationRepository.softDeleteByFileIds(fileIds, softDeletionTime); } + public int deleteByFileIds(List fileIds) { return recategorizationRepository.deleteByFileIds(fileIds); } + @Transactional public void markAsProcessed(String annotationId, String fileId) { @@ -115,6 +119,7 @@ public class RecategorizationPersistenceService { recategorizationRepository.saveAndFlush(recategorizationEntity); } + public void undeleteByFileId(String fileId, OffsetDateTime deletionTime) { recategorizationRepository.undeleteByFileId(fileId, deletionTime); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RemoveRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RemoveRedactionPersistenceService.java index a8e9f2c4f..9a6ff531a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RemoveRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RemoveRedactionPersistenceService.java @@ -47,26 +47,31 @@ public class RemoveRedactionPersistenceService { .orElseThrow(() -> new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); } + public List findEntriesByFileIdAndOptions(String fileId, ManualChangesQueryOptions options) { return removeRedactionRepository.findByFileIdAndOptions(fileId, options.isIncludeDeletions(), options.isIncludeOnlyUnprocessed(), options.isIncludeDictChanges()); } + public int softDeleteByFileIds(List fileIds, OffsetDateTime softDeletionTime) { return removeRedactionRepository.softDeleteByFileIds(fileIds, softDeletionTime); } + public int deleteByFileIds(List fileIds) { return removeRedactionRepository.deleteByFileIds(fileIds); } + public void undeleteByFileId(String fileId, OffsetDateTime deletionTime) { removeRedactionRepository.undeleteByFileId(fileId, deletionTime); } + @Transactional public void hardDelete(String fileId, String annotationId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/CommentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/CommentRepository.java index 808e5a249..1a3db127f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/CommentRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/CommentRepository.java @@ -27,51 +27,54 @@ public interface CommentRepository extends JpaRepository { @Query("select e from CommentEntity e where e.fileId = :fileId and (:includeDeletions = true or e.softDeletedTime is null)") List findByFileId(@Param("fileId") String fileId, @Param("includeDeletions") boolean includeDeletions); + boolean existsByFileIdAndSoftDeletedTimeIsNull(String fileId); + @Modifying @Query("update CommentEntity c set c.softDeletedTime = :softDeleteTime where c.id = :id") int updateSoftDelete(@Param("id") long id, @Param("softDeleteTime") OffsetDateTime softDeleteTime); + @Modifying - @Query("update CommentEntity c set c.softDeletedTime = :softDeleteTime where c.fileId in (:fileIds) and " + - "(exists (select a from ManualForceRedactionEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or "+ - "exists (select a from IdRemovalEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or "+ - "exists (select a from ManualRedactionEntryEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or "+ - "exists (select a from ManualRecategorizationEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or "+ - "exists (select a from ManualResizeRedactionEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or "+ - "exists (select a from ManualLegalBasisChangeEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime)) ") + @Query("update CommentEntity c set c.softDeletedTime = :softDeleteTime where c.fileId in (:fileIds) and " + + "(exists (select a from ManualForceRedactionEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or " + + "exists (select a from IdRemovalEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or " + + "exists (select a from ManualRedactionEntryEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or " + + "exists (select a from ManualRecategorizationEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or " + + "exists (select a from ManualResizeRedactionEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime) or " + + "exists (select a from ManualLegalBasisChangeEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime = :softDeleteTime)) ") void softDeleteCommentsByFilesAndAnnotationSoftDeletedTime(@Param("fileIds") List fileIds, @Param("softDeleteTime") OffsetDateTime softDeleteTime); + @Modifying @Query("update CommentEntity c set c.softDeletedTime = :softDeleteTime where c.fileId in (:fileIds) and c.softDeletedTime is null") void softDeleteCommentsByFiles(@Param("fileIds") List fileIds, @Param("softDeleteTime") OffsetDateTime softDeleteTime); + @Modifying @Query("delete from CommentEntity c where c.fileId in (:fileIds)") void deleteCommentsByFiles(@Param("fileIds") List fileIds); @Modifying - @Query("update CommentEntity c set c.softDeletedTime = null where c.fileId = :fileId and " + - "(exists (select a from ManualForceRedactionEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or "+ - "exists (select a from IdRemovalEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or "+ - "exists (select a from ManualRedactionEntryEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or "+ - "exists (select a from ManualRecategorizationEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or "+ - "exists (select a from ManualResizeRedactionEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or "+ - "exists (select a from ManualLegalBasisChangeEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime)) ") - void undeleteByFileIdAndAnnotationSoftDeletedTime(@Param("fileId") String fileId,@Param("deletionTime") OffsetDateTime deletionTime); + @Query("update CommentEntity c set c.softDeletedTime = null where c.fileId = :fileId and " + + "(exists (select a from ManualForceRedactionEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or " + + "exists (select a from IdRemovalEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or " + + "exists (select a from ManualRedactionEntryEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or " + + "exists (select a from ManualRecategorizationEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or " + + "exists (select a from ManualResizeRedactionEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime) or " + + "exists (select a from ManualLegalBasisChangeEntity a where a.id.annotationId = c.annotationId and a.softDeletedTime >= :deletionTime)) ") + void undeleteByFileIdAndAnnotationSoftDeletedTime(@Param("fileId") String fileId, @Param("deletionTime") OffsetDateTime deletionTime); + @Modifying @Query("update CommentEntity c set c.softDeletedTime = null where c.fileId = :fileId and c.softDeletedTime >= :deletionTime") - void undeleteByFileId(@Param("fileId") String fileId,@Param("deletionTime") OffsetDateTime deletionTime); + void undeleteByFileId(@Param("fileId") String fileId, @Param("deletionTime") OffsetDateTime deletionTime); @Modifying @Query("update CommentEntity c set c.annotationId = :newAnnotationId where c.annotationId = :oldAnnotationId and c.fileId = :fileId") int saasMigrationUpdateAnnotationIds(@Param("fileId") String fileId, @Param("oldAnnotationId") String oldAnnotationId, @Param("newAnnotationId") String newAnnotationId); - - - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ComponentMappingRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ComponentMappingRepository.java index b3f8cffa4..0b3b71b8e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ComponentMappingRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ComponentMappingRepository.java @@ -24,6 +24,6 @@ public interface ComponentMappingRepository extends JpaRepository findAllByUserId(String userId); + // The real id is currently the storageId, this is a quick fix fpr the new customer api // because i have no time to rewrite the complete logic that uses the storageId everywhere. Optional findByUuid(String uuid); + @Modifying @Query("update DownloadStatusEntity ds set ds.status = :status where ds.storageId = :storageId") int updateStatus(@Param("storageId") String storageId, @Param("status") DownloadStatusValue status); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributesRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributesRepository.java index 8c73c91ad..26f3f9e0d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributesRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributesRepository.java @@ -20,6 +20,7 @@ public interface FileAttributesRepository extends JpaRepository fileIds); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java index 16d4538b8..7e4287c88 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java @@ -27,6 +27,10 @@ public interface FileRepository extends JpaRepository { List findByDossierId(String dossierId); + @Query("select f.id from FileEntity f where f.dossierId = :dossierId") + List findIdsByDossierId(@Param("dossierId") String dossierId); + + List findByAddedBefore(OffsetDateTime end); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/RuleSetRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/RuleSetRepository.java index 94efddbb0..434cc1245 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/RuleSetRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/RuleSetRepository.java @@ -16,6 +16,7 @@ public interface RuleSetRepository extends JpaRepository { @Query("update TypeEntity t set t.version = :version where t.id = :typeId") void updateVersionForType(@Param("typeId") String typeId, @Param("version") long version); + + List findAllByDossierTemplateId(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/ViewedPagesRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ViewedPagesRepository.java index 96f1bb250..aabf1d976 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ViewedPagesRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ViewedPagesRepository.java @@ -24,6 +24,6 @@ public interface ViewedPagesRepository extends JpaRepository fileIds); + void deleteByFileIds(@Param("fileIds") List fileIds); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ForceRedactionRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ForceRedactionRepository.java index 9161b965d..1805ef4a1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ForceRedactionRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ForceRedactionRepository.java @@ -37,12 +37,12 @@ public interface ForceRedactionRepository extends JpaRepository findByFileIdAndOptions(@Param("fileId") String fileId, @Param("includeDeletions") boolean includeDeletions, @Param("unprocessed") boolean unprocessed); @@ -52,10 +52,11 @@ public interface ForceRedactionRepository extends JpaRepository fileIds, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("update ManualForceRedactionEntity m set m.softDeletedTime = null where m.id.fileId = :fileId and m.softDeletedTime >= :softDeletedTime") - int undeleteByFileId(@Param("fileId") String fileId, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int undeleteByFileId(@Param("fileId") String fileId, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("delete ManualForceRedactionEntity m where m.id.fileId in (:fileIds)") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java index 2d2e8d9a5..76c50b81a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java @@ -37,12 +37,12 @@ public interface LegalBasisChangeRepository extends JpaRepository findByFileIdAndOptions(@Param("fileId") String fileId, @Param("includeDeletions") boolean includeDeletions, @Param("unprocessed") boolean unprocessed); @@ -50,13 +50,13 @@ public interface LegalBasisChangeRepository extends JpaRepository fileIds, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int softDeleteByFileIds(@Param("fileIds") List fileIds, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("update ManualLegalBasisChangeEntity m set m.softDeletedTime = null where m.id.fileId = :fileId and m.softDeletedTime >= :softDeletedTime") - int undeleteByFileId(@Param("fileId") String fileId, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int undeleteByFileId(@Param("fileId") String fileId, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("delete ManualLegalBasisChangeEntity m where m.id.fileId in (:fileIds)") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ManualRedactionRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ManualRedactionRepository.java index 63f166de7..aa7b3431c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ManualRedactionRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ManualRedactionRepository.java @@ -51,20 +51,22 @@ public interface ManualRedactionRepository extends JpaRepository fileIds, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int softDeleteByFileIds(@Param("fileIds") List fileIds, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("update ManualRedactionEntryEntity m set m.softDeletedTime = null where m.id.fileId = :fileId and m.softDeletedTime >= :softDeletedTime") - int undeleteByFileId(@Param("fileId") String fileId, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int undeleteByFileId(@Param("fileId") String fileId, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("delete ManualRedactionEntryEntity m where m.id.fileId in (:fileIds)") int deleteByFileIds(@Param("fileIds") List fileIds); + @Modifying @Query("update ManualRedactionEntryEntity m set m.processedDate = :processedDate where m.id = :annotationEntityId") void markAsProcessed(@Param("annotationEntityId") AnnotationEntityId annotationEntityId, @Param("processedDate") OffsetDateTime processedDate); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/RecategorizationRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/RecategorizationRepository.java index 334453178..65546982b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/RecategorizationRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/RecategorizationRepository.java @@ -49,15 +49,16 @@ public interface RecategorizationRepository extends JpaRepository fileIds, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int softDeleteByFileIds(@Param("fileIds") List fileIds, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("update ManualRecategorizationEntity m set m.softDeletedTime = null where m.id.fileId = :fileId and m.softDeletedTime >= :softDeletedTime") - int undeleteByFileId(@Param("fileId") String fileId, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int undeleteByFileId(@Param("fileId") String fileId, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("delete ManualRecategorizationEntity m where m.id.fileId in (:fileIds)") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/RemoveRedactionRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/RemoveRedactionRepository.java index 186251d4e..b9b9b1a15 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/RemoveRedactionRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/RemoveRedactionRepository.java @@ -49,15 +49,16 @@ public interface RemoveRedactionRepository extends JpaRepository fileIds, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int softDeleteByFileIds(@Param("fileIds") List fileIds, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("update IdRemovalEntity m set m.softDeletedTime = null where m.id.fileId = :fileId and m.softDeletedTime >= :softDeletedTime") - int undeleteByFileId(@Param("fileId") String fileId, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int undeleteByFileId(@Param("fileId") String fileId, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("delete IdRemovalEntity m where m.id.fileId in (:fileIds)") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ResizeRedactionRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ResizeRedactionRepository.java index 7b0394fa6..c65734a1c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ResizeRedactionRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/ResizeRedactionRepository.java @@ -57,15 +57,16 @@ public interface ResizeRedactionRepository extends JpaRepository fileIds, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int softDeleteByFileIds(@Param("fileIds") List fileIds, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("update ManualResizeRedactionEntity m set m.softDeletedTime = null where m.id.fileId = :fileId and m.softDeletedTime >= :softDeletedTime") - int undeleteByFileId(@Param("fileId") String fileId, - @Param("softDeletedTime") OffsetDateTime softDeletedTime); + int undeleteByFileId(@Param("fileId") String fileId, @Param("softDeletedTime") OffsetDateTime softDeletedTime); + @Modifying @Query("delete ManualResizeRedactionEntity m where m.id.fileId in (:fileIds)") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/EntryRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/EntryRepository.java index d1892996f..8a89f442d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/EntryRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/EntryRepository.java @@ -41,4 +41,7 @@ public interface EntryRepository extends EntryRepositoryCustom, JpaRepository findByTypeIdContainsAndValue(String typeId, String value); + + void deleteAllByTypeId(String typeId); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalsePositiveEntryRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalsePositiveEntryRepository.java index 77f7229b5..ff8f386b9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalsePositiveEntryRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalsePositiveEntryRepository.java @@ -36,4 +36,7 @@ public interface FalsePositiveEntryRepository extends FalsePositiveEntryReposito List findByTypeIdContainsAndValue(String typeId, String value); + + void deleteAllByTypeId(String type); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalseRecommendationEntryRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalseRecommendationEntryRepository.java index e0ac1c12e..f5fccec81 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalseRecommendationEntryRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalseRecommendationEntryRepository.java @@ -36,4 +36,7 @@ public interface FalseRecommendationEntryRepository extends FalseRecommendationE List findByTypeIdContainsAndValue(String typeId, String value); + + void deleteAllByTypeId(String type); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/ImageMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/ImageMessageReceiver.java index 00597e9b2..082a8c2b2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/ImageMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/ImageMessageReceiver.java @@ -15,9 +15,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusProcessingUpdateService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; -import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileErrorInfo; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; import io.micrometer.observation.ObservationRegistry; import lombok.RequiredArgsConstructor; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/LayoutParsingFinishedMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/LayoutParsingFinishedMessageReceiver.java index 4ac94ca82..06386b6d3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/LayoutParsingFinishedMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/LayoutParsingFinishedMessageReceiver.java @@ -1,7 +1,13 @@ package com.iqser.red.service.persistence.management.v1.processor.service.queue; +import java.time.OffsetDateTime; +import java.time.temporal.ChronoUnit; + +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Service; + import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.ValueInstantiationException; import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; import com.iqser.red.service.persistence.management.v1.processor.migration.SaasMigrationService; import com.iqser.red.service.persistence.management.v1.processor.model.websocket.AnalyseStatus; @@ -19,13 +25,6 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.stereotype.Service; - -import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; - @Slf4j @Service @RequiredArgsConstructor diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/OCRProcessingMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/OCRProcessingMessageReceiver.java index 028ac13b7..97e7ab0b1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/OCRProcessingMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/OCRProcessingMessageReceiver.java @@ -16,7 +16,6 @@ import com.iqser.red.service.persistence.management.v1.processor.model.OCRStatus import com.iqser.red.service.persistence.management.v1.processor.model.websocket.AnalyseStatus; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusProcessingUpdateService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; - import com.iqser.red.service.persistence.management.v1.processor.service.WebsocketService; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileErrorInfo; import com.knecon.fforesight.service.ocr.v1.api.model.DocumentRequest; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/FileEntityMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/FileEntityMapper.java index 0df9fbec4..26c452ac5 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/FileEntityMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/FileEntityMapper.java @@ -8,7 +8,6 @@ import java.util.function.BiConsumer; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntityComponentMappingVersionEntity; -import com.iqser.red.service.persistence.management.v1.processor.service.UploadService; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; import lombok.AccessLevel; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/FileModelMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/FileModelMapper.java index c1d89f926..a3850ac07 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/FileModelMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/FileModelMapper.java @@ -6,8 +6,8 @@ import java.util.Objects; import java.util.function.BiConsumer; import java.util.stream.Collectors; -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntityComponentMappingVersionEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntityComponentMappingVersionEntity; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileErrorInfo; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONDownloadFileTypeConverter.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONDownloadFileTypeConverter.java index a8a4e1337..67c9d4558 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONDownloadFileTypeConverter.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONDownloadFileTypeConverter.java @@ -3,13 +3,12 @@ package com.iqser.red.service.persistence.management.v1.processor.utils; import java.util.HashSet; import java.util.Set; -import jakarta.persistence.AttributeConverter; -import jakarta.persistence.Converter; - import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; import lombok.SneakyThrows; @Converter diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONDownloadRedactionFileDetailsConverter.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONDownloadRedactionFileDetailsConverter.java index 016056a39..f871dc3d9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONDownloadRedactionFileDetailsConverter.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONDownloadRedactionFileDetailsConverter.java @@ -1,5 +1,8 @@ package com.iqser.red.service.persistence.management.v1.processor.utils; +import java.util.ArrayList; +import java.util.List; + import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail; @@ -8,9 +11,6 @@ import jakarta.persistence.AttributeConverter; import jakarta.persistence.Converter; import lombok.SneakyThrows; -import java.util.ArrayList; -import java.util.List; - @Converter public class JSONDownloadRedactionFileDetailsConverter implements AttributeConverter, String> { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONIntegerSetConverter.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONIntegerSetConverter.java index 141ba7abe..c3cea6327 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONIntegerSetConverter.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONIntegerSetConverter.java @@ -3,12 +3,11 @@ package com.iqser.red.service.persistence.management.v1.processor.utils; import java.util.HashSet; import java.util.Set; -import jakarta.persistence.AttributeConverter; -import jakarta.persistence.Converter; - import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; import lombok.SneakyThrows; @Converter diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONMapConverter.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONMapConverter.java index 5571bf82b..cbb9207ba 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONMapConverter.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONMapConverter.java @@ -3,12 +3,11 @@ package com.iqser.red.service.persistence.management.v1.processor.utils; import java.util.HashMap; import java.util.Map; -import jakarta.persistence.AttributeConverter; -import jakarta.persistence.Converter; - import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; import lombok.SneakyThrows; @Converter diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONStoredFileInformationConverter.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONStoredFileInformationConverter.java index aca69a293..93f4b4cfc 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONStoredFileInformationConverter.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONStoredFileInformationConverter.java @@ -3,13 +3,12 @@ package com.iqser.red.service.persistence.management.v1.processor.utils; import java.util.HashSet; import java.util.Set; -import jakarta.persistence.AttributeConverter; -import jakarta.persistence.Converter; - import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; import lombok.SneakyThrows; @Converter diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONStringSetConverter.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONStringSetConverter.java index 9d1b8d0f8..a92c06858 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONStringSetConverter.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/JSONStringSetConverter.java @@ -3,12 +3,11 @@ package com.iqser.red.service.persistence.management.v1.processor.utils; import java.util.HashSet; import java.util.Set; -import jakarta.persistence.AttributeConverter; -import jakarta.persistence.Converter; - import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; import lombok.SneakyThrows; @Converter diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/RulesValidationMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/RulesValidationMapper.java index 10e98eb5a..1b5a062e0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/RulesValidationMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/RulesValidationMapper.java @@ -28,7 +28,8 @@ public class RulesValidationMapper { .map(droolsBlacklistErrorMessage -> new RuleBlacklistErrorMessage(droolsBlacklistErrorMessage.getLine(), droolsBlacklistErrorMessage.getColumn(), droolsBlacklistErrorMessage.getMessage())) - .toList()).build(); + .toList()) + .build(); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/TypeMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/TypeMapper.java index 73e246e0a..db8db6f6e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/TypeMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/TypeMapper.java @@ -3,7 +3,6 @@ package com.iqser.red.service.persistence.management.v1.processor.utils; import java.util.function.BiConsumer; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; -import com.iqser.red.service.persistence.service.v1.api.shared.model.TypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type; public class TypeMapper implements BiConsumer { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java index 132397d52..c84e27301 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java @@ -1,5 +1,13 @@ package com.iqser.red.service.peristence.v1.server; +import java.io.IOException; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + import com.knecon.fforesight.swaggercommons.SpringDocProperties; import io.swagger.v3.oas.annotations.Hidden; @@ -8,14 +16,6 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.io.IOException; - @Slf4j @RestController @RequiredArgsConstructor diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java index e94a11325..f21b41907 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java @@ -3,7 +3,6 @@ package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; import com.iqser.red.service.persistence.service.v1.api.external.resource.CustomPermissionMappingResource; -import com.iqser.red.service.persistence.service.v1.api.external.resource.ViewedPagesResource; @FeignClient(name = "CustomPermissionClient", url = "http://localhost:${server.port}") public interface CustomPermissionClient extends CustomPermissionMappingResource { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java index e158bf918..a8b102c36 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java @@ -1,11 +1,8 @@ package com.iqser.red.service.peristence.v1.server.integration.client; -import java.util.Collections; - import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.cloud.openfeign.support.SpringEncoder; import org.springframework.context.annotation.Bean; -import org.springframework.http.MediaType; import org.springframework.web.client.RestTemplate; import feign.codec.Encoder; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SupportClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SupportClient.java index d645957d8..b780eeb44 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SupportClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SupportClient.java @@ -2,7 +2,6 @@ package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; -import com.iqser.red.service.persistence.service.v1.api.external.resource.ReanalysisResource; import com.iqser.red.service.persistence.service.v1.api.external.resource.SupportResource; @FeignClient(name = "SupportClient", url = "http://localhost:${server.port}") diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index 175e5ee92..563fb1298 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -66,21 +66,21 @@ public class FileTesterAndProvider { assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isGreaterThanOrEqualTo(1); fileManagementStorageService.saveEntityLog(dossier.getId(), - file.getFileId(), - new EntityLog(1, - 1, - List.of(EntityLogEntry.builder() - .id("annotationId") - .type("manual") - .value("value entry") - .entryType(EntryType.ENTITY) - .state(EntryState.APPLIED) - .build()), - null, - 0, - 0, - 0, - 0)); + file.getFileId(), + new EntityLog(1, + 1, + List.of(EntityLogEntry.builder() + .id("annotationId") + .type("manual") + .value("value entry") + .entryType(EntryType.ENTITY) + .state(EntryState.APPLIED) + .build()), + null, + 0, + 0, + 0, + 0)); fileManagementStorageService.storeObject(dossier.getId(), file.getFileId(), FileType.ORIGIN, new ByteArrayInputStream(objectMapper.writeValueAsBytes("bytes of the file"))); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java index dfae3f0a5..ab4a36866 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java @@ -199,7 +199,9 @@ public class ComponentOverrideTest extends AbstractPersistenceServerServiceTest .findAny() .get(); assertTrue(studyTitle.isOverridden()); - assertTrue(studyTitle.getComponentValues().stream().anyMatch(componentLogEntryValue -> componentLogEntryValue.getValue().equals(value))); + assertTrue(studyTitle.getComponentValues() + .stream() + .anyMatch(componentLogEntryValue -> componentLogEntryValue.getValue().equals(value))); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java index 50bacb882..208d7ae40 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java @@ -1,10 +1,5 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.MANAGE_ACL_PERMISSIONS; -import static com.iqser.red.service.persistence.service.v1.api.external.resource.CustomPermissionMappingResource.PERMISSION_REST_PATH; -import static com.iqser.red.service.persistence.service.v1.api.external.resource.CustomPermissionMappingResource.TARGET_OBJECT_VARIABLE; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - import java.util.ArrayList; import java.util.List; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java index fe3a917ca..349083e3b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java @@ -606,10 +606,10 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { UpdateEntries updateEntries = new UpdateEntries(null, entriesToDelete); UpdateEntries finalUpdateEntries = updateEntries; Assertions.assertDoesNotThrow(() -> dictionaryClient.updateEntries(createdType.getType(), - createdType.getDossierTemplateId(), - finalUpdateEntries, - null, - DictionaryEntryType.ENTRY)); + createdType.getDossierTemplateId(), + finalUpdateEntries, + null, + DictionaryEntryType.ENTRY)); updateEntries = new UpdateEntries(entriesToAdd, null); UpdateEntries finalUpdateEntries1 = updateEntries; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java index d5394986a..208b81d58 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java @@ -2,7 +2,6 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import org.junit.jupiter.api.Test; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java index 30f3f5cf6..fa65d9c33 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java @@ -23,20 +23,23 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.commons.jackson.ObjectMapperFactory; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ExportDownloadRequest; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateExportService; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.EntityTypeExportService; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.migration.RankDeDuplicationService; import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService; 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.DossierDeletionService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ComponentDefinitionPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateExportService; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.EntityTypeExportService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierStatusPersistenceService; @@ -50,7 +53,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist 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.dossiertemplate.CloneDossierTemplateRequest; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ExportDownloadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.TypeRankSummary; import com.iqser.red.storage.commons.service.StorageService; @@ -93,6 +95,10 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest { private RabbitTemplate rabbitTemplate; @MockBean private TypeRepository typeRepository; + @MockBean + private DossierDeletionService dossierDeletionService; + @MockBean + private DictionaryManagementService dictionaryManagementService; @MockBean private DossierTemplateImportService dossierTemplateImportService; @@ -125,6 +131,8 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest { legalBasisMappingPersistenceService, rulesPersistenceService, dictionaryPersistenceService, + dictionaryManagementService, + componentMappingService, typeRepository); dossierTemplateCloneService = new DossierTemplateCloneService(dossierTemplateRepository, legalBasisMappingPersistenceService, @@ -165,7 +173,8 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest { dossierTemplateManagementService = new DossierTemplateManagementService(dossierTemplateExportService, dossierTemplateImportService, dossierTemplatePersistenceService, - dossierTemplateCloneService); + dossierTemplateCloneService, + dossierDeletionService); rankDeDuplicationService = new RankDeDuplicationService(dossierTemplateManagementService, dictionaryPersistenceService); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneServiceTest.java index 37b71d4cd..698593428 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneServiceTest.java @@ -29,6 +29,7 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService; 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.DossierTemplateCloneService; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; @@ -98,6 +99,8 @@ public class DossierTemplateCloneServiceTest { @MockBean private ComponentDefinitionPersistenceService componentDefinitionPersistenceService; + @MockBean + private DictionaryManagementService dictionaryManagementService; private DossierTemplateCloneService dossierTemplateCloneService; @@ -114,6 +117,8 @@ public class DossierTemplateCloneServiceTest { legalBasisMappingPersistenceService, rulesPersistenceService, dictionaryPersistenceService, + dictionaryManagementService, + componentMappingService, typeRepository); ReflectionTestUtils.setField(dossierTemplatePersistenceService, "applicationType", "RedactManager"); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java index 3992bb4f2..ee377b7d3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java @@ -21,6 +21,7 @@ import org.springframework.mock.web.MockMultipartFile; import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; @@ -35,7 +36,7 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT public static final String DOSSIERTEMPLATES_PATH = "files/dossiertemplates/"; @Autowired - private DossierTemplateManagementService dossierTemplateManagementService; + private DossierTemplateImportService dossierTemplateImportService; @Autowired private DossierTemplateClient dossierTemplateClient; @@ -88,6 +89,7 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT } + @SneakyThrows @Test public void testDocumineDossierTemplateImport() { @@ -124,7 +126,7 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT private DossierTemplate testDossierTemplateImport(byte[] archive) { var request = ImportDossierTemplateRequest.builder().archive(archive).updateExistingDossierTemplate(false).userId("system").build(); - DossierTemplate dossierTemplate = dossierTemplateManagementService.importDossierTemplate(request); + DossierTemplate dossierTemplate = d.importDossierTemplate(request); assertThat(dossierTemplate).isNotNull(); assertThat(dossierTemplate.getId()).isNotBlank(); return dossierTemplate; @@ -146,9 +148,9 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT .userId("system") .dossierTemplateId(dossierTemplate.getId()) .build(); - DossierTemplate reimportedTemplate = dossierTemplateManagementService.importDossierTemplate(request); - assertThat(reimportedTemplate).isNotNull(); - assertThat(reimportedTemplate.getId()).isNotBlank(); + String reimportedTemplateId = dossierTemplateImportService.importDossierTemplate(request); + assertThat(reimportedTemplateId).isNotNull(); + assertThat(reimportedTemplateId).isNotBlank(); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 0bb0d8898..e9aa4fd33 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -49,10 +49,10 @@ import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkCl import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.ExportDownloadMessage; -import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.ExportDownloadMessageReceiver; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributesConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java index c6c01c5f3..0f79cc347 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java @@ -11,6 +11,8 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; @@ -50,9 +52,6 @@ import lombok.AccessLevel; import lombok.SneakyThrows; import lombok.experimental.FieldDefaults; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - @FieldDefaults(level = AccessLevel.PRIVATE) public class DownloadPreparationTest extends AbstractPersistenceServerServiceTest { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java index fcc4bb7d2..e207d0a4b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java @@ -6,18 +6,14 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail; -import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionType; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadRedactionFileStatusRepository; -import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatus; -import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; - import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import com.fasterxml.jackson.databind.ObjectMapper; +import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; +import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionType; import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; @@ -27,12 +23,13 @@ import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPers import com.iqser.red.service.persistence.management.v1.processor.model.DownloadJob; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadMessageReceiver; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadPreparationService; -import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadRequest; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadRedactionFileStatusRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadWithOptionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.RemoveDownloadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage; +import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import com.knecon.fforesight.tenantcommons.TenantContext; import feign.FeignException; @@ -99,10 +96,7 @@ public class DownloadTest extends AbstractPersistenceServerServiceTest { .fileIds(List.of(file2.getId())) .build()); - downloadMessageReceiver.receive(DownloadJob.builder() - .userId(userProvider.getUserId()) - .storageId(downloads.getStorageId()) - .build()); + downloadMessageReceiver.receive(DownloadJob.builder().userId(userProvider.getUserId()).storageId(downloads.getStorageId()).build()); var reportInfoId = downloads.getStorageId().substring(0, downloads.getStorageId().length() - 3) + "/REPORT_INFO.json"; storageService.storeJSONObject(TenantContext.getTenantId(), reportInfoId, new ArrayList<>()); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java index fddc04b51..876084aa4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java @@ -476,22 +476,22 @@ public class EntityLogMergeTest { var entityLog = new EntityLog(1, 1, Lists.newArrayList(EntityLogEntry.builder() - .id(entryId) - .type("manual") - .value("Image:Other") - .entryType(EntryType.IMAGE) - .state(EntryState.APPLIED) - .dictionaryEntry(false) - .positions(List.of(new Position(1, 1, 1, 1, 1))) - .manualChanges(manualChanges) - .build()), + .id(entryId) + .type("manual") + .value("Image:Other") + .entryType(EntryType.IMAGE) + .state(EntryState.APPLIED) + .dictionaryEntry(false) + .positions(List.of(new Position(1, 1, 1, 1, 1))) + .manualChanges(manualChanges) + .build()), Collections.emptyList(), 0, 0, 0, 0); - when(manualRedactionProviderService.getManualRedactions(any(), any())).thenReturn(manualRedactions); + when(manualRedactionProviderService.getManualRedactions(any(), any())).thenReturn(manualRedactions); when(fileStatusService.getStatus(FILE_ID)).thenReturn(FileModel.builder().excluded(false).dossierStatusId(dossierTemplateId).id(FILE_ID).build()); when(fileManagementStorageService.getEntityLog(dossierId, FILE_ID)).thenReturn(entityLog); when(dossierService.getDossierById(dossierId)).thenReturn(DossierEntity.builder().dossierTemplateId(dossierTemplateId).build()); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogResponseMapperTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogResponseMapperTest.java index 18071d102..e964559e2 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogResponseMapperTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogResponseMapperTest.java @@ -19,6 +19,7 @@ public class EntityLogResponseMapperTest { private final String ENTITY_LOG = "files/entity-log/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.ENTITY_LOG.json"; + @Test @SneakyThrows public void testEntityLogMapper() { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileExchangeImportExportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileExchangeImportExportTest.java index 812bb0a10..7530e2adf 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileExchangeImportExportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileExchangeImportExportTest.java @@ -31,12 +31,12 @@ import org.springframework.util.FileSystemUtils; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; -import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.ExportDownloadMessage; -import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateExportService; +import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.FileExchangeExportService; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.FileExchangeImportService; +import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileExchangeExportRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ImportDossierTemplateRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index 3d597732e..1284cba79 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -718,7 +718,6 @@ public class FileTest extends AbstractPersistenceServerServiceTest { var fileId = Base64.encodeBase64String((dossier.getId() + fileName).getBytes(StandardCharsets.UTF_8)); var malformedCsvFile = new MockMultipartFile(fileName + ".csv", fileName + ".csv", "text/csv", malformedCsvContent.getBytes()); - fileManagementStorageService.storeObject(dossier.getId(), fileId, FileType.UNTOUCHED, new ByteArrayInputStream("test".getBytes(StandardCharsets.UTF_8))); when(fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(anyString())).thenReturn(FileAttributesGeneralConfigurationEntity.builder() .delimiter(",") diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java index 791c2da89..2fc90f860 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java @@ -5,8 +5,8 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.List; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import com.iqser.red.service.peristence.v1.server.integration.client.NotificationPreferencesClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java index 4a8b6c7cc..bcd4bdd68 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java @@ -1,11 +1,9 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doNothing; import java.util.List; -import java.util.Set; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -21,7 +19,6 @@ import com.iqser.red.service.peristence.v1.server.integration.service.ReportTemp import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadWithOptionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.ReportTemplateUpdateRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; import feign.FeignException; @@ -365,6 +362,7 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { } + @Test public void testDownloadDossierAndDeleteReportTemplate() { // Arrange @@ -390,10 +388,10 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(firstTemplate.getFileName()).isEqualTo(fileName); downloadClient.prepareDownload(PrepareDownloadWithOptionRequest.builder() - .reportTemplateIds(List.of(firstTemplate.getTemplateId())) - .dossierId(dossier.getId()) - .fileIds(List.of(file.getId())) - .build()); + .reportTemplateIds(List.of(firstTemplate.getTemplateId())) + .dossierId(dossier.getId()) + .fileIds(List.of(file.getId())) + .build()); reportTemplateClient.deleteTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId()); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java index df53f3842..cb58e7c98 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java @@ -72,8 +72,7 @@ public class RulesTest extends AbstractPersistenceServerServiceTest { // case 1: dry-run true, no error messages just warning messages when(redactionClient.testRules(new RuleValidationModel(request.getRuleFileType().name(), request.getRules()))).thenReturn(DroolsValidation.builder() .syntaxErrorMessages(Collections.emptyList()) - .deprecatedWarnings( - warningMessages) + .deprecatedWarnings(warningMessages) .build()); ResponseEntity response = rulesClient.upload(request); @@ -88,8 +87,7 @@ public class RulesTest extends AbstractPersistenceServerServiceTest { // case 2: dry-run true, error messages and warning messages when(redactionClient.testRules(new RuleValidationModel(request.getRuleFileType().name(), request.getRules()))).thenReturn(DroolsValidation.builder() .syntaxErrorMessages(errorMessages) - .deprecatedWarnings( - warningMessages) + .deprecatedWarnings(warningMessages) .build()); response = rulesClient.upload(request); @@ -117,8 +115,7 @@ public class RulesTest extends AbstractPersistenceServerServiceTest { // case 1: dry-run false, error messages and warning messages when(redactionClient.testRules(new RuleValidationModel(request.getRuleFileType().name(), request.getRules()))).thenReturn(DroolsValidation.builder() .syntaxErrorMessages(errorMessages) - .deprecatedWarnings( - warningMessages) + .deprecatedWarnings(warningMessages) .build()); try { rulesClient.upload(request); @@ -132,8 +129,7 @@ public class RulesTest extends AbstractPersistenceServerServiceTest { // case 2: dry-run false, no error messages just warning messages when(redactionClient.testRules(new RuleValidationModel(request.getRuleFileType().name(), request.getRules()))).thenReturn(DroolsValidation.builder() .syntaxErrorMessages(Collections.emptyList()) - .deprecatedWarnings( - warningMessages) + .deprecatedWarnings(warningMessages) .build()); ResponseEntity response = rulesClient.upload(request); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SoftDeleteTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SoftDeleteTest.java index a1e69b19a..e35fde62e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SoftDeleteTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SoftDeleteTest.java @@ -9,6 +9,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import org.jetbrains.annotations.NotNull; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; @@ -29,9 +31,8 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemp import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; + import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.NotNull; -import org.junit.jupiter.api.Test; @Slf4j public class SoftDeleteTest extends AbstractPersistenceServerServiceTest { @@ -67,17 +68,27 @@ public class SoftDeleteTest extends AbstractPersistenceServerServiceTest { var allForceRedactions = forceRedactionRepository.findAll(); var allResizes = resizeRedactionRepository.findAll(); - assertThat(allComments.stream().map(CommentEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); - assertThat(allManualRedactions.stream().map(ManualRedactionEntryEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsExactly(deletedDossier.get() - .getSoftDeletedTime()); - assertThat(allIdRemovals.stream().map(IdRemovalEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); - assertThat(allRecategorizations.stream().map(ManualRecategorizationEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsExactly(deletedDossier.get() - .getSoftDeletedTime()); - assertThat(allLegalBasis.stream().map(ManualLegalBasisChangeEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsExactly(deletedDossier.get() - .getSoftDeletedTime()); - assertThat(allForceRedactions.stream().map(ManualForceRedactionEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsExactly(deletedDossier.get() - .getSoftDeletedTime()); - assertThat(allResizes.stream().map(ManualResizeRedactionEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); + assertThat(allComments.stream() + .map(CommentEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); + assertThat(allManualRedactions.stream() + .map(ManualRedactionEntryEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); + assertThat(allIdRemovals.stream() + .map(IdRemovalEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); + assertThat(allRecategorizations.stream() + .map(ManualRecategorizationEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); + assertThat(allLegalBasis.stream() + .map(ManualLegalBasisChangeEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); + assertThat(allForceRedactions.stream() + .map(ManualForceRedactionEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); + assertThat(allResizes.stream() + .map(ManualResizeRedactionEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsExactly(deletedDossier.get().getSoftDeletedTime()); long startUndeleteTime = System.currentTimeMillis(); dossierManagementService.undeleteDossiers(Set.of(dossier.getDossierId())); @@ -91,13 +102,27 @@ public class SoftDeleteTest extends AbstractPersistenceServerServiceTest { allForceRedactions = forceRedactionRepository.findAll(); allResizes = resizeRedactionRepository.findAll(); - assertThat(allComments.stream().map(CommentEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsOnlyNulls(); - assertThat(allManualRedactions.stream().map(ManualRedactionEntryEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsOnlyNulls(); - assertThat(allIdRemovals.stream().map(IdRemovalEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsOnlyNulls(); - assertThat(allRecategorizations.stream().map(ManualRecategorizationEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsOnlyNulls(); - assertThat(allLegalBasis.stream().map(ManualLegalBasisChangeEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsOnlyNulls(); - assertThat(allForceRedactions.stream().map(ManualForceRedactionEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsOnlyNulls(); - assertThat(allResizes.stream().map(ManualResizeRedactionEntity::getSoftDeletedTime).collect(Collectors.toSet())).containsOnlyNulls(); + assertThat(allComments.stream() + .map(CommentEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsOnlyNulls(); + assertThat(allManualRedactions.stream() + .map(ManualRedactionEntryEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsOnlyNulls(); + assertThat(allIdRemovals.stream() + .map(IdRemovalEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsOnlyNulls(); + assertThat(allRecategorizations.stream() + .map(ManualRecategorizationEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsOnlyNulls(); + assertThat(allLegalBasis.stream() + .map(ManualLegalBasisChangeEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsOnlyNulls(); + assertThat(allForceRedactions.stream() + .map(ManualForceRedactionEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsOnlyNulls(); + assertThat(allResizes.stream() + .map(ManualResizeRedactionEntity::getSoftDeletedTime) + .collect(Collectors.toSet())).containsOnlyNulls(); long startHardDeleteTime = System.currentTimeMillis(); dossierManagementService.hardDeleteDossiers(Set.of(dossier.getDossierId())); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java index 807410667..83a6e1fb4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java @@ -7,24 +7,17 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.when; - -import java.util.Set; import org.assertj.core.util.Lists; import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.mock.mockito.MockBean; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; -import com.iqser.red.service.persistence.management.v1.processor.service.DossierService; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.UpdateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.Colors; @@ -195,6 +188,4 @@ public class TypeTest extends AbstractPersistenceServerServiceTest { } - - } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java index 1e7dc5242..35aed05c4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java @@ -13,7 +13,6 @@ import com.iqser.red.service.peristence.v1.server.integration.service.UserProvid import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.ViewedPagesRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ViewedPage; -import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; public class ViewedPagesTest extends AbstractPersistenceServerServiceTest { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java index 64a146530..4df6461bc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java @@ -108,7 +108,7 @@ public class EntityPerformanceTest extends AbstractPersistenceServerServiceTest var template = dossierTemplateTesterAndProvider.provideTestTemplate("test"); var type1 = typeProvider.testAndProvideType(template, null, "t1"); - var type2 = typeProvider.testAndProvideType(template, null, "t2", false,50); + var type2 = typeProvider.testAndProvideType(template, null, "t2", false, 50); List type1Entries = entries.stream() .map(s -> new DictionaryEntryEntity(0, s, 1, false, type1.getTypeId())) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java index 38635fe6d..485951a59 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java @@ -7,8 +7,6 @@ import java.util.List; import java.util.Set; import java.util.UUID; -import jakarta.transaction.Transactional; - import org.assertj.core.util.Sets; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.TestingAuthenticationToken; @@ -43,6 +41,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; +import jakarta.transaction.Transactional; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/StorageToMongoDBPerformanceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/StorageToMongoDBPerformanceTest.java index 0db90f601..29ed2a826 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/StorageToMongoDBPerformanceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/StorageToMongoDBPerformanceTest.java @@ -1,7 +1,6 @@ package com.iqser.red.service.peristence.v1.server.integration.tests.performance; import java.io.FileInputStream; -import java.io.IOException; import java.util.LinkedList; import java.util.concurrent.CompletableFuture; @@ -22,6 +21,7 @@ import com.iqser.red.storage.commons.service.StorageService; import com.knecon.fforesight.tenantcommons.TenantContext; import lombok.SneakyThrows; + @Disabled public class StorageToMongoDBPerformanceTest extends AbstractPersistenceServerServiceTest { @@ -42,7 +42,6 @@ public class StorageToMongoDBPerformanceTest extends AbstractPersistenceServerSe @SneakyThrows public void setUp() { - } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatus.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatus.java index d3baf9030..32d3013db 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatus.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatus.java @@ -151,6 +151,7 @@ public class FileStatus { @Schema(description = "Shows which versions of each mapping the last analysis has been performed") private Map componentMappingVersions; + @Schema(description = "Shows if this file has been OCRed by us. Last Time of OCR.") public OffsetDateTime getLastOCRTime() { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/componentlog/ComponentLogEntry.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/componentlog/ComponentLogEntry.java index 40cb541aa..60c0404f3 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/componentlog/ComponentLogEntry.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/componentlog/ComponentLogEntry.java @@ -19,4 +19,5 @@ public class ComponentLogEntry { String name; List componentValues; boolean overridden; + } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/DuplicatedTextRange.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/DuplicatedTextRange.java index 1a4b6219a..db4941875 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/DuplicatedTextRange.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/DuplicatedTextRange.java @@ -18,4 +18,5 @@ public class DuplicatedTextRange { int start; int end; + } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/EntityLogChanges.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/EntityLogChanges.java index dcf5ee6fc..61d0f23e4 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/EntityLogChanges.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/EntityLogChanges.java @@ -18,7 +18,9 @@ public class EntityLogChanges { private List newEntityLogEntries = new ArrayList<>(); private List updatedEntityLogEntries = new ArrayList<>(); + public boolean hasChanges() { + return !newEntityLogEntries.isEmpty() || !updatedEntityLogEntries.isEmpty(); } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRedactionResponse.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRedactionResponse.java index 9f56198db..fa88b8a75 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRedactionResponse.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRedactionResponse.java @@ -14,4 +14,5 @@ import lombok.NoArgsConstructor; public class ManualRedactionResponse { private List manualAddResponses; + } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/dossier/file/FileType.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/dossier/file/FileType.java index 1a5850ef2..3a3f3b55b 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/dossier/file/FileType.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/dossier/file/FileType.java @@ -31,7 +31,7 @@ public enum FileType { // only for export @Deprecated(forRemoval = true) // still needed for migration to delete existing ones, can be removed as soon as migration is done - SECTION_GRID(".json"); + SECTION_GRID(".json"); @Getter private final String extension; diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/ComponentLogDocumentMapper.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/ComponentLogDocumentMapper.java index 5d251f240..652c04cfc 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/ComponentLogDocumentMapper.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/ComponentLogDocumentMapper.java @@ -21,7 +21,9 @@ public interface ComponentLogDocumentMapper { @Mapping(source = "components", target = "componentLogEntries") ComponentLog fromComponentLogDocument(ComponentLogDocument componentLogDocument); + default List toComponentDocuments(String dossierId, String fileId, List componentLogEntries) { + List componentDocuments = new ArrayList<>(); String componentLogId = getComponentLogId(dossierId, fileId); diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java index 57c55082d..ef6031f00 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java @@ -21,15 +21,16 @@ public interface EntityLogDocumentMapper { @Mapping(target = "entityLogEntry", source = "entityLogEntryDocuments") EntityLog fromLogDocument(EntityLogDocument entityLogDocument); + @Mapping(target = "id", source = "entityLogEntryDocument.entryId") EntityLogEntry fromLogEntryDocument(EntityLogEntryDocument entityLogEntryDocument); + List toLogEntryDocuments(List entityLogEntries); - @Mapping(target = "id", expression = "java(getLogId(dossierId, fileId))") - @Mapping(target = "entityLogEntryDocuments", expression ="java(toEntryDocumentList(getLogId(dossierId, fileId), entityLog.getEntityLogEntry()))") + @Mapping(target = "entityLogEntryDocuments", expression = "java(toEntryDocumentList(getLogId(dossierId, fileId), entityLog.getEntityLogEntry()))") EntityLogDocument toLogDocument(String dossierId, String fileId, EntityLog entityLog); diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentDocumentRepository.java index 01e6adb43..982088459 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentDocumentRepository.java @@ -15,12 +15,15 @@ public interface ComponentDocumentRepository extends MongoRepository findComponentDocumentByName(String componentLogId, String componentName); + @Query(value = "{ 'componentLogId': ?0 }") List findByComponentLogId(String componentLogId); + @Query(value = "{ 'componentLogId': ?0 }", fields = "{ 'overrideValues': 0 }") List findWithoutOverrideValuesByDossierIdAndFileId(String componentLogId);