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 d5ebc9a68..729a9d5be 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 @@ -6,9 +6,6 @@ import static com.iqser.red.service.persistence.management.v1.processor.roles.Ac import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.DO_MANUAL_REDACTION; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_MANUAL_REDACTIONS; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -23,7 +20,6 @@ import com.iqser.red.service.persistence.management.v1.processor.model.ManualCha import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.CommentService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService; -import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionService; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionUndoService; @@ -31,12 +27,17 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.service.v1.api.external.resource.ManualRedactionResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.CommentResponse; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AddRedactionRequest; 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.Comment; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.CommentRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ForceRedactionRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.LegalBasisChangeRequest; 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.ManualRedactions; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.RecategorizationRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.RemoveRedactionRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddCommentRequestModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddRedactionRequestModel; @@ -68,7 +69,6 @@ public class ManualRedactionController implements ManualRedactionResource { AccessControlService accessControlService; CommentService commentService; FileStatusManagementService fileStatusManagementService; - EntityLogService entityLogService; @Override @@ -257,12 +257,6 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - return handleLegalBasisChanges(dossierId, fileId, legalBasisChangeRequests); - } - - - private List handleLegalBasisChanges(String dossierId, String fileId, Set legalBasisChangeRequests) { - List responseList = manualRedactionService.addLegalBasisChange(dossierId, fileId, legalBasisChangeRequests); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() @@ -272,6 +266,7 @@ public class ManualRedactionController implements ManualRedactionResource { .message("Legal basis reason was changed") .details(Map.of(DOSSIER_ID, dossierId, FILE_ID, fileId, ANNOTATION_ID, response.getAnnotationId())) .build())); + return responseList; } @@ -287,42 +282,11 @@ public class ManualRedactionController implements ManualRedactionResource { accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyUserIsMemberOrApprover(dossierId); - EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed); - - Set recategorizations = new HashSet<>(); - Set legalBasisChanges = new HashSet<>(); - - recategorizationRequests.forEach(recategorizationRequestModel -> { - var entry = entityLog.getEntityLogEntry() - .stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(recategorizationRequestModel.getAnnotationId())) - .findFirst(); - if (entry.isPresent()) { - if (manualRedactionService.isLegalBasisChangeRequest(recategorizationRequestModel, entry.get())) { - LegalBasisChangeRequestModel legalBasisChange = manualRedactionService.convertRecategorizationToLegalBasisChange(recategorizationRequestModel); - legalBasisChanges.add(legalBasisChange); - } else { - recategorizations.add(recategorizationRequestModel); - } - } - }); - - List responseList = new ArrayList<>(); - - responseList.addAll(handleLegalBasisChanges(dossierId, fileId, legalBasisChanges)); - responseList.addAll(handleRectegorizations(dossierId, fileId, recategorizations, includeUnprocessed, dossier.getDossierTemplateId())); - - return responseList; - } - - - private List handleRectegorizations(String dossierId, - String fileId, - Set recategorizationRequests, - boolean includeUnprocessed, - String dossierTemplateId) { - - List responseList = manualRedactionService.addRecategorization(dossierId, fileId, recategorizationRequests, dossierTemplateId, includeUnprocessed); + List responseList = manualRedactionService.addRecategorization(dossierId, + fileId, + recategorizationRequests, + dossier.getDossierTemplateId(), + includeUnprocessed); responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) 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..0d2a76e61 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 @@ -14,6 +14,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor 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 210addf02..461e3b320 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 @@ -29,6 +29,9 @@ import lombok.NoArgsConstructor; @Table(name = "manual_recategorization") public class ManualRecategorizationEntity implements IBaseAnnotation { + public static final int MAX_LEGAL_BASIS_LENGTH = 4000; + public static final int MAX_SECTION_LENGTH = 1024; + @EmbeddedId private AnnotationEntityId id; @Column(name = "user_id") @@ -47,9 +50,9 @@ public class ManualRecategorizationEntity implements IBaseAnnotation { private boolean addToDictionary; @Column private boolean addToAllDossiers; - @Column(length = 4000) + @Column(length = MAX_LEGAL_BASIS_LENGTH) private String legalBasis; - @Column(length = 1024) + @Column(length = MAX_SECTION_LENGTH) private String section; @Column private String value; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMergeService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMergeService.java index b7ed57a53..fbdc9e042 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMergeService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogMergeService.java @@ -7,7 +7,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; @@ -18,20 +17,15 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.apache.commons.lang3.StringUtils; +import org.assertj.core.util.Strings; import org.springframework.stereotype.Service; -import com.google.common.base.Strings; -import com.google.common.collect.Sets; -import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.PendingDictionaryEntryFactory; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.MessageType; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Change; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ChangeType; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine; @@ -40,8 +34,8 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.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; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType; 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.annotations.ManualChangeFactory; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation; @@ -51,7 +45,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRecategorization; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; import io.micrometer.observation.annotation.Observed; @@ -67,9 +60,6 @@ import lombok.extern.slf4j.Slf4j; public class EntityLogMergeService { DictionaryPersistenceService dictionaryPersistenceService; - RabbitTemplate rabbitTemplate; - FileStatusService fileStatusService; - FileStatusPersistenceService fileStatusPersistenceService; PendingDictionaryEntryFactory pendingDictionaryEntryFactory; @@ -87,13 +77,11 @@ public class EntityLogMergeService { List entityLogEntries = new LinkedList<>(entityLog.getEntityLogEntry()); - Map addedLocalManualEntries = buildUnprocessedLocalManualRedactions(unprocessedManualRedactions, - entityLog, - dossier).collect(Collectors.toMap(EntityLogEntry::getId, Function.identity())); + Map addedLocalManualEntries = buildUnprocessedLocalManualRedactions(unprocessedManualRedactions, entityLog, dossier)// + .collect(Collectors.toMap(EntityLogEntry::getId, Function.identity())); entityLogEntries.addAll(addedLocalManualEntries.values()); - buildPendingDictionaryChanges(unprocessedManualRedactions).forEach(entityLogEntries::add); int numberOfAddedPendingEntries = 0; // since list is dynamically growing we need to keep track of the number of added pending entries to ignore them in the loop @@ -249,13 +237,7 @@ public class EntityLogMergeService { } List manualChanges = new ArrayList<>(); - manualChanges.add(ManualChange.builder() - .manualRedactionType(ManualRedactionType.ADD) - .requestedDate(manualRedactionEntry.getRequestDate()) - .processedDate(null) - .userId(manualRedactionEntry.getUser()) - .propertyChanges(Map.of("value", manualRedactionEntry.getValue())) - .build()); + manualChanges.add(ManualChangeFactory.toLocalManualChange(manualRedactionEntry)); List changes = new ArrayList<>(); changes.add(Change.builder().analysisNumber(entityLog.getAnalysisNumber()).dateTime(manualRedactionEntry.getRequestDate()).type(ChangeType.ADDED).build()); @@ -320,14 +302,7 @@ public class EntityLogMergeService { entityLogEntry.setState(EntryState.IGNORED); entityLogEntry.getEngines().add(Engine.MANUAL); addChanges(entityLogEntry.getChanges(), ChangeType.REMOVED, analysisNumber, idRemoval.getRequestDate()); - entityLogEntry.getManualChanges() - .add(ManualChange.builder() - .manualRedactionType(ManualRedactionType.REMOVE) - .requestedDate(idRemoval.getRequestDate()) - .processedDate(null) - .userId(idRemoval.getUser()) - .propertyChanges(Collections.emptyMap()) - .build()); + entityLogEntry.getManualChanges().add(ManualChangeFactory.toLocalManualChange(idRemoval)); } @@ -339,15 +314,7 @@ public class EntityLogMergeService { entityLogEntry.setValue(manualResizeRedaction.getValue()); entityLogEntry.getEngines().add(Engine.MANUAL); addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, manualResizeRedaction.getRequestDate()); - ManualChange.ManualChangeBuilder manualChange = ManualChange.builder() - .manualRedactionType(ManualRedactionType.RESIZE) - .requestedDate(manualResizeRedaction.getRequestDate()) - .processedDate(null) - .userId(manualResizeRedaction.getUser()); - if (!Strings.isNullOrEmpty(manualResizeRedaction.getValue())) { - manualChange.propertyChanges(Map.of("value", manualResizeRedaction.getValue())); - } - entityLogEntry.getManualChanges().add(manualChange.build()); + entityLogEntry.getManualChanges().add(ManualChangeFactory.toLocalManualChange(manualResizeRedaction)); } @@ -357,124 +324,62 @@ public class EntityLogMergeService { } - private void mergeLegalBasisChange(ManualLegalBasisChange manualLegalBasisChange, - EntityLogEntry entityLogEntry, - int analysisNumber) { + @Deprecated(forRemoval = true) + private void mergeLegalBasisChange(ManualLegalBasisChange manualLegalBasisChange, EntityLogEntry entityLogEntry, int analysisNumber) { entityLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis()); entityLogEntry.setSection(manualLegalBasisChange.getSection()); entityLogEntry.setValue(manualLegalBasisChange.getValue()); entityLogEntry.getEngines().add(Engine.MANUAL); addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, manualLegalBasisChange.getRequestDate()); - Map propertyChanges = getPropertyChanges(manualLegalBasisChange); - entityLogEntry.getManualChanges() - .add(ManualChange.builder() - .manualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE) - .requestedDate(manualLegalBasisChange.getRequestDate()) - .processedDate(null) - .propertyChanges(propertyChanges) - .userId(manualLegalBasisChange.getUser()) - .build()); + entityLogEntry.getManualChanges().add(ManualChangeFactory.toLocalManualChange(manualLegalBasisChange)); } - private Map getPropertyChanges(ManualLegalBasisChange manualLegalBasisChange) { + private EntityLogEntry mergeRecategorization(ManualRecategorization recategorization, EntityLogEntry entityLogEntry, DossierEntity dossier, int analysisNumber) { - Map propertyChanges = new HashMap<>(); - if (!Strings.isNullOrEmpty(manualLegalBasisChange.getLegalBasis())) { - propertyChanges.put("legalBasis", manualLegalBasisChange.getLegalBasis()); - } - if (!Strings.isNullOrEmpty(manualLegalBasisChange.getValue())) { - propertyChanges.put("value", manualLegalBasisChange.getValue()); - } - if (!Strings.isNullOrEmpty(manualLegalBasisChange.getSection())) { - propertyChanges.put("section", manualLegalBasisChange.getSection()); - } - return propertyChanges; - } + if ((recategorization.getType() != null && !Objects.equals(recategorization.getType(), entityLogEntry.getType()) && Strings.isNullOrEmpty(recategorization.getLegalBasis()))// + && (entityLogEntry.getEntryType().equals(EntryType.IMAGE) || entityLogEntry.getEntryType().equals(EntryType.IMAGE_HINT))) { - - private EntityLogEntry mergeRecategorization(ManualRecategorization recategorization, - EntityLogEntry entityLogEntry, - DossierEntity dossier, - int analysisNumber) { - - if (entityLogEntry.getEntryType().equals(EntryType.IMAGE) || entityLogEntry.getEntryType().equals(EntryType.IMAGE_HINT)) { return pendingDictionaryEntryFactory.buildPendingImageRecategorizationEntry(recategorization, entityLogEntry); } boolean isHint = isHint(recategorization.getType(), dossier); - if (!Strings.isNullOrEmpty(recategorization.getType())) { - entityLogEntry.setType(recategorization.getType()); - } - - entityLogEntry.setEntryType(getEntryType(isHint, recategorization.getType())); - entityLogEntry.getEngines().add(Engine.MANUAL); + if (recategorization.getType() != null && !recategorization.getType().equals(entityLogEntry.getType())) { + entityLogEntry.setType(recategorization.getType()); + entityLogEntry.setEntryType(getEntryType(isHint, recategorization.getType())); + entityLogEntry.setState(EntryState.SKIPPED); + } + if (!Strings.isNullOrEmpty(recategorization.getLegalBasis())) { entityLogEntry.setLegalBasis(recategorization.getLegalBasis()); entityLogEntry.setState(isHint ? EntryState.SKIPPED : EntryState.APPLIED); - } else { - entityLogEntry.setState(EntryState.SKIPPED); } - if (!Strings.isNullOrEmpty(recategorization.getSection())) { + if (recategorization.getSection() != null) { entityLogEntry.setSection(recategorization.getSection()); } - if (!Strings.isNullOrEmpty(recategorization.getValue())) { + if (recategorization.getValue() != null) { entityLogEntry.setValue(recategorization.getValue()); } addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, recategorization.getRequestDate()); - entityLogEntry.getManualChanges() - .add(ManualChange.builder() - .manualRedactionType(ManualRedactionType.RECATEGORIZE) - .requestedDate(recategorization.getRequestDate()) - .processedDate(recategorization.getProcessedDate()) - .userId(recategorization.getUser()) - .propertyChanges(getPropertyChanges(recategorization)) - .build()); + entityLogEntry.getManualChanges().add(ManualChangeFactory.toLocalManualChange(recategorization)); return null; } - public static Map getPropertyChanges(ManualRecategorization recategorization) { - - Map propertyChanges = new HashMap<>(); - if (!Strings.isNullOrEmpty(recategorization.getType())) { - propertyChanges.put("type", recategorization.getType()); - } - if (!Strings.isNullOrEmpty(recategorization.getLegalBasis())) { - propertyChanges.put("legalBasis", recategorization.getLegalBasis()); - } - if (!Strings.isNullOrEmpty(recategorization.getSection())) { - propertyChanges.put("section", recategorization.getSection()); - } - if (!Strings.isNullOrEmpty(recategorization.getValue())) { - propertyChanges.put("value", recategorization.getValue()); - } - return propertyChanges; - } - - private void mergeForceRedaction(ManualForceRedaction forceRedaction, EntityLogEntry entityLogEntry, int analysisNumber) { entityLogEntry.setLegalBasis(forceRedaction.getLegalBasis()); entityLogEntry.setState(entityLogEntry.getEntryType().equals(EntryType.HINT) ? EntryState.SKIPPED : EntryState.APPLIED); entityLogEntry.getEngines().add(Engine.MANUAL); addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, forceRedaction.getRequestDate()); - var forceRedactManualChange = ManualChange.builder() - .manualRedactionType(ManualRedactionType.FORCE) - .requestedDate(forceRedaction.getRequestDate()) - .processedDate(forceRedaction.getProcessedDate()) - .userId(forceRedaction.getUser()); - if (forceRedaction.getLegalBasis() != null && !forceRedaction.getLegalBasis().isEmpty()) { - forceRedactManualChange.propertyChanges(Map.of("legalBasis", forceRedaction.getLegalBasis())); - } - entityLogEntry.getManualChanges().add(forceRedactManualChange.build()); + entityLogEntry.getManualChanges().add(ManualChangeFactory.toLocalManualChange(forceRedaction)); } @@ -535,24 +440,4 @@ public class EntityLogMergeService { .collect(Collectors.toList()); } - - public void sendToAnalyseQueue(String fileId, DossierEntity dossier, FileModel fileModel, ManualRedactions manualRedactions) { - - var fileEntity = fileStatusPersistenceService.getStatus(fileId); - var analyseRequest = AnalyzeRequest.builder() - .messageType(MessageType.SURROUNDING_TEXT_ANALYSIS) - .dossierId(dossier.getId()) - .analysisNumber(fileModel.getNumberOfAnalyses() + 1) - .sectionsToReanalyse(Sets.newHashSet()) - .fileId(fileId) - .manualRedactions(manualRedactions) - .dossierTemplateId(dossier.getDossierTemplateId()) - .lastProcessed(fileModel.getLastProcessed()) - .fileAttributes(fileStatusService.convertAttributes(fileEntity.getFileAttributes(), dossier.getDossierTemplateId())) - .build(); - - log.info("Sending Surrounding Text Analysis for unprocessed manual redactions: {} for file: {} ", manualRedactions, fileId); - rabbitTemplate.convertAndSend(MessagingConfiguration.REDACTION_PRIORITY_QUEUE, analyseRequest); - } - } 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 764c169be..fd0ef78ce 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 @@ -68,19 +68,19 @@ public class ManualRedactionDictionaryUpdateHandler { ManualRequestWithAddToDictionary manualRequestWithAddToDictionary, Set typeIdsOfModifiedDictionaries) { - List dictionaryEntriesToUnDelete = dictionaryManagementService.getAllEntriesInDossierTemplate(manualRequestWithAddToDictionary.getDossierTemplateTypeId(), + List dictionaryEntriesToUnDelete = dictionaryManagementService.getAllEntriesInDossierTemplate(manualRequestWithAddToDictionary.getDictionaryTypeId(), value, manualRequestWithAddToDictionary.getDictionaryEntryType()); dictionaryEntriesToUnDelete.forEach(entry -> { typeIdsOfModifiedDictionaries.add(entry.getTypeId()); addToDictionary(entry.getTypeId(), value, manualRequestWithAddToDictionary.getDossierId(), fileId, manualRequestWithAddToDictionary.getDictionaryEntryType()); }); - addToDictionary(manualRequestWithAddToDictionary.getDossierTemplateTypeId(), + addToDictionary(manualRequestWithAddToDictionary.getDictionaryTypeId(), value, manualRequestWithAddToDictionary.getDossierId(), fileId, manualRequestWithAddToDictionary.getDictionaryEntryType()); - typeIdsOfModifiedDictionaries.add(manualRequestWithAddToDictionary.getDossierTemplateTypeId()); + typeIdsOfModifiedDictionaries.add(manualRequestWithAddToDictionary.getDictionaryTypeId()); return typeIdsOfModifiedDictionaries; } @@ -90,7 +90,7 @@ public class ManualRedactionDictionaryUpdateHandler { ManualRequestWithAddToDictionary manualRequestWithAddToDictionary, Set typeIdsOfModifiedDictionaries) { - String dossierDictionaryTypeId = manualRequestWithAddToDictionary.getDossierTemplateTypeId() + ":" + manualRequestWithAddToDictionary.getDossierId(); + String dossierDictionaryTypeId = manualRequestWithAddToDictionary.getDictionaryTypeId() + ":" + manualRequestWithAddToDictionary.getDossierId(); addToDictionary(dossierDictionaryTypeId, value, manualRequestWithAddToDictionary.getDossierId(), fileId, manualRequestWithAddToDictionary.getDictionaryEntryType()); typeIdsOfModifiedDictionaries.add(dossierDictionaryTypeId); return typeIdsOfModifiedDictionaries; @@ -252,7 +252,7 @@ public class ManualRedactionDictionaryUpdateHandler { if (addRedactionRequest.isAddToDictionary()) { if (addRedactionRequest.isAddToAllDossiers()) { // validate add to dossier template dictionaries - dictionaryManagementService.validateAddRemoveToDossierTemplateDictionary(addRedactionRequest.getDossierTemplateTypeId()); + dictionaryManagementService.validateAddRemoveToDossierTemplateDictionary(addRedactionRequest.getDictionaryTypeId()); } validateDictionary(addRedactionRequest, value); } @@ -265,9 +265,9 @@ public class ManualRedactionDictionaryUpdateHandler { if (!addRedactionRequest.isForceAddToDictionary() && stopwordService.isStopword(value)) { throw new ConflictException("The entry you are trying to add is a stopword"); } - dictionaryPersistenceService.getType(addRedactionRequest.getDossierTemplateTypeId()); + dictionaryPersistenceService.getType(addRedactionRequest.getDictionaryTypeId()); } catch (NotFoundException e) { - throw new BadRequestException("Invalid type: " + addRedactionRequest.getDossierTemplateTypeId()); + throw new BadRequestException("Invalid type: " + addRedactionRequest.getDictionaryTypeId()); } } 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 9a305008a..d4479a807 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 @@ -5,12 +5,14 @@ import static com.iqser.red.service.persistence.management.v1.processor.utils.Ty import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Optional; +import java.util.Objects; import java.util.Set; import java.util.function.Consumer; import org.springframework.stereotype.Service; +import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRecategorizationEntity; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine; @@ -61,7 +63,7 @@ public class ManualRedactionMapper { .value(StringCleaningUtility.cleanString(addRedactionRequest.getValue())) .legalBasis(addRedactionRequest.getLegalBasis()) .user(KeycloakSecurity.getUserId()) - .dossierTemplateTypeId(toTypeId(addRedactionRequest.getType(), dossierTemplateId)) + .dictionaryTypeId(toTypeId(addRedactionRequest.getType(), dossierTemplateId)) .reason(addRedactionRequest.getReason()) .addToDictionary(addRedactionRequest.isAddToDictionary()) .comment(addRedactionRequest.getComment() != null ? addRedactionRequest.getComment().getText() : null) @@ -137,6 +139,7 @@ public class ManualRedactionMapper { } + @Deprecated(forRemoval = true) public List toLegalBasisChangeRequestList(String dossierId, String fileId, Set legalBasisChangeRequests, @@ -181,6 +184,24 @@ public class ManualRedactionMapper { for (RecategorizationRequestModel recategorizationRequest : recategorizationRequests) { EntityLogEntry entityLogEntry = getEntityLogEntry(entityLog, recategorizationRequest.getAnnotationId()); + + String changedValue; + String changedTypeId; + + if (recategorizationRequest.isAddToDictionary() || recategorizationRequest.isAddToAllDossiers()) { + changedValue = recategorizationRequest.getValue(); + changedTypeId = toTypeId(recategorizationRequest.getType(), dossierTemplateId); + } else { + changedValue = Objects.equals(recategorizationRequest.getValue(), entityLogEntry.getValue()) ? null : recategorizationRequest.getValue(); + changedTypeId = Objects.equals(recategorizationRequest.getType(), entityLogEntry.getType()) ? null : toTypeId(recategorizationRequest.getType(), dossierTemplateId); + } + + String changedLegalBasis = Objects.equals(recategorizationRequest.getLegalBasis(), entityLogEntry.getLegalBasis()) ? null : recategorizationRequest.getLegalBasis(); + String changedSection = Objects.equals(recategorizationRequest.getSection(), entityLogEntry.getSection()) ? null : recategorizationRequest.getSection(); + + checkLegalBasisLength(changedLegalBasis); + checkSectionLength(changedSection); + RecategorizationRequest request = RecategorizationRequest.builder() .annotationId(recategorizationRequest.getAnnotationId()) .user(KeycloakSecurity.getUserId()) @@ -190,12 +211,11 @@ public class ManualRedactionMapper { .addToDictionary(recategorizationRequest.isAddToDictionary()) .addToAllDossiers(recategorizationRequest.isAddToAllDossiers()) .dictionaryEntryType(getDictionaryEntryType(entityLogEntry)) - .value(recategorizationRequest.getValue()) .typeToRemove(entityLogEntry.getType()) - .dossierTemplateTypeId(toTypeId(recategorizationRequest.getType(), dossierTemplateId)) - .legalBasis(Optional.ofNullable(recategorizationRequest.getLegalBasis()) - .orElse("")) - .section(recategorizationRequest.getSection()) + .value(changedValue) + .dictionaryTypeId(changedTypeId) + .legalBasis(changedLegalBasis) + .section(changedSection) .build(); if (!entityLogEntry.getEngines().contains(Engine.MANUAL) @@ -212,6 +232,33 @@ public class ManualRedactionMapper { } + private void checkSectionLength(String changedSection) { + + if (changedSection == null) { + return; + } + if (changedSection.length() > ManualRecategorizationEntity.MAX_SECTION_LENGTH) { + + throw new BadRequestException(String.format("The section is too long (%s), max length %s", changedSection.length(), ManualRecategorizationEntity.MAX_SECTION_LENGTH)); + } + + } + + + private void checkLegalBasisLength(String legalBasis) { + + if (legalBasis == null) { + return; + } + + if (legalBasis.length() > ManualRecategorizationEntity.MAX_LEGAL_BASIS_LENGTH) { + throw new BadRequestException(String.format("The legal basis is too long (%s), max length %s", + legalBasis.length(), + ManualRecategorizationEntity.MAX_LEGAL_BASIS_LENGTH)); + } + } + + public List toResizeRedactionRequestList(Set resizeRedactionRequests, EntityLog entityLog, Consumer entityLogEntryConsumer) { 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 7cbc2aa62..18235d8c6 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 @@ -12,16 +12,20 @@ import java.util.Set; import java.util.function.Consumer; import java.util.stream.Collectors; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.ObjectUtils; +import com.google.common.collect.Sets; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; +import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; +import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRecategorizationEntity; 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.annotations.RectangleEntity; +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.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.model.ManualChangesQueryOptions; @@ -40,6 +44,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionEntryMapper; import com.iqser.red.service.persistence.management.v1.processor.utils.ManualResizeRedactionMapper; import com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils; +import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.MessageType; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryType; @@ -94,8 +100,7 @@ public class ManualRedactionService { EntityLogMergeService entityLogMergeService; FileStatusPersistenceService fileStatusPersistenceService; ManualRedactionMapper manualRedactionMapper; - - private static final int MAX_LEGAL_BASIS_LENGTH = 4000; + RabbitTemplate rabbitTemplate; @Transactional @@ -133,7 +138,7 @@ public class ManualRedactionService { FileModel fileStatus = fileStatusService.getStatus(fileId); if (!localManualRedactionEntryEntities.isEmpty() && fileStatus.isExcludedFromAutomaticAnalysis()) { ManualRedactions manualRedactions = ManualRedactions.builder().entriesToAdd(convertEntriesToAdd(localManualRedactionEntryEntities)).build(); - entityLogMergeService.sendToAnalyseQueue(fileId, dossierEntity, fileStatusService.getStatus(fileId), manualRedactions); + sendToSurroundingTextAnalysisQueue(fileId, dossierEntity, fileStatusService.getStatus(fileId), manualRedactions); } else { reprocess(dossierId, fileId); } @@ -222,6 +227,7 @@ public class ManualRedactionService { } + @Deprecated(forRemoval = true) @Transactional public List addLegalBasisChange(String dossierId, String fileId, Set legalBasisChangeRequests) { @@ -233,8 +239,6 @@ public class ManualRedactionService { getEntityLogEntryConsumer(fileId)); for (var legalBasisChangeRequest : requests) { - checkLegalBasisLength(legalBasisChangeRequest.getLegalBasis()); - legalBasisChangePersistenceService.insert(fileId, legalBasisChangeRequest); Long commentId = commentService.addCommentAndGetId(fileId, @@ -273,9 +277,7 @@ public class ManualRedactionService { recategorizationRequest.getTypeToRemove(), recategorizationRequest.getDossierTemplateId()); - checkLegalBasisLength(recategorizationRequest.getLegalBasis()); - - recategorizationPersistenceService.insert(fileId, recategorizationRequest); + ManualRecategorizationEntity recategorizationEntity = recategorizationPersistenceService.createOrUpdate(fileId, recategorizationRequest); Set typeIdsOfDictionariesWithAdd = manualRedactionDictionaryUpdateHandler.handleAddToDictionaryAndReturnModifiedTypeIds(fileId, recategorizationRequest.getValue(), @@ -283,11 +285,9 @@ public class ManualRedactionService { Set typeIdsOfDictionariesWithDelete = manualRedactionDictionaryUpdateHandler.handleRemoveFromDictionaryAndReturnModifiedTypeIds(fileId, recategorizationRequest); + recategorizationEntity.setTypeIdsOfDictionariesWithAdd(typeIdsOfDictionariesWithAdd); + recategorizationEntity.setTypeIdsOfDictionariesWithDelete(typeIdsOfDictionariesWithDelete); - recategorizationPersistenceService.updateModifiedDictionaries(fileId, - recategorizationRequest.getAnnotationId(), - typeIdsOfDictionariesWithAdd, - typeIdsOfDictionariesWithDelete); Long commentId = commentService.addCommentAndGetId(fileId, recategorizationRequest.getAnnotationId(), @@ -295,6 +295,7 @@ public class ManualRedactionService { recategorizationRequest.getUser()); response.add(ManualAddResponse.builder().annotationId(recategorizationRequest.getAnnotationId()).commentId(commentId).build()); + recategorizationPersistenceService.saveAndFlush(recategorizationEntity); } reprocess(dossierId, fileId); @@ -305,14 +306,6 @@ public class ManualRedactionService { } - private void checkLegalBasisLength(String legalBasis) { - - if (legalBasis.length() > MAX_LEGAL_BASIS_LENGTH) { - throw new BadRequestException(String.format("The legal basis is too long (%s), max length %s", legalBasis.length(), MAX_LEGAL_BASIS_LENGTH)); - } - } - - @Transactional @Observed(name = "ManualRedactionService", contextualName = "add-manual-redaction") public List addResizeRedaction(String dossierId, String fileId, Set resizeRedactionRequests, boolean includeUnprocessed) { @@ -354,7 +347,7 @@ public class ManualRedactionService { FileModel fileStatus = fileStatusService.getStatus(fileId); if (!manualResizeRedactionEntities.isEmpty() && fileStatus.isExcludedFromAutomaticAnalysis()) { ManualRedactions manualRedactions = ManualRedactions.builder().resizeRedactions(convertResizeRedactions(manualResizeRedactionEntities)).build(); - entityLogMergeService.sendToAnalyseQueue(fileId, dossierPersistenceService.getAndValidateDossier(dossierId), fileStatusService.getStatus(fileId), manualRedactions); + sendToSurroundingTextAnalysisQueue(fileId, dossierPersistenceService.getAndValidateDossier(dossierId), fileStatusService.getStatus(fileId), manualRedactions); } else { reprocess(dossierId, fileId); } @@ -542,15 +535,23 @@ public class ManualRedactionService { } - public LegalBasisChangeRequestModel convertRecategorizationToLegalBasisChange(RecategorizationRequestModel recategorizationRequestModel) { + private void sendToSurroundingTextAnalysisQueue(String fileId, DossierEntity dossier, FileModel fileModel, ManualRedactions manualRedactions) { - return MagicConverter.convert(recategorizationRequestModel, LegalBasisChangeRequestModel.class); - } + var fileEntity = fileStatusPersistenceService.getStatus(fileId); + var analyseRequest = AnalyzeRequest.builder() + .messageType(MessageType.SURROUNDING_TEXT_ANALYSIS) + .dossierId(dossier.getId()) + .analysisNumber(fileModel.getNumberOfAnalyses() + 1) + .sectionsToReanalyse(Sets.newHashSet()) + .fileId(fileId) + .manualRedactions(manualRedactions) + .dossierTemplateId(dossier.getDossierTemplateId()) + .lastProcessed(fileModel.getLastProcessed()) + .fileAttributes(fileStatusService.convertAttributes(fileEntity.getFileAttributes(), dossier.getDossierTemplateId())) + .build(); - - public boolean isLegalBasisChangeRequest(RecategorizationRequestModel requestModel, EntityLogEntry entry) { - - return !ObjectUtils.isEmpty(requestModel.getLegalBasis()) && !requestModel.getLegalBasis().equals(entry.getLegalBasis()); + log.info("Sending Surrounding Text Analysis for unprocessed manual redactions: {} for file: {} ", manualRedactions, fileId); + rabbitTemplate.convertAndSend(MessagingConfiguration.REDACTION_PRIORITY_QUEUE, analyseRequest); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java index 467256b36..df299e0e1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java @@ -12,7 +12,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -188,17 +187,17 @@ public class ManualRedactionUndoService { deleteRecategorization(dossierId, fileId, manualRecategorizations, includeUnprocessed); manualRecategorizations.forEach(annotationId -> auditPersistenceService.audit(AuditRequest.builder() - .userId(KeycloakSecurity.getUserId()) - .objectId(fileId) - .category(AuditCategory.DOCUMENT.name()) - .message("Undo of manual recategorization was done.") - .details(Map.of(DOSSIER_ID, - dossierId, - FILE_ID, - fileId, - ANNOTATION_ID, - annotationId)) - .build())); + .userId(KeycloakSecurity.getUserId()) + .objectId(fileId) + .category(AuditCategory.DOCUMENT.name()) + .message("Undo of manual recategorization was done.") + .details(Map.of(DOSSIER_ID, + dossierId, + FILE_ID, + fileId, + ANNOTATION_ID, + annotationId)) + .build())); } } @@ -217,8 +216,10 @@ public class ManualRedactionUndoService { fileId, dossierId, recategorizationEntity.getTypeIdsOfDictionariesWithAdd()); - recategorizationPersistenceService.updateModifiedDictionaries(fileId, annotationId, Collections.emptySet(), Collections.emptySet()); - recategorizationPersistenceService.softDelete(fileId, annotationId, OffsetDateTime.now()); + recategorizationEntity.setTypeIdsOfDictionariesWithAdd(Collections.emptySet()); + recategorizationEntity.setTypeIdsOfDictionariesWithDelete(Collections.emptySet()); + recategorizationEntity.setSoftDeletedTime(OffsetDateTime.now()); + recategorizationPersistenceService.saveAndFlush(recategorizationEntity); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/PendingDictionaryEntryFactory.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/PendingDictionaryEntryFactory.java index 2991bce52..5ae2318d0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/PendingDictionaryEntryFactory.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/PendingDictionaryEntryFactory.java @@ -9,13 +9,13 @@ import java.util.stream.Collectors; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogMergeService; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryState; 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.model.analysislog.entitylog.Position; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualChangeFactory; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRecategorization; @@ -206,16 +206,9 @@ public class PendingDictionaryEntryFactory { } - public EntityLogEntry buildPendingImageRecategorizationEntry(ManualRecategorization manualChange, EntityLogEntry originalEntry) { - var manualChanges = List.of(ManualChange.builder() - .manualRedactionType(ManualRedactionType.RECATEGORIZE) - .requestedDate(manualChange.getRequestDate()) - .processedDate(manualChange.getProcessedDate()) - .userId(manualChange.getUser()) - .propertyChanges(EntityLogMergeService.getPropertyChanges(manualChange)) - .build()); + var manualChanges = List.of(ManualChangeFactory.toLocalManualChange(manualChange)); String reason = String.format("Image has been recategorized from %s to %s", originalEntry.getType(), manualChange.getType()); 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 83972ec30..0a2f6fb04 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 @@ -39,7 +39,7 @@ public class AddRedactionPersistenceService { BeanUtils.copyProperties(addRedactionRequest, manualRedactionEntry); manualRedactionEntry.setRequestDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); manualRedactionEntry.setPositions(convert(addRedactionRequest.getPositions())); - manualRedactionEntry.setTypeId(addRedactionRequest.getDossierTemplateTypeId()); + manualRedactionEntry.setTypeId(addRedactionRequest.getDictionaryTypeId()); manualRedactionEntry.setDictionaryEntryType(addRedactionRequest.getDictionaryEntryType()); manualRedactionEntry.setSection(addRedactionRequest.getSection()); 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 987ca5c7b..bb8749326 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 @@ -22,6 +22,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +@Deprecated(forRemoval = true) @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/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 e53b68948..a95bc1aae 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 @@ -5,14 +5,11 @@ import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Set; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRecategorizationEntity; -import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.model.ManualChangesQueryOptions; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RecategorizationRepository; @@ -26,42 +23,40 @@ import lombok.extern.slf4j.Slf4j; @RequiredArgsConstructor public class RecategorizationPersistenceService { - private final int SECTION_MAX_LENGTH = 1024; - private final RecategorizationRepository recategorizationRepository; - public void insert(String fileId, RecategorizationRequest recategorizationRequest) { + public ManualRecategorizationEntity createOrUpdate(String fileId, RecategorizationRequest request) { - ManualRecategorizationEntity manualRecategorization = new ManualRecategorizationEntity(); - manualRecategorization.setId(new AnnotationEntityId(recategorizationRequest.getAnnotationId(), fileId)); - checkSection(recategorizationRequest.getSection()); - BeanUtils.copyProperties(recategorizationRequest, manualRecategorization); - manualRecategorization.setRequestDate(OffsetDateTime.now()); - manualRecategorization.setTypeId(recategorizationRequest.getDossierTemplateTypeId()); - recategorizationRepository.saveAndFlush(manualRecategorization); + AnnotationEntityId id = new AnnotationEntityId(request.getAnnotationId(), fileId); - } + ManualRecategorizationEntity entity = recategorizationRepository.findById(id) + .orElse(ManualRecategorizationEntity.builder().id(id).build()); + entity.setUser(request.getUser()); - private void checkSection(String section) { - - if (!StringUtils.isEmpty(section) && section.length() > SECTION_MAX_LENGTH) { - throw new BadRequestException(String.format("The section is too long (%s), max length %s", section.length(), SECTION_MAX_LENGTH)); + if (request.getDictionaryTypeId() != null) { + entity.setTypeId(request.getDictionaryTypeId()); } - } + entity.setRequestDate(OffsetDateTime.now()); + entity.setPage(request.getPage()); + entity.setAddToDictionary(request.isAddToDictionary()); + entity.setAddToAllDossiers(request.isAddToAllDossiers()); - @Transactional - public void updateModifiedDictionaries(String fileId, String annotationId, Set typeIdsOfDictionaryWithAdd, Set typeIdsOfDictionaryWithDelete) { + if (request.getLegalBasis() != null) { + entity.setLegalBasis(request.getLegalBasis()); + } - ManualRecategorizationEntity addRedaction = recategorizationRepository.findById(new AnnotationEntityId(annotationId, fileId)) - .orElseThrow(() -> new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); + if (request.getSection() != null) { + entity.setSection(request.getSection()); + } - addRedaction.setTypeIdsOfDictionariesWithAdd(typeIdsOfDictionaryWithAdd); - addRedaction.setTypeIdsOfDictionariesWithDelete(typeIdsOfDictionaryWithDelete); - - recategorizationRepository.saveAndFlush(addRedaction); + if (request.getValue() != null) { + entity.setValue(request.getValue()); + } + entity.setProcessedDate(null); + return entity; } @@ -117,4 +112,11 @@ public class RecategorizationPersistenceService { recategorizationRepository.markAsProcessed(new AnnotationEntityId(annotationId, fileId), OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); } + + @Transactional + public void saveAndFlush(ManualRecategorizationEntity recategorizationEntity) { + + recategorizationRepository.saveAndFlush(recategorizationEntity); + } + } 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 c3f45155f..2d8a0017b 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 @@ -12,6 +12,7 @@ import org.springframework.data.repository.query.Param; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity; +@Deprecated(forRemoval = true) public interface LegalBasisChangeRepository extends JpaRepository, AnnotationEntityRepository { @Modifying diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRecategorizationMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRecategorizationMapper.java index 57db20cf4..d56fbb9e9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRecategorizationMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRecategorizationMapper.java @@ -10,7 +10,9 @@ public class ManualRecategorizationMapper implements BiConsumer manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), Set.of(RemoveRedactionRequestModel.builder() @@ -178,7 +175,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "type", true); assertThat(type.isDossierDictionaryOnly()).isTrue(); - assertThrows(FeignException.Forbidden.class, () -> + Assertions.assertThrows(FeignException.Forbidden.class, () -> manualRedactionClient.addRedactionBulk(dossier.getId(), file.getId(), @@ -1961,12 +1958,11 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThatThrownBy(() -> manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModelLongLegalBasis), false) .get(0)).isInstanceOf(FeignException.class).hasMessageContaining("The legal basis is too long"); - assertEquals("", - allManualRedactions.getRecategorizations() - .stream() - .filter(manualRecategorization -> manualRecategorization.getAnnotationId().equals("annotationId3")) - .findFirst() - .get().getLegalBasis()); + assertNull(allManualRedactions.getRecategorizations() + .stream() + .filter(manualRecategorization -> manualRecategorization.getAnnotationId().equals("annotationId3")) + .findFirst() + .get().getLegalBasis()); } @@ -2100,47 +2096,22 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToDictionary(false) .addToAllDossiers(false) .legalBasis("lb2") - .section("section") + .section("overriddenSection") .build(); manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel), false); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); - assertEquals(1, allManualRedactions.getLegalBasisChanges().size()); - assertTrue(allManualRedactions.getLegalBasisChanges() + assertEquals(1, allManualRedactions.getRecategorizations().size()); + assertTrue(allManualRedactions.getRecategorizations() .stream() .anyMatch(entry -> entry.getAnnotationId().equals("annotationId"))); - assertTrue(allManualRedactions.getLegalBasisChanges() + assertTrue(allManualRedactions.getRecategorizations() .stream() .anyMatch(entry -> entry.getLegalBasis().equals("lb2"))); - assertTrue(allManualRedactions.getLegalBasisChanges() + assertTrue(allManualRedactions.getRecategorizations() .stream() - .anyMatch(entry -> entry.getSection().equals("section"))); - } - - - @Test - public void testConvertRecategorizeToLegalBasisChange() { - - RecategorizationRequestModel r = RecategorizationRequestModel.builder() - .annotationId("id") - .type("type 1") - .comment("Kommi") - .addToDictionary(false) - .addToAllDossiers(false) - .section("here") - .legalBasis("some legal basis") - .value("val") - .build(); - - LegalBasisChangeRequestModel l = manualRedactionService.convertRecategorizationToLegalBasisChange(r); - - assertEquals(r.getAnnotationId(), l.getAnnotationId()); - assertEquals(r.getComment(), l.getComment()); - assertEquals(r.getLegalBasis(), l.getLegalBasis()); - assertEquals(r.getSection(), l.getSection()); - assertEquals(r.getValue(), l.getValue()); - + .anyMatch(entry -> entry.getSection().equals("overriddenSection"))); } @@ -2203,9 +2174,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .value("Image:Other") .build(); - var resp = manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false); - System.out.println(resp); + var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); + + assertTrue(allManualRedactions.getRecategorizations() + .stream() + .anyMatch(manualRecategorization -> manualRecategorization.getType().equals(typeLogo.getType()))); } @@ -2269,9 +2244,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .value("Ranya Eikenboom") .build(); - var resp = manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false); - System.out.println(resp); + var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); + + assertTrue(allManualRedactions.getRecategorizations() + .stream() + .anyMatch(manualRecategorization -> manualRecategorization.getLegalBasis().equals(recategorizationRequestModel.getLegalBasis()))); } 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/ManualChange.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/ManualChange.java index 05bd44e24..d660bb1fd 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/ManualChange.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/ManualChange.java @@ -49,6 +49,9 @@ public class ManualChange { public ManualChange withChange(String property, String value) { + if (value == null) { + return this; + } this.propertyChanges.put(property, value); return this; } 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/ManualRedactionType.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/ManualRedactionType.java index 715bc511d..8e2c5ea7d 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/ManualRedactionType.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/ManualRedactionType.java @@ -18,7 +18,7 @@ public enum ManualRedactionType { FORCE, RECATEGORIZE, RECATEGORIZE_IN_DICTIONARY, - LEGAL_BASIS_CHANGE, + @Deprecated LEGAL_BASIS_CHANGE, RESIZE, RESIZE_IN_DICTIONARY } 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/AddRedactionRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/AddRedactionRequest.java index ee473a371..9f8fe0114 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/AddRedactionRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/AddRedactionRequest.java @@ -17,7 +17,7 @@ import lombok.NoArgsConstructor; public class AddRedactionRequest implements ManualRequestWithAddToDictionary { private String user; - private String dossierTemplateTypeId; + private String dictionaryTypeId; private String value; private String reason; private String legalBasis; 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/LegalBasisChangeRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java index 881a9b943..31be31923 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java @@ -5,6 +5,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor 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/ManualChangeFactory.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualChangeFactory.java new file mode 100644 index 000000000..320c6f0b4 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualChangeFactory.java @@ -0,0 +1,66 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.model.annotations; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.stream.Collectors; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; +import com.iqser.red.service.persistence.service.v1.api.shared.model.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.model.annotations.entitymapped.BaseAnnotation; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualLegalBasisChange; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRecategorization; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction; + +import lombok.experimental.UtilityClass; + +@UtilityClass +public class ManualChangeFactory { + + public List toLocalManualChangeList(List manualChanges, boolean markAsProcessed) { + + return manualChanges.stream() + .map(ManualChangeFactory::toLocalManualChange) + .peek(manualChange -> { + if (markAsProcessed) { + manualChange.setProcessedDate(OffsetDateTime.now()); + } + }) + .collect(Collectors.toList()); + } + + + public ManualChange toLocalManualChange(BaseAnnotation baseAnnotation) { + + if (!baseAnnotation.isLocal()) { + throw new IllegalArgumentException(String.format("Manual change %s is not a local manual change", baseAnnotation)); + } + + ManualChange manualChange = ManualChange.from(baseAnnotation); + if (baseAnnotation instanceof ManualRecategorization recategorization) { + manualChange.withManualRedactionType(ManualRedactionType.RECATEGORIZE) + .withChange("type", recategorization.getType()) + .withChange("section", recategorization.getSection()) + .withChange("legalBasis", recategorization.getLegalBasis()) + .withChange("value", recategorization.getValue()); + } else if (baseAnnotation instanceof IdRemoval) { + manualChange.withManualRedactionType(ManualRedactionType.REMOVE); + } else if (baseAnnotation instanceof ManualForceRedaction manualForceRedaction) { + manualChange.withManualRedactionType(ManualRedactionType.FORCE).withChange("legalBasis", manualForceRedaction.getLegalBasis()); + } else if (baseAnnotation instanceof ManualResizeRedaction manualResizeRedact) { + manualChange.withManualRedactionType(ManualRedactionType.RESIZE).withChange("value", manualResizeRedact.getValue()); + } else if (baseAnnotation instanceof ManualRedactionEntry manualRedactionEntry) { + manualChange.withManualRedactionType(ManualRedactionType.ADD).withChange("value", manualRedactionEntry.getValue()); + } else if (baseAnnotation instanceof ManualLegalBasisChange manualLegalBasisChange) { + manualChange.withManualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE) + .withChange("section", manualLegalBasisChange.getSection()) + .withChange("value", manualLegalBasisChange.getValue()) + .withChange("legalBasis", manualLegalBasisChange.getLegalBasis()); + } + return manualChange; + } + +} \ No newline at end of file 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/ManualRequestWithAddToDictionary.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRequestWithAddToDictionary.java index 4c42146dc..bdbcdb35d 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRequestWithAddToDictionary.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRequestWithAddToDictionary.java @@ -19,7 +19,7 @@ public interface ManualRequestWithAddToDictionary { boolean isForceAddToDictionary(); - String getDossierTemplateTypeId(); + String getDictionaryTypeId(); DictionaryEntryType getDictionaryEntryType(); 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/RecategorizationRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/RecategorizationRequest.java index 889688aa6..2ddf01546 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/RecategorizationRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/RecategorizationRequest.java @@ -22,7 +22,7 @@ public class RecategorizationRequest implements ManualRequestWithAddToDictionary String typeToRemove; String dossierTemplateId; String dossierId; - String dossierTemplateTypeId; + String dictionaryTypeId; String comment; int page; boolean addToDictionary; 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/entitymapped/ManualLegalBasisChange.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java index c04f12e80..c06399fef 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java @@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +@Deprecated(forRemoval = true) @Data @SuperBuilder @NoArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java index 5691ee273..66c230dd8 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.NonNull; +@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor