RED-8480: differenciate between recategorize and legal basis change
This commit is contained in:
parent
544e188e9b
commit
0a7108c152
@ -6,6 +6,9 @@ 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;
|
||||
@ -20,6 +23,7 @@ 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;
|
||||
@ -27,17 +31,12 @@ 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.annotations.AddRedactionRequest;
|
||||
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.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;
|
||||
@ -69,6 +68,7 @@ public class ManualRedactionController implements ManualRedactionResource {
|
||||
AccessControlService accessControlService;
|
||||
CommentService commentService;
|
||||
FileStatusManagementService fileStatusManagementService;
|
||||
EntityLogService entityLogService;
|
||||
|
||||
|
||||
@Override
|
||||
@ -257,6 +257,12 @@ public class ManualRedactionController implements ManualRedactionResource {
|
||||
accessControlService.verifyFileIsNotApproved(dossierId, fileId);
|
||||
accessControlService.verifyUserIsMemberOrApprover(dossierId);
|
||||
|
||||
return handleLegalBasisChanges(dossierId, fileId, legalBasisChangeRequests);
|
||||
}
|
||||
|
||||
|
||||
private List<ManualAddResponse> handleLegalBasisChanges(String dossierId, String fileId, Set<LegalBasisChangeRequestModel> legalBasisChangeRequests) {
|
||||
|
||||
List<ManualAddResponse> responseList = manualRedactionService.addLegalBasisChange(dossierId, fileId, legalBasisChangeRequests);
|
||||
|
||||
responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder()
|
||||
@ -266,7 +272,6 @@ 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;
|
||||
}
|
||||
|
||||
@ -282,11 +287,42 @@ public class ManualRedactionController implements ManualRedactionResource {
|
||||
accessControlService.verifyFileIsNotApproved(dossierId, fileId);
|
||||
accessControlService.verifyUserIsMemberOrApprover(dossierId);
|
||||
|
||||
List<ManualAddResponse> responseList = manualRedactionService.addRecategorization(dossierId,
|
||||
fileId,
|
||||
recategorizationRequests,
|
||||
dossier.getDossierTemplateId(),
|
||||
includeUnprocessed);
|
||||
EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed);
|
||||
|
||||
Set<RecategorizationRequestModel> recategorizations = new HashSet<>();
|
||||
Set<LegalBasisChangeRequestModel> 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<ManualAddResponse> responseList = new ArrayList<>();
|
||||
|
||||
responseList.addAll(handleLegalBasisChanges(dossierId, fileId, legalBasisChanges));
|
||||
responseList.addAll(handleRectegorizations(dossierId, fileId, recategorizations, includeUnprocessed, dossier.getDossierTemplateId()));
|
||||
|
||||
return responseList;
|
||||
}
|
||||
|
||||
|
||||
private List<ManualAddResponse> handleRectegorizations(String dossierId,
|
||||
String fileId,
|
||||
Set<RecategorizationRequestModel> recategorizationRequests,
|
||||
boolean includeUnprocessed,
|
||||
String dossierTemplateId) {
|
||||
|
||||
List<ManualAddResponse> responseList = manualRedactionService.addRecategorization(dossierId, fileId, recategorizationRequests, dossierTemplateId, includeUnprocessed);
|
||||
|
||||
responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder()
|
||||
.userId(KeycloakSecurity.getUserId())
|
||||
|
||||
@ -14,7 +14,6 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
|
||||
@ -357,7 +357,6 @@ public class EntityLogMergeService {
|
||||
}
|
||||
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
private void mergeLegalBasisChange(ManualLegalBasisChange manualLegalBasisChange,
|
||||
EntityLogEntry entityLogEntry,
|
||||
int analysisNumber) {
|
||||
@ -379,7 +378,6 @@ public class EntityLogMergeService {
|
||||
}
|
||||
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
private Map<String, String> getPropertyChanges(ManualLegalBasisChange manualLegalBasisChange) {
|
||||
|
||||
Map<String, String> propertyChanges = new HashMap<>();
|
||||
|
||||
@ -137,7 +137,6 @@ public class ManualRedactionMapper {
|
||||
}
|
||||
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
public List<LegalBasisChangeRequest> toLegalBasisChangeRequestList(String dossierId,
|
||||
String fileId,
|
||||
Set<LegalBasisChangeRequestModel> legalBasisChangeRequests,
|
||||
|
||||
@ -14,6 +14,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import com.google.common.hash.HashFunction;
|
||||
import com.google.common.hash.Hashing;
|
||||
@ -221,7 +222,6 @@ public class ManualRedactionService {
|
||||
}
|
||||
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
@Transactional
|
||||
public List<ManualAddResponse> addLegalBasisChange(String dossierId, String fileId, Set<LegalBasisChangeRequestModel> legalBasisChangeRequests) {
|
||||
|
||||
@ -233,6 +233,8 @@ public class ManualRedactionService {
|
||||
getEntityLogEntryConsumer(fileId));
|
||||
|
||||
for (var legalBasisChangeRequest : requests) {
|
||||
checkLegalBasisLength(legalBasisChangeRequest.getLegalBasis());
|
||||
|
||||
legalBasisChangePersistenceService.insert(fileId, legalBasisChangeRequest);
|
||||
|
||||
Long commentId = commentService.addCommentAndGetId(fileId,
|
||||
@ -318,8 +320,7 @@ public class ManualRedactionService {
|
||||
List<ManualAddResponse> response = new ArrayList<>();
|
||||
List<ManualResizeRedactionEntity> manualResizeRedactionEntities = new ArrayList<>();
|
||||
EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed);
|
||||
List<ResizeRedactionRequest> requests = manualRedactionMapper.toResizeRedactionRequestList(resizeRedactionRequests, entityLog,
|
||||
getEntityLogEntryConsumer(fileId));
|
||||
List<ResizeRedactionRequest> requests = manualRedactionMapper.toResizeRedactionRequestList(resizeRedactionRequests, entityLog, getEntityLogEntryConsumer(fileId));
|
||||
|
||||
for (ResizeRedactionRequest resizeRedactionRequest : requests) {
|
||||
|
||||
@ -540,4 +541,16 @@ public class ManualRedactionService {
|
||||
return entry -> addManualRedactionEntry(fileId, entry);
|
||||
}
|
||||
|
||||
|
||||
public LegalBasisChangeRequestModel convertRecategorizationToLegalBasisChange(RecategorizationRequestModel recategorizationRequestModel) {
|
||||
|
||||
return MagicConverter.convert(recategorizationRequestModel, LegalBasisChangeRequestModel.class);
|
||||
}
|
||||
|
||||
|
||||
public boolean isLegalBasisChangeRequest(RecategorizationRequestModel requestModel, EntityLogEntry entry) {
|
||||
|
||||
return !ObjectUtils.isEmpty(requestModel.getLegalBasis()) && !requestModel.getLegalBasis().equals(entry.getLegalBasis());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -22,7 +22,6 @@ 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
|
||||
|
||||
@ -12,7 +12,6 @@ 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<ManualLegalBasisChangeEntity, AnnotationEntityId>, AnnotationEntityRepository {
|
||||
|
||||
@Modifying
|
||||
|
||||
@ -35,6 +35,7 @@ import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPers
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
|
||||
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.redactionlog.RedactionRequest;
|
||||
@ -112,6 +113,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private FileProcessingClient fileProcessingClient;
|
||||
|
||||
@Autowired
|
||||
private ManualRedactionService manualRedactionService;
|
||||
|
||||
|
||||
@Test
|
||||
public void testRemoveToDossierTemplateWithDossierDictionaryOnlyTrue() {
|
||||
@ -2098,14 +2102,14 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel), false);
|
||||
|
||||
var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true);
|
||||
assertEquals(1, allManualRedactions.getRecategorizations().size());
|
||||
assertTrue(allManualRedactions.getRecategorizations()
|
||||
assertEquals(1, allManualRedactions.getLegalBasisChanges().size());
|
||||
assertTrue(allManualRedactions.getLegalBasisChanges()
|
||||
.stream()
|
||||
.anyMatch(entry -> entry.getAnnotationId().equals("annotationId")));
|
||||
assertTrue(allManualRedactions.getRecategorizations()
|
||||
assertTrue(allManualRedactions.getLegalBasisChanges()
|
||||
.stream()
|
||||
.anyMatch(entry -> entry.getLegalBasis().equals("lb2")));
|
||||
assertTrue(allManualRedactions.getRecategorizations()
|
||||
assertTrue(allManualRedactions.getLegalBasisChanges()
|
||||
.stream()
|
||||
.anyMatch(entry -> entry.getSection().equals("section")));
|
||||
}
|
||||
|
||||
@ -5,7 +5,6 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
|
||||
@ -6,7 +6,6 @@ import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
|
||||
@ -6,7 +6,6 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user