Resolve RED-8480 "3" #459

Merged
ali.oezyetimoglu1 merged 3 commits from RED-8480-3 into master 2024-04-18 15:41:07 +02:00
14 changed files with 270 additions and 71 deletions

View File

@ -6,6 +6,8 @@ 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.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -20,6 +22,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,6 +30,7 @@ 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.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;
@ -63,6 +67,7 @@ public class ManualRedactionController implements ManualRedactionResource {
AccessControlService accessControlService;
CommentService commentService;
FileStatusManagementService fileStatusManagementService;
EntityLogService entityLogService;
@Override
@ -251,6 +256,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()
@ -260,7 +271,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;
}
@ -276,11 +286,42 @@ public class ManualRedactionController implements ManualRedactionResource {
accessControlService.verifyFileIsNotApproved(dossierId, fileId);
accessControlService.verifyUserIsMemberOrApprover(dossierId);
List<ManualAddResponse> responseList = manualRedactionService.addRecategorization(dossierId,
fileId,
dossier.getDossierTemplateId(),
recategorizationRequests,
includeUnprocessed);
EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, 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, dossierTemplateId, recategorizationRequests, includeUnprocessed);
responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder()
.userId(KeycloakSecurity.getUserId())

View File

@ -14,7 +14,6 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Deprecated(forRemoval = true)
@Data
@Builder
@AllArgsConstructor

View File

@ -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<>();
@ -413,8 +411,6 @@ public class EntityLogMergeService {
entityLogEntry.setEntryType(getEntryType(isHint, recategorization.getType()));
entityLogEntry.setState(isHint ? EntryState.SKIPPED : EntryState.APPLIED); // TODO: only set applied if legalBasis is set by recategorization
entityLogEntry.getEngines().add(Engine.MANUAL);
if (!Strings.isNullOrEmpty(recategorization.getLegalBasis())) {

View File

@ -138,7 +138,6 @@ public class ManualRedactionMapper {
}
@Deprecated(forRemoval = true)
public List<LegalBasisChangeRequest> toLegalBasisChangeRequestList(String dossierId,
String fileId,
Set<LegalBasisChangeRequestModel> legalBasisChangeRequests,

View File

@ -13,6 +13,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;
@ -230,7 +231,6 @@ public class ManualRedactionService {
}
@Deprecated(forRemoval = true)
@Transactional
public List<ManualAddResponse> addLegalBasisChange(String dossierId, String fileId, Set<LegalBasisChangeRequestModel> legalBasisChangeRequests) {
@ -239,6 +239,8 @@ public class ManualRedactionService {
var requests = manualRedactionMapper.toLegalBasisChangeRequestList(dossierId, fileId, legalBasisChangeRequests, getEntityLogEntryConsumer(fileId));
for (var legalBasisChangeRequest : requests) {
checkLegalBasisLength(legalBasisChangeRequest.getLegalBasis());
legalBasisChangePersistenceService.insert(fileId, legalBasisChangeRequest);
Long commentId = commentService.addCommentAndGetId(fileId,
@ -538,4 +540,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());
}
}

View File

@ -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

View File

@ -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

View File

@ -197,3 +197,5 @@ databaseChangeLog:
file: db/changelog/tenant/124-create-migration-required-status-for-each-present-file.yaml
- include:
file: db/changelog/tenant/sql/207-acl-migration-cleanup.sql
- include:
file: db/changelog/tenant/125-add-max-size-for-legal-basis-in-manual-legal-basis-change.yaml

View File

@ -0,0 +1,9 @@
databaseChangeLog:
- changeSet:
id: add-legal-basis-change-to-manual-recategorization
author: ali
changes:
- modifyDataType:
columnName: legal_basis
newDataType: VARCHAR(4000)
tableName: manual_legal_basis_change

View File

@ -12,6 +12,7 @@ import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@ -38,19 +39,26 @@ 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;
import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult;
import com.iqser.red.service.persistence.service.v1.api.shared.model.Dictionary;
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel;
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;
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.EntityLogLegalBasis;
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.Position;
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.Rectangle;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddRedactionRequestModel;
@ -113,6 +121,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
@Autowired
private FileProcessingClient fileProcessingClient;
@Autowired
private ManualRedactionService manualRedactionService;
@Test
public void testRemoveToDossierTemplateWithDossierDictionaryOnlyTrue() {
@ -2098,14 +2109,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")));
}
@ -2131,14 +2142,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.legalBasis("legal basis")
.positions(List.of(new Position(1, 1, 1, 1, 1)))
.build();
var entityLog = new EntityLog(1,
1,
List.of(entityLogEntry),
null,
0,
0,
0,
0);
var entityLog = new EntityLog(1, 1, List.of(entityLogEntry), null, 0, 0, 0, 0);
fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog);
when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog);
@ -2156,7 +2160,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
assertEquals(allManualRedactions.getRecategorizations().size(), 1);
assertEquals(allManualRedactions.getEntriesToAdd().size(), 1);
var entryToAdd = allManualRedactions.getEntriesToAdd().stream().findFirst().get();
var entryToAdd = allManualRedactions.getEntriesToAdd()
.stream()
.findFirst()
.get();
assertFalse(entryToAdd.isAddToDictionary());
assertFalse(entryToAdd.isAddToDossierDictionary());
assertEquals(entryToAdd.getValue(), entityLogEntry.getValue());
@ -2183,14 +2190,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.legalBasis("legal basis")
.positions(List.of(new Position(1, 1, 1, 1, 1)))
.build();
var entityLog = new EntityLog(1,
1,
List.of(entityLogEntry),
null,
0,
0,
0,
0);
var entityLog = new EntityLog(1, 1, List.of(entityLogEntry), null, 0, 0, 0, 0);
fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog);
when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog);
@ -2206,7 +2206,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
assertEquals(allManualRedactions.getLegalBasisChanges().size(), 1);
assertEquals(allManualRedactions.getEntriesToAdd().size(), 1);
var entryToAdd = allManualRedactions.getEntriesToAdd().stream().findFirst().get();
var entryToAdd = allManualRedactions.getEntriesToAdd()
.stream()
.findFirst()
.get();
assertFalse(entryToAdd.isAddToDictionary());
assertFalse(entryToAdd.isAddToDossierDictionary());
assertEquals(entryToAdd.getValue(), entityLogEntry.getValue());
@ -2233,14 +2236,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.legalBasis("legal basis")
.positions(List.of(new Position(1, 1, 1, 1, 1)))
.build();
var entityLog = new EntityLog(1,
1,
List.of(entityLogEntry),
null,
0,
0,
0,
0);
var entityLog = new EntityLog(1, 1, List.of(entityLogEntry), null, 0, 0, 0, 0);
fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog);
when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog);
@ -2258,7 +2254,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
assertEquals(allManualRedactions.getResizeRedactions().size(), 1);
assertEquals(allManualRedactions.getEntriesToAdd().size(), 1);
var entryToAdd = allManualRedactions.getEntriesToAdd().stream().findFirst().get();
var entryToAdd = allManualRedactions.getEntriesToAdd()
.stream()
.findFirst()
.get();
assertFalse(entryToAdd.isAddToDictionary());
assertFalse(entryToAdd.isAddToDossierDictionary());
assertEquals(entryToAdd.getValue(), entityLogEntry.getValue());
@ -2284,20 +2283,11 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.legalBasis("legal basis")
.positions(List.of(new Position(1, 1, 1, 1, 1)))
.build();
var entityLog = new EntityLog(1,
1,
List.of(entityLogEntry),
null,
0,
0,
0,
0);
var entityLog = new EntityLog(1, 1, List.of(entityLogEntry), null, 0, 0, 0, 0);
fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog);
when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog);
var forceRedactionRequestModel = ForceRedactionRequestModel.builder()
.annotationId("annotationId")
.build();
var forceRedactionRequestModel = ForceRedactionRequestModel.builder().annotationId("annotationId").build();
manualRedactionClient.forceRedactionBulk(dossier.getId(), file.getId(), Set.of(forceRedactionRequestModel));
@ -2305,7 +2295,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
assertEquals(allManualRedactions.getForceRedactions().size(), 1);
assertEquals(allManualRedactions.getEntriesToAdd().size(), 1);
var entryToAdd = allManualRedactions.getEntriesToAdd().stream().findFirst().get();
var entryToAdd = allManualRedactions.getEntriesToAdd()
.stream()
.findFirst()
.get();
assertFalse(entryToAdd.isAddToDictionary());
assertFalse(entryToAdd.isAddToDossierDictionary());
assertEquals(entryToAdd.getValue(), entityLogEntry.getValue());
@ -2331,14 +2324,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.legalBasis("legal basis")
.positions(List.of(new Position(1, 1, 1, 1, 1)))
.build();
var entityLog = new EntityLog(1,
1,
List.of(entityLogEntry),
null,
0,
0,
0,
0);
var entityLog = new EntityLog(1, 1, List.of(entityLogEntry), null, 0, 0, 0, 0);
fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog);
when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog);
@ -2351,8 +2337,166 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.sourceId("sourceId")
.build();
String errorMessage = assertThrows(FeignException.BadRequest.class, () -> manualRedactionClient.addRedactionBulk(dossier.getId(), file.getId(), Set.of(addRedactionRequest))).getMessage();
String errorMessage = assertThrows(FeignException.BadRequest.class,
() -> manualRedactionClient.addRedactionBulk(dossier.getId(), file.getId(), Set.of(addRedactionRequest))).getMessage();
assertTrue(errorMessage.contains("Redaction value can not exceed 4000 characters"));
}
@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());
}
@Test
public void testRecategorizeImageToLogo() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
var file = fileTesterAndProvider.testAndProvideFile(dossier);
var typeImage = typeProvider.testAndProvideType(dossierTemplate, null, "image", false, 999);
var typeLogo = typeProvider.testAndProvideType(dossierTemplate, null, "logo", false, 1001);
var entityLogEntry = EntityLogEntry.builder()
.id("annotationId")
.type(typeImage.getType())
.entryType(EntryType.IMAGE_HINT)
.state(EntryState.SKIPPED)
.value("Image:Other")
.reason("")
.matchedRule("")
.legalBasis("")
.imported(false)
.containingNodeId(List.of(31, 12))
.closestHeadline("Images: Regular ")
.section("[31]: Section: Images: Regular Images: Formular")
.color(null)
.positions(List.of(new Position(1, 1, 1, 1, 1)))
.textBefore(null)
.textAfter(null)
.startOffset(0)
.endOffset(0)
.imageHasTransparency(false)
.dictionaryEntry(false)
.dossierDictionaryEntry(false)
.excluded(false)
.changes(List.of(new Change(1, ChangeType.ADDED, OffsetDateTime.now())))
.build();
var entityLog = new EntityLog(1,
1,
List.of(entityLogEntry),
List.of(new EntityLogLegalBasis("1.1 personal data (incl. geolocation); Article 39(e)(3)",
"desc",
"Article 39(e)(3) of Regulation (EC) No 178/2002"),
new EntityLogLegalBasis("4. commercial information",
"desc 2",
"Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)")),
0,
0,
0,
0);
fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog);
when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog);
var recategorizationRequestModel = RecategorizationRequestModel.builder()
.annotationId("annotationId")
.legalBasis("")
.section("[31]: Section: Images: Regular Images: Formular")
.type(typeLogo.getType())
.value("Image:Other")
.build();
var resp = manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false);
System.out.println(resp);
}
@Test
public void testLegalBasisChangeCbiAuthor() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
var file = fileTesterAndProvider.testAndProvideFile(dossier);
var type = typeProvider.testAndProvideType(dossierTemplate, null, "CBI_author", false);
var entityLogEntry = EntityLogEntry.builder()
.id("annotationId")
.type(type.getType())
.entryType(EntryType.ENTITY)
.state(EntryState.APPLIED)
.value("Ranya Eikenboom")
.reason("Author found")
.matchedRule("CBI.0.0")
.legalBasis("Article 39(e)(3) of Regulation (EC) No 178/2002")
.imported(false)
.containingNodeId(List.of(1, 1, 1))
.closestHeadline("CBI.0.0/1: Redact CBI Authors ")
.section("[1, 1, 1]: Paragraph: David Ksenia Max Mustermann")
.color(null)
.positions(List.of(new Position(1, 1, 1, 1, 1)))
.textBefore("Ksenia Max Mustermann ")
.textAfter(" Charalampos Schenk")
.startOffset(197)
.endOffset(212)
.imageHasTransparency(false)
.dictionaryEntry(true)
.dossierDictionaryEntry(false)
.excluded(false)
.changes(List.of(new Change(1, ChangeType.ADDED, OffsetDateTime.now())))
.engines(Set.of(Engine.DICTIONARY))
.build();
var entityLog = new EntityLog(1,
1,
List.of(entityLogEntry),
List.of(new EntityLogLegalBasis("1.1 personal data (incl. geolocation); Article 39(e)(3)",
"desc",
"Article 39(e)(3) of Regulation (EC) No 178/2002"),
new EntityLogLegalBasis("4. commercial information",
"desc 2",
"Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)")),
0,
0,
0,
0);
fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog);
when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog);
var recategorizationRequestModel = RecategorizationRequestModel.builder()
.annotationId("annotationId")
.legalBasis("Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)")
.section("[1, 1, 1]: Paragraph: David Ksenia Max Mustermann")
.type(type.getType())
.value("Ranya Eikenboom")
.build();
var resp = manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recategorizationRequestModel), false);
System.out.println(resp);
}
}

View File

@ -13,7 +13,7 @@ public enum ManualRedactionType {
FORCE,
RECATEGORIZE,
RECATEGORIZE_IN_DICTIONARY,
@Deprecated LEGAL_BASIS_CHANGE,
LEGAL_BASIS_CHANGE,
RESIZE,
RESIZE_IN_DICTIONARY
}

View File

@ -5,7 +5,6 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Deprecated(forRemoval = true)
@Data
@Builder
@AllArgsConstructor

View File

@ -6,7 +6,6 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@Deprecated(forRemoval = true)
@Data
@SuperBuilder
@NoArgsConstructor

View File

@ -6,7 +6,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@Deprecated(forRemoval = true)
@Data
@Builder
@AllArgsConstructor