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 f4b80f134..e3ed0b88a 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 @@ -188,8 +188,7 @@ public class ManualRedactionController implements ManualRedactionResource { @PreAuthorize("hasAuthority('" + DO_MANUAL_REDACTION + "')") public ManualRedactionResponse removeRedactionBulk(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody Set removeRedactionRequests, - @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed) { + @RequestBody Set removeRedactionRequests) { var dossier = dossierManagementService.getDossierById(dossierId, false, false); accessControlService.checkAccessPermissionsToDossier(dossierId); @@ -205,7 +204,7 @@ public class ManualRedactionController implements ManualRedactionResource { fileId, removeRedactionRequests, dossier.getDossierTemplateId(), - includeUnprocessed); + true); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) @@ -268,8 +267,7 @@ public class ManualRedactionController implements ManualRedactionResource { @PreAuthorize("hasAuthority('" + DO_MANUAL_REDACTION + "')") public ManualRedactionResponse recategorizeBulk(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody Set recategorizationRequests, - @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed) { + @RequestBody Set recategorizationRequests) { var dossier = dossierManagementService.getDossierById(dossierId, false, false); accessControlService.checkAccessPermissionsToDossier(dossierId); @@ -280,7 +278,7 @@ public class ManualRedactionController implements ManualRedactionResource { fileId, dossier, recategorizationRequests, - includeUnprocessed); + true); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) @@ -297,14 +295,13 @@ public class ManualRedactionController implements ManualRedactionResource { @PreAuthorize("hasAuthority('" + DO_MANUAL_REDACTION + "')") public ManualRedactionResponse resizeRedactionBulk(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody Set resizeRedactionRequests, - @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed) { + @RequestBody Set resizeRedactionRequests) { accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId); accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - List responseList = manualRedactionService.addResizeRedaction(dossierId, fileId, resizeRedactionRequests, includeUnprocessed); + List responseList = manualRedactionService.addResizeRedaction(dossierId, fileId, resizeRedactionRequests, true); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) 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/SupportController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java index 66a222fcd..7ab24cdd7 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java @@ -20,6 +20,7 @@ import org.springframework.web.multipart.MultipartFile; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.FileExchangeImportService; +import com.iqser.red.service.persistence.management.v1.processor.migration.MigrationController; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusMapper; import com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisService; diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/DossierTemplateResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/DossierTemplateResource.java index fcc2d7012..c57d1fb6e 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/DossierTemplateResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/DossierTemplateResource.java @@ -95,35 +95,36 @@ public interface DossierTemplateResource { @ResponseStatus(value = HttpStatus.NO_CONTENT) @PostMapping(value = DOSSIER_TEMPLATE_PATH + IMPORT_PATH, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - @Operation(summary = "Receives an archive to import", description = "None") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Archive have successfully imported"), @ApiResponse(responseCode = "400", description = "Import process stuck in one of the steps:" - + "0 - Reading the archive content\n" - + "\n" - + "1 - store information about the dossier template\n" - + "\n" - + "2 - store the colors\n" - + "\n" - + "3 - store the watermarks\n" - + "\n" - + "4 - store the dossier status\n" - + "\n" - + "5 - store the dossier attributes\n" - + "\n" - + "6 - store the file attributes\n" - + "\n" - + "7 - store the report templates\n" - + "\n" - + "8 - store the legal basis\n" - + "\n" - + "9 - store the file attribute configuration\n" - + "\n" - + "10 - store the component definitions\n" - + "\n" - + "11 - store the component mappings\n" - + "\n" - + "12 - store the types and entities\n" - + "\n" - + "13 - store the rules and component rules"), @ApiResponse(responseCode = "404", description = "The dossier template to update does not exist")}) + @Operation(summary = "Receives an archive to import", description = """ + Import process stuck in one of the steps:" + 0 - Reading the archive content + + 1 - store information about the dossier template + + 2 - store the colors + + 3 - store the watermarks + + 4 - store the dossier status + + 5 - store the dossier attributes + + 6 - store the file attributes + + 7 - store the report templates + + 8 - store the legal basis + + 9 - store the file attribute configuration + + 10 - store the component definitions + + 11 - store the component mappings + + 12 - store the types and entities + + 13 - store the rules and component rules""") + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Archive have successfully imported"), @ApiResponse(responseCode = "400"), @ApiResponse(responseCode = "404", description = "The dossier template to update does not exist")}) DossierTemplateModel importDossierTemplate(@Schema(type = "string", format = "binary", name = "file") @RequestPart(name = "file") MultipartFile file, @RequestParam(value = DOSSIER_TEMPLATE_ID, required = false) String dossierTemplateId, @RequestParam(value = "updateExistingDossierTemplate", required = false, defaultValue = "false") boolean updateExistingDossierTemplate); diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ManualRedactionResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ManualRedactionResource.java index a6163254c..f4993d97e 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ManualRedactionResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ManualRedactionResource.java @@ -1,6 +1,5 @@ package com.iqser.red.service.persistence.service.v1.api.external.resource; -import java.util.List; import java.util.Set; import org.springframework.http.HttpStatus; @@ -15,7 +14,6 @@ import org.springframework.web.bind.annotation.ResponseStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.CommentResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AnnotationComments; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualAddResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactionResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddCommentRequestModel; @@ -105,8 +103,7 @@ public interface ManualRedactionResource { @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Dossier or file not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) ManualRedactionResponse removeRedactionBulk(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody Set removeRedactionRequests, - @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed); + @RequestBody Set removeRedactionRequests); @ResponseStatus(value = HttpStatus.OK) @@ -143,8 +140,7 @@ public interface ManualRedactionResource { @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Dossier or file not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) ManualRedactionResponse recategorizeBulk(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody Set recategorizationRequests, - @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed); + @RequestBody Set recategorizationRequests); @ResponseStatus(value = HttpStatus.OK) @@ -156,8 +152,7 @@ public interface ManualRedactionResource { @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Dossier or file not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) ManualRedactionResponse resizeRedactionBulk(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody Set resizeRedactionRequests, - @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed); + @RequestBody Set resizeRedactionRequests); @ResponseStatus(value = HttpStatus.OK) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualAddExportModel.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualAddExportModel.java index d61148410..d69dcc60a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualAddExportModel.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualAddExportModel.java @@ -11,13 +11,11 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import lombok.AccessLevel; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; @Data -@Builder @NoArgsConstructor @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualForceExportModel.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualForceExportModel.java index d5ed82b60..895297355 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualForceExportModel.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualForceExportModel.java @@ -10,7 +10,6 @@ import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; @Data -@Builder @NoArgsConstructor @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualLegalBasisChangeExportModel.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualLegalBasisChangeExportModel.java index a82fe00e8..2db46476a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualLegalBasisChangeExportModel.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualLegalBasisChangeExportModel.java @@ -8,7 +8,6 @@ import lombok.Data; import lombok.NoArgsConstructor; @Data -@Builder @NoArgsConstructor @AllArgsConstructor public class ManualLegalBasisChangeExportModel { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualRecategorizationExportModel.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualRecategorizationExportModel.java index 6a1179c58..3e6706ff4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualRecategorizationExportModel.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualRecategorizationExportModel.java @@ -12,7 +12,6 @@ import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; @Data -@Builder @NoArgsConstructor @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualRemoveExportModel.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualRemoveExportModel.java index 458b9babb..8b1d3f677 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualRemoveExportModel.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualRemoveExportModel.java @@ -10,7 +10,6 @@ import lombok.Data; import lombok.NoArgsConstructor; @Data -@Builder @NoArgsConstructor @AllArgsConstructor public class ManualRemoveExportModel { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualResizeExportModel.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualResizeExportModel.java index 673b06f0e..3d67538ca 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualResizeExportModel.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/models/manualchanges/ManualResizeExportModel.java @@ -14,7 +14,6 @@ import lombok.NoArgsConstructor; import lombok.experimental.FieldDefaults; @Data -@Builder @NoArgsConstructor @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) 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..d7a243804 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 @@ -12,7 +12,6 @@ import lombok.NoArgsConstructor; @Embeddable @Data -@Builder @NoArgsConstructor @AllArgsConstructor public class AnnotationEntityId implements Serializable { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/IdRemovalEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/IdRemovalEntity.java index cbf2dd75d..a3c1bd81a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/IdRemovalEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/IdRemovalEntity.java @@ -17,14 +17,12 @@ import jakarta.persistence.FetchType; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Entity @Table(name = "id_removal") @Data -@Builder @AllArgsConstructor @NoArgsConstructor public class IdRemovalEntity implements IBaseAnnotation { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualForceRedactionEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualForceRedactionEntity.java index 8bfa1beaa..6edc047e3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualForceRedactionEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualForceRedactionEntity.java @@ -15,7 +15,7 @@ import lombok.Data; import lombok.NoArgsConstructor; @Data -@Builder +//@Builder // disabled, cause the ManualChangesExportMapper will not map addToDictionary and addToAllDossiers at all @AllArgsConstructor @NoArgsConstructor @Entity diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java index fd9a9e2e5..eb1eb331a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java @@ -10,12 +10,10 @@ import jakarta.persistence.Entity; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data -@Builder @AllArgsConstructor @NoArgsConstructor @Entity diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java index 461e3b320..2fe46c38e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java @@ -17,12 +17,10 @@ import jakarta.persistence.Entity; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data -@Builder @AllArgsConstructor @NoArgsConstructor @Entity diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRedactionEntryEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRedactionEntryEntity.java index 030752a2b..3b80bc86d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRedactionEntryEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRedactionEntryEntity.java @@ -22,13 +22,11 @@ import jakarta.persistence.FetchType; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @Entity -@Builder @AllArgsConstructor @NoArgsConstructor @Table(name = "manual_redaction") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualResizeRedactionEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualResizeRedactionEntity.java index 3f4effe1e..ec4978eee 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualResizeRedactionEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualResizeRedactionEntity.java @@ -19,12 +19,10 @@ import jakarta.persistence.FetchType; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data -@Builder @AllArgsConstructor @NoArgsConstructor @Entity 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..d50a0a558 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 @@ -73,65 +73,76 @@ public interface ManualChangesExportMapper { @AfterMapping default void setFileStatusAndId(ManualLegalBasisChangeExportModel model, - @MappingTarget ManualLegalBasisChangeEntity.ManualLegalBasisChangeEntityBuilder entity, - @Context FileEntity file, @Context String userId) { + @MappingTarget ManualLegalBasisChangeEntity entity, + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); - entity.id(annotationEntityId); - entity.fileStatus(file); - entity.user(userId); + entity.setId(annotationEntityId); + entity.setFileStatus(file); + entity.setUser(userId); } @AfterMapping default void setFileStatusAndId(ManualRecategorizationExportModel model, - @MappingTarget ManualRecategorizationEntity.ManualRecategorizationEntityBuilder entity, - @Context FileEntity file, @Context String userId) { + @MappingTarget ManualRecategorizationEntity entity, + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); - entity.id(annotationEntityId); - entity.fileStatus(file); - entity.user(userId); + entity.setId(annotationEntityId); + entity.setFileStatus(file); + entity.setUser(userId); } @AfterMapping - default void setFileStatusAndId(ManualAddExportModel model, @MappingTarget ManualRedactionEntryEntity.ManualRedactionEntryEntityBuilder entity, @Context FileEntity file, @Context String userId) { + default void setFileStatusAndId(ManualAddExportModel model, + @MappingTarget ManualRedactionEntryEntity entity, + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); - entity.id(annotationEntityId); - entity.fileStatus(file); - entity.user(userId); + entity.setId(annotationEntityId); + entity.setFileStatus(file); + entity.setUser(userId); } @AfterMapping - default void setFileStatusAndId(ManualResizeExportModel model, @MappingTarget ManualResizeRedactionEntity.ManualResizeRedactionEntityBuilder entity, @Context FileEntity file, @Context String userId) { + default void setFileStatusAndId(ManualResizeExportModel model, + @MappingTarget ManualResizeRedactionEntity entity, + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); - entity.id(annotationEntityId); - entity.fileStatus(file); - entity.user(userId); + entity.setId(annotationEntityId); + entity.setFileStatus(file); + entity.setUser(userId); } @AfterMapping - default void setFileStatusAndId(ManualForceExportModel model, @MappingTarget ManualForceRedactionEntity.ManualForceRedactionEntityBuilder entity, @Context FileEntity file, @Context String userId) { + default void setFileStatusAndId(ManualForceExportModel model, + @MappingTarget ManualForceRedactionEntity entity, + @Context FileEntity file, + @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); - entity.id(annotationEntityId); - entity.fileStatus(file); - entity.user(userId); + entity.setId(annotationEntityId); + entity.setFileStatus(file); + entity.setUser(userId); } @AfterMapping - default void setFileStatusAndId(ManualRemoveExportModel model, @MappingTarget IdRemovalEntity.IdRemovalEntityBuilder entity, @Context FileEntity file, @Context String userId) { + default void setFileStatusAndId(ManualRemoveExportModel model, @MappingTarget IdRemovalEntity entity, @Context FileEntity file, @Context String userId) { AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); - entity.id(annotationEntityId); - entity.fileStatus(file); - entity.user(userId); + entity.setId(annotationEntityId); + entity.setFileStatus(file); + entity.setUser(userId); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationManualChangesUpdateService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationManualChangesUpdateService.java index cfdcfbd6f..ddb6ba85e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationManualChangesUpdateService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationManualChangesUpdateService.java @@ -3,6 +3,7 @@ package com.iqser.red.service.persistence.management.v1.processor.migration; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import org.springframework.stereotype.Service; @@ -12,8 +13,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.model.ManualChangesQueryOptions; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.AddRedactionPersistenceService; -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.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; import lombok.RequiredArgsConstructor; @@ -39,26 +38,27 @@ public class SaasMigrationManualChangesUpdateService { if (unprocessedManualAdd.isAddToDictionary() || unprocessedManualAdd.isAddToAllDossiers()) { // copy pending dict change to a new one with a different id. Can't reuse the same one, as it's the primary key of the table. // It has no functionality, its only there, such that the UI can show a pending change. - ManualRedactionEntryEntity pendingDictAdd = ManualRedactionEntryEntity.builder() - .id(buildSecondaryId(unprocessedManualAdd.getId(), fileId)) - .user(unprocessedManualAdd.getUser()) - .typeId(unprocessedManualAdd.getTypeId()) - .value(unprocessedManualAdd.getValue()) - .reason(unprocessedManualAdd.getReason()) - .legalBasis(unprocessedManualAdd.getLegalBasis()) - .section(unprocessedManualAdd.getSection()) - .rectangle(unprocessedManualAdd.isRectangle()) - .addToDictionary(unprocessedManualAdd.isAddToDictionary()) - .addToAllDossiers(unprocessedManualAdd.isAddToAllDossiers()) - .dictionaryEntryType(DictionaryEntryType.ENTRY) - .requestDate(unprocessedManualAdd.getRequestDate()) - .positions(new ArrayList<>(unprocessedManualAdd.getPositions())) // copy to new List - .fileStatus(unprocessedManualAdd.getFileStatus()) - .textBefore(unprocessedManualAdd.getTextBefore()) - .textAfter(unprocessedManualAdd.getTextAfter()) - .sourceId(unprocessedManualAdd.getSourceId()) - .typeIdsOfModifiedDictionaries(unprocessedManualAdd.getTypeIdsOfModifiedDictionaries()) - .build(); + ManualRedactionEntryEntity pendingDictAdd = new ManualRedactionEntryEntity(buildSecondaryId(unprocessedManualAdd.getId(), fileId), + unprocessedManualAdd.getUser(), + unprocessedManualAdd.getTypeId(), + unprocessedManualAdd.getValue(), + unprocessedManualAdd.getReason(), + unprocessedManualAdd.getLegalBasis(), + unprocessedManualAdd.getSection(), + unprocessedManualAdd.isRectangle(), + unprocessedManualAdd.isAddToDictionary(), + unprocessedManualAdd.isAddToAllDossiers(), + unprocessedManualAdd.isAddToDossierDictionary(), + DictionaryEntryType.ENTRY, + unprocessedManualAdd.getRequestDate(), + null, + null, + new ArrayList<>(unprocessedManualAdd.getPositions()), + unprocessedManualAdd.getFileStatus(), + unprocessedManualAdd.getTextBefore(), + unprocessedManualAdd.getTextAfter(), + unprocessedManualAdd.getSourceId(), + new HashSet<>(unprocessedManualAdd.getTypeIdsOfModifiedDictionaries())); addRedactionPersistenceService.update(pendingDictAdd); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java index 59a74916d..11eab40a3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java @@ -380,7 +380,7 @@ public class SaasMigrationService implements TenantSyncService { private AnnotationEntityId buildAnnotationId(String fileId, String annotationId) { - return AnnotationEntityId.builder().fileId(fileId).annotationId(annotationId).build(); + return new AnnotationEntityId(annotationId, fileId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualChangesReorderingMigration23.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualChangesReorderingMigration23.java new file mode 100644 index 000000000..2f7b90b76 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualChangesReorderingMigration23.java @@ -0,0 +1,90 @@ +package com.iqser.red.service.persistence.management.v1.processor.migration.migrations; + +import java.time.OffsetDateTime; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.migration.Migration; +import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.AddRedactionPersistenceService; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualChange; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.EntityLogEntryDocumentRepository; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.projections.EntryWithManualChangesProjection; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class ManualChangesReorderingMigration23 extends Migration { + + private static final String NAME = "Migration for reordering mixed up manual changes"; + private static final long VERSION = 28; + private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + private final AddRedactionPersistenceService addRedactionPersistenceService; + private final FileStatusService fileStatusService; + + + public ManualChangesReorderingMigration23(EntityLogEntryDocumentRepository entityLogEntryDocumentRepository, + AddRedactionPersistenceService addRedactionPersistenceService, + FileStatusService fileStatusService) { + + super(NAME, VERSION); + this.entityLogEntryDocumentRepository = entityLogEntryDocumentRepository; + this.addRedactionPersistenceService = addRedactionPersistenceService; + this.fileStatusService = fileStatusService; + } + + + @Override + protected void migrate() { + + log.info("Searching for entityLogEntries of type ENTITY with state APPLIED and no legalbasis"); + List entriesWithManualChanges = entityLogEntryDocumentRepository.findAppliedEntitiesWhereLegalBasisEmpty(); + log.info("Found {} applied entries with no legal basis", entriesWithManualChanges.size()); + int numberOfChanged = 0; + Set affectedFiles = new HashSet<>(); + for (EntryWithManualChangesProjection entry : entriesWithManualChanges) { + if (entry.getManualChanges().isEmpty()) { + continue; + } + Optional optionalAdd = entry.getManualChanges() + .stream() + .filter(mc -> mc.getManualRedactionType().equals(ManualRedactionType.ADD)) + .findFirst(); + if (optionalAdd.isEmpty()) { + continue; + } + ManualChange add = optionalAdd.get(); + ManualChange first = entry.getManualChanges() + .get(0); + if (add.equals(first)) { + continue; + } + OffsetDateTime firstTimestamp = first.getRequestedDate().minusSeconds(1); + String dossierId = entry.getEntityLogId().split("/")[0]; + String fileId = entry.getEntityLogId().split("/")[1]; + int i = addRedactionPersistenceService.updateRequestDate(fileId, entry.getEntryId(), firstTimestamp); + if (i != 0) { + affectedFiles.add(new FileAndDossier(fileId, dossierId)); + numberOfChanged += i; + } + } + log.info("Updated request date of {} manual add redactions in {} files.", numberOfChanged, affectedFiles.size()); + log.info("Reanalyzing affected files"); + for (FileAndDossier affectedFile : affectedFiles) { + fileStatusService.setStatusReprocess(affectedFile.dossierId(), affectedFile.fileId(), false); + } + + } + + + private record FileAndDossier(String fileId, String dossierId) { + + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/MigrateImportedRedactionsFiles17.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/MigrateImportedRedactionsFiles17.java index 1fbd780fb..61deda566 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/MigrateImportedRedactionsFiles17.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/MigrateImportedRedactionsFiles17.java @@ -1,6 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.migration.migrations; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -14,7 +13,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.FileMan import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Position; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedaction; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactionsPerPage; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/NerServiceRequest.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/NerServiceRequest.java index f7a0b05fe..41bffa4cf 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/NerServiceRequest.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/NerServiceRequest.java @@ -16,6 +16,7 @@ public class NerServiceRequest { public static final String TARGET_FILE_EXTENSION = FileType.SIMPLIFIED_TEXT + FileType.SIMPLIFIED_TEXT.getExtension() + ".gz"; public static final String RESPONSE_FILE_EXTENSION = FileType.NER_ENTITIES + FileType.NER_ENTITIES.getExtension() + ".gz"; + private String dossierTemplateId; private String dossierId; private String fileId; private String targetFileExtension; 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..20769f8d8 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 @@ -194,4 +194,10 @@ public class FileStatusManagementService { fileStatusService.setExcludedPages(fileId, excludedPages); } + + public List findAllByIds(Set fileIds) { + + return fileStatusService.findAllByIds(fileIds); + } + } 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 7668cad92..e05d5c06a 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 @@ -281,7 +281,7 @@ public class FileStatusService { if (settings.isNerServiceEnabled() && !fileManagementStorageService.objectExists(dossierId, fileId, FileType.NER_ENTITIES)) { log.debug("Add file: {} from dossier {} to NER queue", fileId, dossierId); - addToNerQueue(dossierId, fileId); + addToNerQueue(dossier.getDossierTemplateId(), dossierId, fileId); sendReadOnlyAnalysisEvent(dossierId, fileId, fileEntity); return; } @@ -467,11 +467,12 @@ public class FileStatusService { } - protected void addToNerQueue(String dossierId, String fileId) { + protected void addToNerQueue(String dossierTemplateId, String dossierId, String fileId) { setStatusNerAnalyzing(fileId); rabbitTemplate.convertAndSend(MessagingConfiguration.NER_SERVICE_QUEUE, NerServiceRequest.builder() + .dossierTemplateId(dossierTemplateId) .dossierId(dossierId) .fileId(fileId) .targetFileExtension(NerServiceRequest.TARGET_FILE_EXTENSION) @@ -627,7 +628,12 @@ public class FileStatusService { @Transactional - public void setStatusReprocess(String dossierId, String fileId, boolean priority, Set sectionsToReanalyse, boolean triggeredManually, boolean manualRedactionReanalyse) { + public void setStatusReprocess(String dossierId, + String fileId, + boolean priority, + Set sectionsToReanalyse, + boolean triggeredManually, + boolean manualRedactionReanalyse) { log.info("Reprocessing file: {} from dossier {}", fileId, dossierId); @@ -757,7 +763,7 @@ public class FileStatusService { fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_STRUCTURE); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.NER_ENTITIES); - if(applicationType.equalsIgnoreCase("DocuMine")){ + if (applicationType.equalsIgnoreCase("DocuMine")) { entityLogMongoService.deleteEntityLog(dossierId, fileId); } @@ -904,4 +910,13 @@ public class FileStatusService { } } + + public List findAllByIds(Set fileIds) { + + return fileStatusPersistenceService.findAllByIds(fileIds) + .stream() + .map(entity -> MagicConverter.convert(entity, FileModel.class, new FileModelMapper())) + .toList(); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java index c357560ec..b9be13e3e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java @@ -107,7 +107,7 @@ public class ManualRedactionMapper { for (EntityLogEntry entityLogEntry : entityLogEntriesWithId) { - if (invalidDictionaryRequest(removeRedactionRequest, entityLogEntry) || invalidLocalRequest(removeRedactionRequest, entityLogEntry)) { + if (entityLogEntry.getState().equals(EntryState.PENDING) || entityLogEntry.getState().equals(EntryState.REMOVED)) { continue; } @@ -134,24 +134,6 @@ public class ManualRedactionMapper { } - private static boolean invalidLocalRequest(RemoveRedactionRequestModel removeRedactionRequest, EntityLogEntry entityLogEntry) { - - return !isDictionaryRequest(removeRedactionRequest) && entityLogEntry.getState().equals(EntryState.REMOVED); - } - - - private static boolean isDictionaryRequest(RemoveRedactionRequestModel removeRedactionRequest) { - - return removeRedactionRequest.isRemoveFromDictionary() || removeRedactionRequest.isRemoveFromAllDossiers(); - } - - - private static boolean invalidDictionaryRequest(RemoveRedactionRequestModel removeRedactionRequest, EntityLogEntry entityLogEntry) { - - return isDictionaryRequest(removeRedactionRequest) && entityLogEntry.getState().equals(EntryState.PENDING); - } - - public List> toForceRedactionRequestList(String dossierId, String fileId, Set forceRedactionRequests, @@ -239,7 +221,7 @@ public class ManualRedactionMapper { for (EntityLogEntry entityLogEntry : entityLogEntriesById) { - if (invalidDictionaryRequest(recategorizationRequest, entityLogEntry) || invalidLocalRequest(recategorizationRequest, entityLogEntry)) { + if (entityLogEntry.getState().equals(EntryState.PENDING) || entityLogEntry.getState().equals(EntryState.REMOVED)) { continue; } @@ -293,24 +275,6 @@ public class ManualRedactionMapper { } - private static boolean invalidLocalRequest(RecategorizationRequestModel removeRedactionRequest, EntityLogEntry entityLogEntry) { - - return !isDictionaryRequest(removeRedactionRequest) && entityLogEntry.getState().equals(EntryState.REMOVED); - } - - - private static boolean isDictionaryRequest(RecategorizationRequestModel removeRedactionRequest) { - - return removeRedactionRequest.isAddToDictionary() || removeRedactionRequest.isAddToAllDossiers(); - } - - - private static boolean invalidDictionaryRequest(RecategorizationRequestModel removeRedactionRequest, EntityLogEntry entityLogEntry) { - - return isDictionaryRequest(removeRedactionRequest) && entityLogEntry.getState().equals(EntryState.PENDING); - } - - private void checkSectionLength(String changedSection) { if (changedSection == null) { @@ -354,8 +318,11 @@ public class ManualRedactionMapper { List> requests = new ArrayList<>(); for (ResizeRedactionRequestModel resizeRedactionRequest : resizeRedactionRequests) { + for (EntityLogEntry entityLogEntry : entityLogEntries) { + if (entityLogEntry.getState().equals(EntryState.REMOVED) || entityLogEntry.getState().equals(EntryState.PENDING)) { + continue; + } - entityLogEntries.forEach(entityLogEntry -> { ResizeRedactionRequest request = ResizeRedactionRequest.builder() .annotationId(resizeRedactionRequest.getAnnotationId()) .user(KeycloakSecurity.getUserId()) @@ -375,10 +342,9 @@ public class ManualRedactionMapper { } requests.add(RequestEntryPair.builder().request(request).entityLogEntry(entityLogEntry).build()); - }); + } } - return requests; } 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 7ad1d4115..fbe05a1cd 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 @@ -3,6 +3,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import java.time.OffsetDateTime; import java.time.temporal.ChronoUnit; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -685,4 +686,10 @@ public class FileStatusPersistenceService { fileRepository.setLastFlagCalculationDate(fileId, lastFlagCalculation, OffsetDateTime.now()); } + + public List findAllByIds(Set fileIds) { + + return fileRepository.findAllById(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/AddRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java index 96618f6a0..049a0dbe2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java @@ -152,4 +152,11 @@ public class AddRedactionPersistenceService { manualRedactionRepository.undeleteByFileId(fileId, deletionTime); } + + @Transactional + public int updateRequestDate(String fileId, String annotationId, OffsetDateTime requestDate) { + + return manualRedactionRepository.updateRequestDateById(new AnnotationEntityId(annotationId, fileId), requestDate); + } + } 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..f60129e1e 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 @@ -3,7 +3,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import java.time.OffsetDateTime; import java.time.temporal.ChronoUnit; import java.util.List; -import java.util.Set; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,7 +30,7 @@ public class RecategorizationPersistenceService { AnnotationEntityId id = new AnnotationEntityId(request.getAnnotationId(), fileId); ManualRecategorizationEntity entity = recategorizationRepository.findById(id) - .orElse(ManualRecategorizationEntity.builder().id(id).build()); + .orElse(buildEntity(id)); entity.setUser(request.getUser()); @@ -60,6 +59,14 @@ public class RecategorizationPersistenceService { } + private static ManualRecategorizationEntity buildEntity(AnnotationEntityId id) { + + var e = new ManualRecategorizationEntity(); + e.setId(id); + return e; + } + + @Transactional public void hardDelete(String fileId, String annotationId) { @@ -87,21 +94,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 +126,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/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..b7c5cdfd8 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 @@ -53,20 +53,26 @@ 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); + + @Modifying + @Query("update ManualRedactionEntryEntity e set e.requestDate = :requestDate where e.id = :annotationEntityId") + int updateRequestDateById(@Param("annotationEntityId") AnnotationEntityId annotationEntityId, @Param("requestDate") OffsetDateTime requestDate); + } 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 5fc44b325..a1c5a08bc 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 @@ -432,28 +432,26 @@ public class FileTest extends AbstractPersistenceServerServiceTest { manualRedactionClient.removeRedactionBulk(dossierId, fileId, - Set.of(RemoveRedactionRequestModel.builder().annotationId(annotationId).comment("comment").removeFromDictionary(false).build()), - false); + Set.of(RemoveRedactionRequestModel.builder().annotationId(annotationId).comment("removeComment").removeFromDictionary(false).build())); manualRedactionClient.forceRedactionBulk(dossierId, fileId, - Set.of(ForceRedactionRequestModel.builder().annotationId("forceRedactionAnnotation").comment("comment").legalBasis("1").build())); + Set.of(ForceRedactionRequestModel.builder().annotationId("forceRedactionAnnotation").comment("forceComment").legalBasis("1").build())); manualRedactionClient.legalBasisChangeBulk(dossierId, fileId, Set.of(LegalBasisChangeRequestModel.builder() .annotationId("legalBasisChangeAnnotation") - .comment("comment") + .comment("legalBasisComment") .legalBasis("1") .build())); manualRedactionClient.recategorizeBulk(dossierId, fileId, Set.of(RecategorizationRequestModel.builder() .annotationId(annotationId) - .comment("comment") + .comment("recategorizationComment") .type("new-type") .legalBasis(null) .section("section") - .build()), - false); + .build())); manualRedactionClient.addComment(dossierId, fileId, commentId, AddCommentRequestModel.builder().text("comment added via text fileId").build()); @@ -780,8 +778,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest { .legalBasis("") .section("section") .value("value entry 3") - .build()), - false); + .build())); var loadedFile = fileClient.getFileStatus(dossierId, fileId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 0b00ce2d1..6854a30a3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -42,6 +42,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.FileMan import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.AddRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.redactionlog.RedactionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult; import com.iqser.red.service.persistence.service.v1.api.shared.model.MessageType; @@ -124,6 +125,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { @Autowired private ManualRedactionService manualRedactionService; + @Autowired + private AddRedactionPersistenceService addRedactionPersistenceService; + @Test public void testRemoveToDossierTemplateWithDossierDictionaryOnlyTrue() { @@ -163,8 +167,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .annotationId("AnnotationId") .removeFromDictionary(true) .removeFromAllDossiers(true) - .build()), - false));//.get(0); + .build())));//.get(0); var dossierTemplateDictionary = internalDictionaryClient.getDictionaryForType(toTypeId(type.getType(), dossierTemplate.getId()), null); assertThat(dossierTemplateDictionary.getEntries().size()).isZero(); @@ -356,8 +359,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .annotationId("AnnotationId") .removeFromDictionary(true) .removeFromAllDossiers(true) - .build()), - false); + .build())); dossierTemplateDictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), null); assertThat(dossierTemplateDictionary.getEntries()).containsExactlyInAnyOrder("Darth Vader"); @@ -412,8 +414,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), - Set.of(RemoveRedactionRequestModel.builder().annotationId("AnnotationId").removeFromDictionary(true).build()), - false).getManualAddResponses() + Set.of(RemoveRedactionRequestModel.builder().annotationId("AnnotationId").removeFromDictionary(true).build())).getManualAddResponses() .get(0); var dossierDictionary = internalDictionaryClient.getDictionaryForType(toTypeId(type.getType(), dossierTemplate.getId(), dossier.getId()), null); @@ -471,8 +472,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .annotationId("AnnotationId") .removeFromDictionary(true) .removeFromAllDossiers(true) - .build()), - false).getManualAddResponses() + .build())).getManualAddResponses() .get(0); var dossierDictionary = internalDictionaryClient.getDictionaryForType(toTypeId(type.getType(), dossierTemplate.getId(), dossier.getId()), null); @@ -592,7 +592,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .build(); - manualRedactionClient.resizeRedactionBulk(dossier1.getId(), file1.getFileId(), Set.of(resizeRedactionDosAndAddToAllDos), false); + manualRedactionClient.resizeRedactionBulk(dossier1.getId(), file1.getFileId(), Set.of(resizeRedactionDosAndAddToAllDos)); loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); @@ -761,7 +761,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .build(); - manualRedactionClient.resizeRedactionBulk(dossier1.getId(), file1.getFileId(), Set.of(resizeRedactionDosAndAddToAllDos), false); + manualRedactionClient.resizeRedactionBulk(dossier1.getId(), file1.getFileId(), Set.of(resizeRedactionDosAndAddToAllDos)); loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); @@ -934,7 +934,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .build(); - var resizeRedactions = manualRedactionClient.resizeRedactionBulk(dossier2.getId(), file2.getFileId(), Set.of(resizeRedactionDosTemp), false); + var resizeRedactions = manualRedactionClient.resizeRedactionBulk(dossier2.getId(), file2.getFileId(), Set.of(resizeRedactionDosTemp)); var loadedRedactionsFile2 = manualRedactionClient.getManualRedactions(file2.getDossierId(), file2.getFileId(), false, true); @@ -1104,7 +1104,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .build(); - var resizeRedactions = manualRedactionClient.resizeRedactionBulk(dossier2.getId(), file2.getFileId(), Set.of(resizeRedactionDosTemp), false); + var resizeRedactions = manualRedactionClient.resizeRedactionBulk(dossier2.getId(), file2.getFileId(), Set.of(resizeRedactionDosTemp)); var loadedRedactionsFile2 = manualRedactionClient.getManualRedactions(file2.getDossierId(), file2.getFileId(), false, true); @@ -1229,8 +1229,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .legalBasis("") .section("section") .value(lukeSkywalker) - .build()), - false); + .build())); dossierTemplateDictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), null); assertThat(dossierTemplateDictionary.getEntries()).containsExactlyInAnyOrder(darthVader); @@ -1315,8 +1314,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .legalBasis("") .section("section") .value(lukeSkywalker) - .build()), - false); + .build())); dossierTemplateDictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), null); assertThat(dossierTemplateDictionary.getEntries()).isEmpty(); @@ -1492,8 +1490,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .annotationId("AnnotationId") .removeFromDictionary(true) .removeFromAllDossiers(true) - .build()), - false); + .build())); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(allManualRedactions.getIdsToRemove().size(), 1); @@ -1523,8 +1520,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .annotationId("AnnotationId2") .removeFromDictionary(true) .removeFromAllDossiers(true) - .build()), - false); + .build())); allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(allManualRedactions.getIdsToRemove().size(), 2); @@ -1720,8 +1716,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), - Set.of(RecategorizationRequestModel.builder().annotationId("dv").legalBasis("").section("section").type(type.getType()).build()), - false); + Set.of(RecategorizationRequestModel.builder().annotationId("dv").legalBasis("").section("section").type(type.getType()).build())); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(allManualRedactions.getRecategorizations().size(), 1); @@ -1747,8 +1742,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), - Set.of(RecategorizationRequestModel.builder().annotationId("dv2").legalBasis("").section("section").type(type.getType()).build()), - false); + Set.of(RecategorizationRequestModel.builder().annotationId("dv2").legalBasis("").section("section").type(type.getType()).build())); allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(allManualRedactions.getRecategorizations().size(), 2); @@ -2048,7 +2042,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .build(); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel, recatModelNoLegalBasis), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel, recatModelNoLegalBasis)); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(2, allManualRedactions.getRecategorizations().size()); @@ -2056,7 +2050,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .stream() .anyMatch(entry -> entry.getAnnotationId().equals("annotationId"))); - assertThatThrownBy(() -> manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModelLongLegalBasis), false).getManualAddResponses() + assertThatThrownBy(() -> manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModelLongLegalBasis)).getManualAddResponses() .get(0)).isInstanceOf(FeignException.class).hasMessageContaining("The legal basis is too long"); assertNull(allManualRedactions.getRecategorizations() @@ -2122,7 +2116,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .section("overriddenSection") .build(); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel)); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(1, allManualRedactions.getRecategorizations().size()); @@ -2171,7 +2165,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .legalBasis("") .build(); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel)); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); @@ -2267,7 +2261,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .positions(List.of(Rectangle.builder().page(1).height(1).width(2).topLeftX(1).topLeftY(1).build())) .build(); - manualRedactionClient.resizeRedactionBulk(dossier.getId(), file.getId(), Set.of(resizeRedactionRequestModel), false); + manualRedactionClient.resizeRedactionBulk(dossier.getId(), file.getId(), Set.of(resizeRedactionRequestModel)); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); @@ -2422,7 +2416,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .value("Image:Other") .build(); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel)); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); @@ -2492,7 +2486,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .value("Ranya Eikenboom") .build(); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel)); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); @@ -2688,8 +2682,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(false) .value("Luke") .positions(List.of(new Rectangle(5f, 5f, 5f, 5f, 1))) - .build()), - false).getManualAddResponses() + .build())).getManualAddResponses() .get(0); assertEquals(response.getEntityLogEntry().getId(), "AnnotationId"); @@ -2747,8 +2740,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .legalBasis("") .section("section") .value("Luke Skywalker") - .build()), - false).getManualAddResponses() + .build())).getManualAddResponses() .get(0); assertEquals(response.getEntityLogEntry().getId(), "AnnotationId"); @@ -2793,8 +2785,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .annotationId("AnnotationId") .removeFromDictionary(false) .removeFromAllDossiers(false) - .build()), - false).getManualAddResponses() + .build())).getManualAddResponses() .get(0); assertEquals(response.getEntityLogEntry().getId(), "AnnotationId"); @@ -2850,8 +2841,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .legalBasis("Article legal basis") .section("section") .value("Luke Skywalker") - .build()), - false).getManualAddResponses() + .build())).getManualAddResponses() .get(0); assertEquals(response.getEntityLogEntry().getId(), "AnnotationId"); @@ -2897,7 +2887,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog); - ManualRedactionResponse manualRedactionResponse = manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), removeRedactionRequestModels, false); + ManualRedactionResponse manualRedactionResponse = manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), removeRedactionRequestModels); assertEquals(manualRedactionResponse.getManualAddResponses().size(), 600); } @@ -2971,7 +2961,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog); - ManualRedactionResponse manualRedactionResponse = manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), recategorizationRequestModels, false); + ManualRedactionResponse manualRedactionResponse = manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), recategorizationRequestModels); assertEquals(manualRedactionResponse.getManualAddResponses().size(), 600); } @@ -3003,7 +2993,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog); - var result = assertThrows(FeignException.class, () -> manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), removeRedactionRequestModels, false)); + var result = assertThrows(FeignException.class, () -> manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), removeRedactionRequestModels)); assertTrue(result.getMessage().contains("Maximum number of remove from dictionary requests is 100.")); } 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/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index 58d380726..496fbd226 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -9,6 +9,7 @@ import org.springframework.data.mongodb.repository.Query; import org.springframework.stereotype.Repository; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.projections.EntryWithManualChangesProjection; @Repository public interface EntityLogEntryDocumentRepository extends MongoRepository { @@ -21,6 +22,10 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogIdAndChangesAnalysisNumberEquals(String entityLogId, Integer analysisNumber); + @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : { $gte: ?1, $lte: ?2 } }") + List findByEntityLogIdAndChangesAnalysisNumberBetween(String entityLogId, Integer analysisNumberStart, Integer analysisNumberEnd); + + @Query("{ 'entityLogId' : ?0}") List findByEntityLogId(String entityLogId); @@ -64,4 +69,14 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findAppliedEntitiesWhereLegalBasisEmpty(); + } 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/projections/EntryWithManualChangesProjection.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/projections/EntryWithManualChangesProjection.java new file mode 100644 index 000000000..e3aad0ee3 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/projections/EntryWithManualChangesProjection.java @@ -0,0 +1,25 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.projections; + +import java.util.List; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryState; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualChange; + +public interface EntryWithManualChangesProjection { + + String getEntryId(); + + + String getEntityLogId(); + + + EntryState getState(); + + + EntryType getEntryType(); + + + List getManualChanges(); + +}