From 540129a0514ffcfd4cb0283df9fbcab817111182 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 13 Mar 2024 15:26:35 +0100 Subject: [PATCH 01/32] RED-8702 --- .../service/EntityLogMergeService.java | 16 +- .../processor/service/EntityLogService.java | 2 +- .../ManualRedactionMapper.java | 3 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 2 +- .../PendingDictionaryEntryFactory.java | 8 +- .../service/FileTesterAndProvider.java | 6 +- .../integration/tests/EntityLogMergeTest.java | 36 ++-- .../v1/server/integration/tests/FileTest.java | 7 +- .../tests/ManualRedactionTest.java | 166 ++++++++++++------ .../AbstractPersistenceServerServiceTest.java | 6 +- .../build.gradle.kts | 3 + .../analysislog/entitylog/CascadeSave.java | 12 ++ .../analysislog/entitylog/EntityLog.java | 42 +++++ .../analysislog/entitylog/EntityLogEntry.java | 6 +- 15 files changed, 225 insertions(+), 92 deletions(-) create mode 100644 persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/CascadeSave.java 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 12ba5b1ea..a588c72e5 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 @@ -81,7 +81,7 @@ public class EntityLogMergeService { List matchingEntities = entityLog.getEntityLogEntry() .stream() - .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getId())) + .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getEntryId())) .collect(Collectors.toList()); final int analysisNumber = entityLog.getAnalysisNumber(); @@ -143,7 +143,7 @@ public class EntityLogMergeService { private EntityLogEntry findMatchingEntry(String annotationId, List matchingEntities) { return matchingEntities.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(annotationId)) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(annotationId)) .findAny() .orElseThrow(() -> new NotFoundException("No matching EntityLogEntry found for id " + annotationId)); } @@ -182,7 +182,7 @@ public class EntityLogMergeService { boolean isHint = isHint(manualRedactionEntry.getType(), dossier); EntityLogEntry entityLogEntry = EntityLogEntry.builder() - .id(manualRedactionEntry.getAnnotationId()) + .entryId(manualRedactionEntry.getAnnotationId()) .type(manualRedactionEntry.getType()) .value(manualRedactionEntry.getValue()) .legalBasis(manualRedactionEntry.getLegalBasis()) @@ -237,7 +237,7 @@ public class EntityLogMergeService { private void mergeIdsToRemove(IdRemoval idRemoval, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(idRemoval.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(idRemoval.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setState(EntryState.IGNORED); @@ -258,7 +258,7 @@ public class EntityLogMergeService { private void mergeResizeRedactions(ManualResizeRedaction manualResizeRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(manualResizeRedaction.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(manualResizeRedaction.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setTextAfter(manualResizeRedaction.getTextAfter()); @@ -283,7 +283,7 @@ public class EntityLogMergeService { private void mergeLegalBasisChanges(ManualLegalBasisChange manualLegalBasisChange, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(manualLegalBasisChange.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(manualLegalBasisChange.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis()); @@ -325,7 +325,7 @@ public class EntityLogMergeService { boolean isHint = isHint(recategorization.getType(), dossier); var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(recategorization.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(recategorization.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setType(recategorization.getType()); @@ -348,7 +348,7 @@ public class EntityLogMergeService { private void mergeForceRedactions(ManualForceRedaction forceRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(forceRedaction.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(forceRedaction.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setLegalBasis(forceRedaction.getLegalBasis()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java index d763854da..dd6e406a7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java @@ -80,7 +80,7 @@ public class EntityLogService { Map commentCountPerAnnotationId = commentService.getCommentCounts(fileId); entityLog.getEntityLogEntry() - .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getId(), 0))); + .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getEntryId(), 0))); return entityLog; } 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 83a314bae..f667dabe4 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 @@ -10,7 +10,6 @@ import java.util.Set; import org.springframework.stereotype.Service; -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.EntityLog; @@ -187,7 +186,7 @@ public class ManualRedactionMapper { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getId().equals(annotationId)) + .filter(entry -> entry.getEntryId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 82e4549a5..f3c56a10a 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 @@ -348,7 +348,7 @@ public class ManualRedactionService { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getId().equals(annotationId)) + .filter(entry -> entry.getEntryId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 d753850c1..b47411bba 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 @@ -343,7 +343,7 @@ public class ManualRedactionUndoService { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getId().equals(annotationId)) + .filter(entry -> entry.getEntryId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 6c9a317ed..8c53a07d0 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 @@ -35,7 +35,7 @@ public class PendingDictionaryEntryFactory { .propertyChanges(Map.of("value", manualRedactionEntry.getValue())) .build()); return EntityLogEntry.builder() - .id(manualRedactionEntry.getAnnotationId()) + .entryId(manualRedactionEntry.getAnnotationId()) .value(manualRedactionEntry.getValue()) .type(manualRedactionEntry.getType()) .entryType(Optional.ofNullable(manualRedactionEntry.getDictionaryEntryType()) @@ -82,7 +82,7 @@ public class PendingDictionaryEntryFactory { .build()); return EntityLogEntry.builder() - .id(originalEntry.getId()) + .entryId(originalEntry.getEntryId()) .value(originalEntry.getValue()) .type(originalEntry.getType()) .entryType(originalEntry.getEntryType()) @@ -121,7 +121,7 @@ public class PendingDictionaryEntryFactory { .propertyChanges(propertyChanges) .build()); return EntityLogEntry.builder() - .id(originalEntry.getId()) + .entryId(originalEntry.getEntryId()) .value(manualChange.getValue()) .type(originalEntry.getType()) .entryType(originalEntry.getEntryType()) @@ -171,7 +171,7 @@ public class PendingDictionaryEntryFactory { .build()); return EntityLogEntry.builder() - .id(originalEntry.getId()) + .entryId(originalEntry.getEntryId()) .value(originalEntry.getValue()) .type(manualChange.getType()) .entryType(originalEntry.getEntryType()) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index e856e1b16..8ffe31af6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -67,10 +67,12 @@ public class FileTesterAndProvider { fileManagementStorageService.storeJSONObject(dossier.getId(), file.getFileId(), FileType.ENTITY_LOG, - new EntityLog(1, + new EntityLog(dossier.getId(), + fileId, + 1, 1, List.of(EntityLogEntry.builder() - .id("annotationId") + .entryId("annotationId") .type("manual") .value("value entry") .entryType(EntryType.ENTITY) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java index 7a041bc58..2de272ccf 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java @@ -120,7 +120,7 @@ public class EntityLogMergeTest { ManualRedactions manualRedactions = provideManualRedactions(entryToAddId, entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId, fileId, rectangleToAddId); - var entityLog = provideEntityLog(entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId); + var entityLog = provideEntityLog(dossierId, fileId, entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId); when(manualRedactionProviderService.getManualRedactions(any(), any())).thenReturn(manualRedactions); when(fileStatusService.getStatus(fileId)).thenReturn(FileModel.builder().excluded(false).dossierStatusId(dossierTemplateId).id(fileId).build()); @@ -137,7 +137,7 @@ public class EntityLogMergeTest { var optionalEntityLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToAddId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToAddId)) .findFirst(); assertTrue(optionalEntityLogEntry.isPresent()); var entityLogEntry = optionalEntityLogEntry.get(); @@ -152,7 +152,7 @@ public class EntityLogMergeTest { var optionalRemoveEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToRemoveId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToRemoveId)) .findFirst(); assertTrue(optionalRemoveEntryLogEntry.isPresent()); var removeEntryLogEntry = optionalRemoveEntryLogEntry.get(); @@ -166,7 +166,7 @@ public class EntityLogMergeTest { var optionalResizeEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToResizeId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToResizeId)) .findFirst(); assertTrue(optionalResizeEntryLogEntry.isPresent()); var resizeEntryLogEntry = optionalResizeEntryLogEntry.get(); @@ -190,7 +190,7 @@ public class EntityLogMergeTest { var optionalLegalBasisEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryLegalBasisId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryLegalBasisId)) .findFirst(); assertTrue(optionalLegalBasisEntryLogEntry.isPresent()); var legalBasisEntryLogEntry = optionalLegalBasisEntryLogEntry.get(); @@ -205,7 +205,7 @@ public class EntityLogMergeTest { var optionalForceRedactionEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(forceRedactionId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(forceRedactionId)) .findFirst(); assertTrue(optionalForceRedactionEntryLogEntry.isPresent()); var forceRedactionEntryLogEntry = optionalForceRedactionEntryLogEntry.get(); @@ -220,7 +220,7 @@ public class EntityLogMergeTest { var optionalRectangleEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(rectangleToAddId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(rectangleToAddId)) .findFirst(); assertTrue(optionalRectangleEntryLogEntry.isPresent()); var rectangleEntryLogEntry = optionalRectangleEntryLogEntry.get(); @@ -236,22 +236,24 @@ public class EntityLogMergeTest { } - private EntityLog provideEntityLog(String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { + private EntityLog provideEntityLog(String dossierId, String fileId, String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { List positions = new ArrayList<>(); positions.add(new Position(1, 1, 1, 1, 1)); - return new EntityLog(1, + return new EntityLog(dossierId, + fileId, 1, - Lists.newArrayList(EntityLogEntry.builder() - .id(entryToRemoveId) + 1, + Lists.newArrayList(EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) + .entryId(entryToRemoveId) .type("manual") .value("Luke Skywalker") .entryType(EntryType.ENTITY) .state(EntryState.APPLIED) .dictionaryEntry(true) .build(), - EntityLogEntry.builder() - .id(entryToResizeId) + EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) + .entryId(entryToResizeId) .type("manual") .value("Darth Vader") .entryType(EntryType.ENTITY) @@ -259,8 +261,8 @@ public class EntityLogMergeTest { .dictionaryEntry(true) .positions(positions) .build(), - EntityLogEntry.builder() - .id(entryLegalBasisId) + EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) + .entryId(entryLegalBasisId) .type("manual") .value("Darth Luke") .entryType(EntryType.ENTITY) @@ -268,8 +270,8 @@ public class EntityLogMergeTest { .dictionaryEntry(true) .positions(positions) .build(), - EntityLogEntry.builder() - .id(forceRedactionId) + EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) + .entryId(forceRedactionId) .type("manual") .value("Darth Luke") .entryType(EntryType.ENTITY) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index fe831f9d0..3193deebd 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -369,10 +369,13 @@ public class FileTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "manual"); var annotationId = "imagine_this_makes_sense"; - EntityLog entityLog = new EntityLog(1, + EntityLog entityLog = new EntityLog(dossierId, + fileId, + 1, 1, List.of(EntityLogEntry.builder() - .id(annotationId) + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId(annotationId) .type(type.getType()) .value("value entry") .state(EntryState.APPLIED) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 7b6107283..ac7ff40ac 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -45,10 +45,7 @@ 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.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.EntryType; -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.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.ManualRedactionEntry; 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; @@ -124,10 +121,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -318,10 +318,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { Dictionary dossierDictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), dossier.getId()); assertThat(dossierDictionary.getEntries()).containsExactlyInAnyOrder("Luke Skywalker"); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -378,10 +381,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { // CreateTypeValue dossierDictionaryType = MagicConverter.convert(type, CreateTypeValue.class); // dictionaryClient.addType(dossierDictionaryType, dossier.getId()); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -433,10 +439,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { // dictionaryClient.addType(dossierDictionaryType, dossier.getId()); dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -520,10 +529,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); var loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); - var entityLog1 = new EntityLog(1, + var entityLog1 = new EntityLog(dossier1.getId(), + file1.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(0).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier") .dossierDictionaryEntry(true) @@ -531,7 +543,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -547,10 +560,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(1, + var entityLog2 = new EntityLog(dossier2.getId(), + file2.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -685,10 +701,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); var loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); - var entityLog1 = new EntityLog(1, + var entityLog1 = new EntityLog(dossier1.getId(), + file1.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(0).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier yayy") .dossierDictionaryEntry(true) @@ -696,7 +715,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -712,10 +732,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(1, + var entityLog2 = new EntityLog(dossier2.getId(), + file2.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -854,10 +877,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); - var entityLog1 = new EntityLog(1, + var entityLog1 = new EntityLog(dossier1.getId(), + file1.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(0).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier") .dossierDictionaryEntry(true) @@ -865,7 +891,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -881,10 +908,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(1, + var entityLog2 = new EntityLog(dossier2.getId(), + file2.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -1020,10 +1050,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); - var entityLog1 = new EntityLog(1, + var entityLog1 = new EntityLog(dossier1.getId(), + file1.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(0).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier yayy") .dossierDictionaryEntry(true) @@ -1031,7 +1064,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -1047,10 +1081,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(1, + var entityLog2 = new EntityLog(dossier2.getId(), + file2.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -1171,10 +1208,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(dossierDictionary2.getEntries()).isEmpty(); var annotationId = "AnnotationId"; - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(annotationId) + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId(annotationId) .type(type.getType()) .value(lukeSkywalker) .dictionaryEntry(true) @@ -1255,10 +1295,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(dossierDictionary2.getEntries()).isEmpty(); var annotationId = "AnnotationId"; - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(annotationId) + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId(annotationId) .type(type.getType()) .value(lukeSkywalker) .dictionaryEntry(true) @@ -1426,10 +1469,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Anakin"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type(type.getType()) .value("Anakin") .entryType(EntryType.ENTITY) @@ -1437,7 +1483,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .id("AnnotationId2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId2") .type(type.getType()) .value("Anakin2") .entryType(EntryType.ENTITY) @@ -1625,10 +1672,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Darth Vader"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("dv") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("dv") .type(type.getType()) .value("Darth Vader") .entryType(EntryType.ENTITY) @@ -1636,7 +1686,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .id("dv2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("dv2") .type(type.getType()) .value("Vader Darth") .entryType(EntryType.ENTITY) @@ -1731,10 +1782,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -1742,7 +1796,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .id("AnnotationId2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId2") .type(type.getType()) .value("Skywalker Luke") .entryType(EntryType.ENTITY) @@ -1841,10 +1896,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -1852,7 +1910,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .id("AnnotationId2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId2") .type(type.getType()) .value("Skywalker Luke") .entryType(EntryType.ENTITY) @@ -1917,10 +1976,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "type", false); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("annotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("annotationId") .type(type.getType()) .value("lukeSkywalker") .dictionaryEntry(true) @@ -1928,7 +1990,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id("annotationId2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("annotationId2") .type(type.getType()) .value("Johannesbrotkernmehl") .dictionaryEntry(true) @@ -1936,7 +1999,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id("annotationId3") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("annotationId3") .type(type.getType()) .value("Baustelle") .dictionaryEntry(true) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 76eb9a805..344d95169 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -249,8 +249,10 @@ public abstract class AbstractPersistenceServerServiceTest { // doNothing().when(pdfTronRedactionClient).testDigitalCurrentSignature(Mockito.any()); when(amqpAdmin.getQueueInfo(Mockito.any())).thenReturn(null); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(new EntityLog(1, 1, Lists.newArrayList(), null, 0, 0, 0, 0)); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(new EntityLog(1, + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(new EntityLog("", "", 1, 1, Lists.newArrayList(), null, 0, 0, 0, 0)); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(new EntityLog("", + "", + 1, 1, Lists.newArrayList(), null, diff --git a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts index a10ac954d..8e4c8efce 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts @@ -3,12 +3,15 @@ plugins { id("io.freefair.lombok") version "8.4" } +val springBootStarterVersion = "3.1.5" + dependencies { api("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.16.0") api("com.google.guava:guava:31.1-jre") api("org.springframework.boot:spring-boot-starter-validation:3.1.3") api("com.iqser.red.commons:jackson-commons:2.1.0") api("com.iqser.red.commons:dictionary-merge-commons:1.3.0") + implementation("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") testImplementation("com.iqser.red.commons:test-commons:2.1.0") testImplementation("org.springframework.boot:spring-boot-starter-test:3.0.4") compileOnly("org.springdoc:springdoc-openapi-ui:1.7.0") 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/CascadeSave.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/CascadeSave.java new file mode 100644 index 000000000..05888eda4 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/CascadeSave.java @@ -0,0 +1,12 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface CascadeSave { + // +} 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/EntityLog.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/EntityLog.java index b1de32916..9c23a9551 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/EntityLog.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/EntityLog.java @@ -3,6 +3,10 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislo import java.util.ArrayList; import java.util.List; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,8 +14,15 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor +@Document(collection = "entity-logs") public class EntityLog { + @Id + private String id; + + private String dossierId; + + private String fileId; /** * Version 0 Redaction Logs have manual redactions merged inside them * Version 1 Redaction Logs only contain system ( rule/dictionary ) redactions. Manual Redactions are merged in at runtime. @@ -23,6 +34,8 @@ public class EntityLog { */ private int analysisNumber; + @DBRef + @CascadeSave private List entityLogEntry = new ArrayList<>(); private List legalBasis = new ArrayList<>(); @@ -31,4 +44,33 @@ public class EntityLog { private long rulesVersion = -1; private long legalBasisVersion = -1; + + public EntityLog(String dossierId, + String fileId, + long analysisVersion, + int analysisNumber, + List entityLogEntry, + List legalBasis, + long dictionaryVersion, + long dossierDictionaryVersion, + long rulesVersion, + long legalBasisVersion) { + + this.id = getId(dossierId, fileId); + this.dossierId = dossierId; + this.fileId = fileId; + this.analysisVersion = analysisVersion; + this.analysisNumber = analysisNumber; + this.entityLogEntry = entityLogEntry; + this.legalBasis = legalBasis; + this.dictionaryVersion = dictionaryVersion; + this.dossierDictionaryVersion = dossierDictionaryVersion; + this.rulesVersion = rulesVersion; + this.legalBasisVersion = legalBasisVersion; + } + + public static String getId(String dossierId, String fileId) { + return dossierId + "/" + fileId; + } + } 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/EntityLogEntry.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/EntityLogEntry.java index 362ead2dc..1a222de20 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/EntityLogEntry.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/EntityLogEntry.java @@ -5,6 +5,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.springframework.data.mongodb.core.mapping.Document; + import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -19,9 +21,11 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @EqualsAndHashCode @FieldDefaults(level = AccessLevel.PRIVATE) +@Document(collection = "entity-log-entries") public class EntityLogEntry { - String id; + String entryId; + String entityLogId; String type; EntryType entryType; EntryState state; From f8741b54d3b3c7c3519cdfeae7b364a0a7f040a3 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 14 Mar 2024 09:17:12 +0100 Subject: [PATCH 02/32] RED-8702 --- .../service/EntityLogMergeService.java | 16 +- .../processor/service/EntityLogService.java | 2 +- .../ManualRedactionMapper.java | 3 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 2 +- .../PendingDictionaryEntryFactory.java | 8 +- .../service/FileTesterAndProvider.java | 6 +- .../integration/tests/EntityLogMergeTest.java | 36 ++-- .../v1/server/integration/tests/FileTest.java | 7 +- .../tests/ManualRedactionTest.java | 166 ++++++------------ .../AbstractPersistenceServerServiceTest.java | 6 +- .../analysislog/entitylog/CascadeSave.java | 12 -- .../analysislog/entitylog/EntityLog.java | 42 ----- .../analysislog/entitylog/EntityLogEntry.java | 6 +- 14 files changed, 92 insertions(+), 222 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/CascadeSave.java 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 a588c72e5..12ba5b1ea 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 @@ -81,7 +81,7 @@ public class EntityLogMergeService { List matchingEntities = entityLog.getEntityLogEntry() .stream() - .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getEntryId())) + .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getId())) .collect(Collectors.toList()); final int analysisNumber = entityLog.getAnalysisNumber(); @@ -143,7 +143,7 @@ public class EntityLogMergeService { private EntityLogEntry findMatchingEntry(String annotationId, List matchingEntities) { return matchingEntities.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(annotationId)) + .filter(entityLogEntry -> entityLogEntry.getId().equals(annotationId)) .findAny() .orElseThrow(() -> new NotFoundException("No matching EntityLogEntry found for id " + annotationId)); } @@ -182,7 +182,7 @@ public class EntityLogMergeService { boolean isHint = isHint(manualRedactionEntry.getType(), dossier); EntityLogEntry entityLogEntry = EntityLogEntry.builder() - .entryId(manualRedactionEntry.getAnnotationId()) + .id(manualRedactionEntry.getAnnotationId()) .type(manualRedactionEntry.getType()) .value(manualRedactionEntry.getValue()) .legalBasis(manualRedactionEntry.getLegalBasis()) @@ -237,7 +237,7 @@ public class EntityLogMergeService { private void mergeIdsToRemove(IdRemoval idRemoval, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(idRemoval.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(idRemoval.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setState(EntryState.IGNORED); @@ -258,7 +258,7 @@ public class EntityLogMergeService { private void mergeResizeRedactions(ManualResizeRedaction manualResizeRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(manualResizeRedaction.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(manualResizeRedaction.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setTextAfter(manualResizeRedaction.getTextAfter()); @@ -283,7 +283,7 @@ public class EntityLogMergeService { private void mergeLegalBasisChanges(ManualLegalBasisChange manualLegalBasisChange, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(manualLegalBasisChange.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(manualLegalBasisChange.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis()); @@ -325,7 +325,7 @@ public class EntityLogMergeService { boolean isHint = isHint(recategorization.getType(), dossier); var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(recategorization.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(recategorization.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setType(recategorization.getType()); @@ -348,7 +348,7 @@ public class EntityLogMergeService { private void mergeForceRedactions(ManualForceRedaction forceRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(forceRedaction.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(forceRedaction.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setLegalBasis(forceRedaction.getLegalBasis()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java index dd6e406a7..d763854da 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java @@ -80,7 +80,7 @@ public class EntityLogService { Map commentCountPerAnnotationId = commentService.getCommentCounts(fileId); entityLog.getEntityLogEntry() - .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getEntryId(), 0))); + .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getId(), 0))); return entityLog; } 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 f667dabe4..83a314bae 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 @@ -10,6 +10,7 @@ import java.util.Set; import org.springframework.stereotype.Service; +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.EntityLog; @@ -186,7 +187,7 @@ public class ManualRedactionMapper { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getEntryId().equals(annotationId)) + .filter(entry -> entry.getId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 f3c56a10a..82e4549a5 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 @@ -348,7 +348,7 @@ public class ManualRedactionService { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getEntryId().equals(annotationId)) + .filter(entry -> entry.getId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 b47411bba..d753850c1 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 @@ -343,7 +343,7 @@ public class ManualRedactionUndoService { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getEntryId().equals(annotationId)) + .filter(entry -> entry.getId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 8c53a07d0..6c9a317ed 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 @@ -35,7 +35,7 @@ public class PendingDictionaryEntryFactory { .propertyChanges(Map.of("value", manualRedactionEntry.getValue())) .build()); return EntityLogEntry.builder() - .entryId(manualRedactionEntry.getAnnotationId()) + .id(manualRedactionEntry.getAnnotationId()) .value(manualRedactionEntry.getValue()) .type(manualRedactionEntry.getType()) .entryType(Optional.ofNullable(manualRedactionEntry.getDictionaryEntryType()) @@ -82,7 +82,7 @@ public class PendingDictionaryEntryFactory { .build()); return EntityLogEntry.builder() - .entryId(originalEntry.getEntryId()) + .id(originalEntry.getId()) .value(originalEntry.getValue()) .type(originalEntry.getType()) .entryType(originalEntry.getEntryType()) @@ -121,7 +121,7 @@ public class PendingDictionaryEntryFactory { .propertyChanges(propertyChanges) .build()); return EntityLogEntry.builder() - .entryId(originalEntry.getEntryId()) + .id(originalEntry.getId()) .value(manualChange.getValue()) .type(originalEntry.getType()) .entryType(originalEntry.getEntryType()) @@ -171,7 +171,7 @@ public class PendingDictionaryEntryFactory { .build()); return EntityLogEntry.builder() - .entryId(originalEntry.getEntryId()) + .id(originalEntry.getId()) .value(originalEntry.getValue()) .type(manualChange.getType()) .entryType(originalEntry.getEntryType()) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index 8ffe31af6..e856e1b16 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -67,12 +67,10 @@ public class FileTesterAndProvider { fileManagementStorageService.storeJSONObject(dossier.getId(), file.getFileId(), FileType.ENTITY_LOG, - new EntityLog(dossier.getId(), - fileId, - 1, + new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entryId("annotationId") + .id("annotationId") .type("manual") .value("value entry") .entryType(EntryType.ENTITY) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java index 2de272ccf..7a041bc58 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java @@ -120,7 +120,7 @@ public class EntityLogMergeTest { ManualRedactions manualRedactions = provideManualRedactions(entryToAddId, entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId, fileId, rectangleToAddId); - var entityLog = provideEntityLog(dossierId, fileId, entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId); + var entityLog = provideEntityLog(entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId); when(manualRedactionProviderService.getManualRedactions(any(), any())).thenReturn(manualRedactions); when(fileStatusService.getStatus(fileId)).thenReturn(FileModel.builder().excluded(false).dossierStatusId(dossierTemplateId).id(fileId).build()); @@ -137,7 +137,7 @@ public class EntityLogMergeTest { var optionalEntityLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToAddId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToAddId)) .findFirst(); assertTrue(optionalEntityLogEntry.isPresent()); var entityLogEntry = optionalEntityLogEntry.get(); @@ -152,7 +152,7 @@ public class EntityLogMergeTest { var optionalRemoveEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToRemoveId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToRemoveId)) .findFirst(); assertTrue(optionalRemoveEntryLogEntry.isPresent()); var removeEntryLogEntry = optionalRemoveEntryLogEntry.get(); @@ -166,7 +166,7 @@ public class EntityLogMergeTest { var optionalResizeEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToResizeId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToResizeId)) .findFirst(); assertTrue(optionalResizeEntryLogEntry.isPresent()); var resizeEntryLogEntry = optionalResizeEntryLogEntry.get(); @@ -190,7 +190,7 @@ public class EntityLogMergeTest { var optionalLegalBasisEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryLegalBasisId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryLegalBasisId)) .findFirst(); assertTrue(optionalLegalBasisEntryLogEntry.isPresent()); var legalBasisEntryLogEntry = optionalLegalBasisEntryLogEntry.get(); @@ -205,7 +205,7 @@ public class EntityLogMergeTest { var optionalForceRedactionEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(forceRedactionId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(forceRedactionId)) .findFirst(); assertTrue(optionalForceRedactionEntryLogEntry.isPresent()); var forceRedactionEntryLogEntry = optionalForceRedactionEntryLogEntry.get(); @@ -220,7 +220,7 @@ public class EntityLogMergeTest { var optionalRectangleEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(rectangleToAddId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(rectangleToAddId)) .findFirst(); assertTrue(optionalRectangleEntryLogEntry.isPresent()); var rectangleEntryLogEntry = optionalRectangleEntryLogEntry.get(); @@ -236,24 +236,22 @@ public class EntityLogMergeTest { } - private EntityLog provideEntityLog(String dossierId, String fileId, String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { + private EntityLog provideEntityLog(String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { List positions = new ArrayList<>(); positions.add(new Position(1, 1, 1, 1, 1)); - return new EntityLog(dossierId, - fileId, + return new EntityLog(1, 1, - 1, - Lists.newArrayList(EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) - .entryId(entryToRemoveId) + Lists.newArrayList(EntityLogEntry.builder() + .id(entryToRemoveId) .type("manual") .value("Luke Skywalker") .entryType(EntryType.ENTITY) .state(EntryState.APPLIED) .dictionaryEntry(true) .build(), - EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) - .entryId(entryToResizeId) + EntityLogEntry.builder() + .id(entryToResizeId) .type("manual") .value("Darth Vader") .entryType(EntryType.ENTITY) @@ -261,8 +259,8 @@ public class EntityLogMergeTest { .dictionaryEntry(true) .positions(positions) .build(), - EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) - .entryId(entryLegalBasisId) + EntityLogEntry.builder() + .id(entryLegalBasisId) .type("manual") .value("Darth Luke") .entryType(EntryType.ENTITY) @@ -270,8 +268,8 @@ public class EntityLogMergeTest { .dictionaryEntry(true) .positions(positions) .build(), - EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) - .entryId(forceRedactionId) + EntityLogEntry.builder() + .id(forceRedactionId) .type("manual") .value("Darth Luke") .entryType(EntryType.ENTITY) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index 3193deebd..fe831f9d0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -369,13 +369,10 @@ public class FileTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "manual"); var annotationId = "imagine_this_makes_sense"; - EntityLog entityLog = new EntityLog(dossierId, - fileId, - 1, + EntityLog entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId(annotationId) + .id(annotationId) .type(type.getType()) .value("value entry") .state(EntryState.APPLIED) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index ac7ff40ac..7b6107283 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -45,7 +45,10 @@ 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.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.EntryType; +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.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.ManualRedactionEntry; 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; @@ -121,13 +124,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -318,13 +318,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { Dictionary dossierDictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), dossier.getId()); assertThat(dossierDictionary.getEntries()).containsExactlyInAnyOrder("Luke Skywalker"); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -381,13 +378,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { // CreateTypeValue dossierDictionaryType = MagicConverter.convert(type, CreateTypeValue.class); // dictionaryClient.addType(dossierDictionaryType, dossier.getId()); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -439,13 +433,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { // dictionaryClient.addType(dossierDictionaryType, dossier.getId()); dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -529,13 +520,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); var loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); - var entityLog1 = new EntityLog(dossier1.getId(), - file1.getFileId(), - 1, + var entityLog1 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(0).getAnnotationId()) + .id(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier") .dossierDictionaryEntry(true) @@ -543,8 +531,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -560,13 +547,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(dossier2.getId(), - file2.getFileId(), - 1, + var entityLog2 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -701,13 +685,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); var loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); - var entityLog1 = new EntityLog(dossier1.getId(), - file1.getFileId(), - 1, + var entityLog1 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(0).getAnnotationId()) + .id(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier yayy") .dossierDictionaryEntry(true) @@ -715,8 +696,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -732,13 +712,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(dossier2.getId(), - file2.getFileId(), - 1, + var entityLog2 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -877,13 +854,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); - var entityLog1 = new EntityLog(dossier1.getId(), - file1.getFileId(), - 1, + var entityLog1 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(0).getAnnotationId()) + .id(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier") .dossierDictionaryEntry(true) @@ -891,8 +865,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -908,13 +881,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(dossier2.getId(), - file2.getFileId(), - 1, + var entityLog2 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -1050,13 +1020,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); - var entityLog1 = new EntityLog(dossier1.getId(), - file1.getFileId(), - 1, + var entityLog1 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(0).getAnnotationId()) + .id(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier yayy") .dossierDictionaryEntry(true) @@ -1064,8 +1031,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -1081,13 +1047,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(dossier2.getId(), - file2.getFileId(), - 1, + var entityLog2 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -1208,13 +1171,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(dossierDictionary2.getEntries()).isEmpty(); var annotationId = "AnnotationId"; - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId(annotationId) + .id(annotationId) .type(type.getType()) .value(lukeSkywalker) .dictionaryEntry(true) @@ -1295,13 +1255,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(dossierDictionary2.getEntries()).isEmpty(); var annotationId = "AnnotationId"; - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId(annotationId) + .id(annotationId) .type(type.getType()) .value(lukeSkywalker) .dictionaryEntry(true) @@ -1469,13 +1426,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Anakin"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type(type.getType()) .value("Anakin") .entryType(EntryType.ENTITY) @@ -1483,8 +1437,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId2") + .id("AnnotationId2") .type(type.getType()) .value("Anakin2") .entryType(EntryType.ENTITY) @@ -1672,13 +1625,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Darth Vader"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("dv") + .id("dv") .type(type.getType()) .value("Darth Vader") .entryType(EntryType.ENTITY) @@ -1686,8 +1636,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("dv2") + .id("dv2") .type(type.getType()) .value("Vader Darth") .entryType(EntryType.ENTITY) @@ -1782,13 +1731,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -1796,8 +1742,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId2") + .id("AnnotationId2") .type(type.getType()) .value("Skywalker Luke") .entryType(EntryType.ENTITY) @@ -1896,13 +1841,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -1910,8 +1852,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId2") + .id("AnnotationId2") .type(type.getType()) .value("Skywalker Luke") .entryType(EntryType.ENTITY) @@ -1976,13 +1917,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "type", false); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("annotationId") + .id("annotationId") .type(type.getType()) .value("lukeSkywalker") .dictionaryEntry(true) @@ -1990,8 +1928,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("annotationId2") + .id("annotationId2") .type(type.getType()) .value("Johannesbrotkernmehl") .dictionaryEntry(true) @@ -1999,8 +1936,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("annotationId3") + .id("annotationId3") .type(type.getType()) .value("Baustelle") .dictionaryEntry(true) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 344d95169..76eb9a805 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -249,10 +249,8 @@ public abstract class AbstractPersistenceServerServiceTest { // doNothing().when(pdfTronRedactionClient).testDigitalCurrentSignature(Mockito.any()); when(amqpAdmin.getQueueInfo(Mockito.any())).thenReturn(null); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(new EntityLog("", "", 1, 1, Lists.newArrayList(), null, 0, 0, 0, 0)); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(new EntityLog("", - "", - 1, + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(new EntityLog(1, 1, Lists.newArrayList(), null, 0, 0, 0, 0)); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(new EntityLog(1, 1, Lists.newArrayList(), null, 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/CascadeSave.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/CascadeSave.java deleted file mode 100644 index 05888eda4..000000000 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/CascadeSave.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface CascadeSave { - // -} 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/EntityLog.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/EntityLog.java index 9c23a9551..b1de32916 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/EntityLog.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/EntityLog.java @@ -3,10 +3,6 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislo import java.util.ArrayList; import java.util.List; -import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.mapping.DBRef; -import org.springframework.data.mongodb.core.mapping.Document; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,15 +10,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Document(collection = "entity-logs") public class EntityLog { - @Id - private String id; - - private String dossierId; - - private String fileId; /** * Version 0 Redaction Logs have manual redactions merged inside them * Version 1 Redaction Logs only contain system ( rule/dictionary ) redactions. Manual Redactions are merged in at runtime. @@ -34,8 +23,6 @@ public class EntityLog { */ private int analysisNumber; - @DBRef - @CascadeSave private List entityLogEntry = new ArrayList<>(); private List legalBasis = new ArrayList<>(); @@ -44,33 +31,4 @@ public class EntityLog { private long rulesVersion = -1; private long legalBasisVersion = -1; - - public EntityLog(String dossierId, - String fileId, - long analysisVersion, - int analysisNumber, - List entityLogEntry, - List legalBasis, - long dictionaryVersion, - long dossierDictionaryVersion, - long rulesVersion, - long legalBasisVersion) { - - this.id = getId(dossierId, fileId); - this.dossierId = dossierId; - this.fileId = fileId; - this.analysisVersion = analysisVersion; - this.analysisNumber = analysisNumber; - this.entityLogEntry = entityLogEntry; - this.legalBasis = legalBasis; - this.dictionaryVersion = dictionaryVersion; - this.dossierDictionaryVersion = dossierDictionaryVersion; - this.rulesVersion = rulesVersion; - this.legalBasisVersion = legalBasisVersion; - } - - public static String getId(String dossierId, String fileId) { - return dossierId + "/" + fileId; - } - } 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/EntityLogEntry.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/EntityLogEntry.java index 1a222de20..362ead2dc 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/EntityLogEntry.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/EntityLogEntry.java @@ -5,8 +5,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.springframework.data.mongodb.core.mapping.Document; - import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -21,11 +19,9 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @EqualsAndHashCode @FieldDefaults(level = AccessLevel.PRIVATE) -@Document(collection = "entity-log-entries") public class EntityLogEntry { - String entryId; - String entityLogId; + String id; String type; EntryType entryType; EntryState state; From cfdd6a6924c1f154e8239703447ccb830eac0a0a Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 18 Mar 2024 15:05:41 +0100 Subject: [PATCH 03/32] RED-8702: Explore document databases to store entityLog * added mongodb documents, repositories and EntityLogMongoService * refactored places where entity logs were stored and loaded to use new logic --- .../internal/AdminInterfaceController.java | 4 +- .../build.gradle.kts | 5 +- .../processor/document/EntityLogDocument.java | 75 ++++++ .../document/EntityLogEntryDocument.java | 114 +++++++++ .../EntityLogDocumentNotFoundException.java | 10 + .../migration/SaasMigrationService.java | 1 + .../ManualRedactionTypeRenameMigration15.java | 4 +- .../service/FileManagementStorageService.java | 30 ++- .../processor/service/FileStatusService.java | 4 +- .../persistence/EntityLogMongoService.java | 238 ++++++++++++++++++ .../EntityLogDocumentRepository.java | 15 ++ .../EntityLogEntryDocumentRepository.java | 23 ++ .../service/FileTesterAndProvider.java | 3 +- .../tests/ManualRedactionTest.java | 40 +-- .../build.gradle.kts | 1 - 15 files changed, 528 insertions(+), 39 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java index 0cdb2ca51..0f58f9dad 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java @@ -36,7 +36,7 @@ public class AdminInterfaceController { public void resetFile(@RequestParam("dossierId") String dossierId, @RequestParam("fileId") String fileId) { fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_TEXT); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_POSITION); @@ -141,7 +141,7 @@ public class AdminInterfaceController { var fileId = file.getId(); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_STRUCTURE); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_TEXT); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); diff --git a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts index 1fb9d4bcf..0e277da9a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -34,8 +34,8 @@ dependencies { exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1") } api("com.knecon.fforesight:jobs-commons:0.10.0") - api("com.knecon.fforesight:database-tenant-commons:0.21.0") - api("com.knecon.fforesight:keycloak-commons:0.25.0") + api("com.knecon.fforesight:database-tenant-commons:maverick-mongo") + api("com.knecon.fforesight:keycloak-commons:maverick-mongo") api("com.knecon.fforesight:tracing-commons:0.5.0") api("com.knecon.fforesight:swagger-commons:0.5.0") api("com.giffing.bucket4j.spring.boot.starter:bucket4j-spring-boot-starter:0.4.0") @@ -43,6 +43,7 @@ dependencies { api("org.springframework.boot:spring-boot-starter-mail:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-data-jpa:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-data-redis:${springBootStarterVersion}") + api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-amqp:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-web:${springBootStarterVersion}") api("com.iqser.red.commons:spring-commons:2.1.0") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java new file mode 100644 index 000000000..2e3d06b46 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java @@ -0,0 +1,75 @@ +package com.iqser.red.service.persistence.management.v1.processor.document; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; + +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.EntityLogLegalBasis; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(onlyExplicitlyIncluded = true) +@Document(collection = "entity-logs") +public class EntityLogDocument { + + @Id + @EqualsAndHashCode.Include + private String id; + + private String dossierId; + private String fileId; + + private long analysisVersion; + + //@Indexed(direction = IndexDirection.DESCENDING) + private int analysisNumber; + + @DBRef + private List entityLogEntryDocument = new ArrayList<>(); + + private List legalBasis = new ArrayList<>(); + + private long dictionaryVersion = -1; + private long dossierDictionaryVersion = -1; + + private long rulesVersion = -1; + private long legalBasisVersion = -1; + + + public EntityLogDocument(String dossierId, String fileId, EntityLog entityLog) { + + this.id = getDocumentId(dossierId, fileId); + this.dossierId = dossierId; + this.fileId = fileId; + this.analysisVersion = entityLog.getAnalysisVersion(); + this.analysisNumber = entityLog.getAnalysisNumber(); + this.entityLogEntryDocument = new ArrayList<>(entityLog.getEntityLogEntry() + .stream() + .map(entityLogEntry -> new EntityLogEntryDocument(this.id, entityLogEntry)).toList()); + this.legalBasis = entityLog.getLegalBasis(); + this.dictionaryVersion = entityLog.getDictionaryVersion(); + this.dossierDictionaryVersion = entityLog.getDossierDictionaryVersion(); + this.rulesVersion = entityLog.getRulesVersion(); + this.legalBasisVersion = entityLog.getLegalBasisVersion(); + + } + + + public static String getDocumentId(String dossierId, String fileId) { + + return dossierId + "/" + fileId; + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java new file mode 100644 index 000000000..87963463a --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java @@ -0,0 +1,114 @@ +package com.iqser.red.service.persistence.management.v1.processor.document; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +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.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.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.Position; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.FieldDefaults; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(onlyExplicitlyIncluded = true) +@FieldDefaults(level = AccessLevel.PRIVATE) +@Document(collection = "entity-log-entries") +//@CompoundIndexes({ + //@CompoundIndex(name = "changes_analysisNumber", def = "{ 'changes.analysisNumber': 1 }") +// }) +public class EntityLogEntryDocument { + + @Id + @EqualsAndHashCode.Include + String id; + String entryId; + String entityLogId; + String type; + EntryType entryType; + EntryState state; + String value; + String reason; + String matchedRule; + String legalBasis; + + List containingNodeId; + String closestHeadline; + String section; + + List positions = new ArrayList<>(); + + String textBefore; + String textAfter; + + int startOffset; + int endOffset; + + boolean imageHasTransparency; + + boolean dictionaryEntry; + boolean dossierDictionaryEntry; + + boolean excluded; + + List changes = new ArrayList<>(); + + List manualChanges = new ArrayList<>(); + + Set engines = new HashSet<>(); + + Set reference = new HashSet<>(); + + Set importedRedactionIntersections = new HashSet<>(); + + int numberOfComments; + + + public EntityLogEntryDocument(String entityLogId, EntityLogEntry entityLogEntry) { + + this.id = entityLogId + "/" + entityLogEntry.getId(); + this.entryId = entityLogEntry.getId(); + this.entityLogId = entityLogId; + this.type = entityLogEntry.getType(); + this.entryType = entityLogEntry.getEntryType(); + this.state = entityLogEntry.getState(); + this.value = entityLogEntry.getValue(); + this.reason = entityLogEntry.getReason(); + this.matchedRule = entityLogEntry.getMatchedRule(); + this.legalBasis = entityLogEntry.getLegalBasis(); + this.containingNodeId = new ArrayList<>(entityLogEntry.getContainingNodeId()); + this.closestHeadline = entityLogEntry.getClosestHeadline(); + this.section = entityLogEntry.getSection(); + this.positions = new ArrayList<>(entityLogEntry.getPositions()); + this.textBefore = entityLogEntry.getTextBefore(); + this.textAfter = entityLogEntry.getTextAfter(); + this.startOffset = entityLogEntry.getStartOffset(); + this.endOffset = entityLogEntry.getEndOffset(); + this.imageHasTransparency = entityLogEntry.isImageHasTransparency(); + this.dictionaryEntry = entityLogEntry.isDictionaryEntry(); + this.dossierDictionaryEntry = entityLogEntry.isDossierDictionaryEntry(); + this.excluded = entityLogEntry.isExcluded(); + this.changes = new ArrayList<>(entityLogEntry.getChanges()); + this.manualChanges = new ArrayList<>(entityLogEntry.getManualChanges()); + this.engines = new HashSet<>(entityLogEntry.getEngines()); + this.reference = new HashSet<>(entityLogEntry.getReference()); + this.importedRedactionIntersections = new HashSet<>(entityLogEntry.getImportedRedactionIntersections()); + this.numberOfComments = entityLogEntry.getNumberOfComments(); + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java new file mode 100644 index 000000000..fe33d0df9 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.persistence.management.v1.processor.exception; + +public class EntityLogDocumentNotFoundException extends RuntimeException { + + public EntityLogDocumentNotFoundException(String errorMessage) { + + super(errorMessage); + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java index 3606f9a74..cfeb20f8a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java @@ -200,6 +200,7 @@ public class SaasMigrationService implements TenantSyncService { } + //todo: 8702 private boolean entityLogMigrationFilesExist(String dossierId, String fileId) { return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.ENTITY_LOG)) && storageService.objectExists( diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java index c42fdcfe3..8494b32e2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java @@ -69,7 +69,7 @@ public class ManualRedactionTypeRenameMigration15 extends Migration { continue; } - if (!fileManagementStorageService.objectExists(file.getDossierId(), file.getId(), FileType.ENTITY_LOG)) { + if (!fileManagementStorageService.entityLogExists(file.getDossierId(), file.getId())) { continue; } @@ -92,7 +92,7 @@ public class ManualRedactionTypeRenameMigration15 extends Migration { } } } - fileManagementStorageService.storeJSONObject(file.getDossierId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(file.getDossierId(), file.getId(), entityLog); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java index b199fb4ae..facc78513 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.exception.InternalServerErrorException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntityLogMongoService; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; @@ -36,6 +37,8 @@ public class FileManagementStorageService { private final StorageService storageService; + private final EntityLogMongoService entityLogMongoService; + @SneakyThrows public byte[] getStoredObjectBytes(String dossierId, String fileId, FileType fileType) { @@ -99,14 +102,20 @@ public class FileManagementStorageService { public EntityLog getEntityLog(String dossierId, String fileId) { - try { - return storageService.readJSONObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.ENTITY_LOG), EntityLog.class); - } catch (StorageObjectDoesNotExist e) { - log.debug("EntityLog does not exist"); - throw new NotFoundException(String.format("EntityLog does not exist for Dossier ID \"%s\" and File ID \"%s\"!", dossierId, fileId)); - } catch (StorageException e) { - throw new InternalServerErrorException(e.getMessage()); - } + return entityLogMongoService.findEntityLogByDossierIdAndFileId(dossierId, fileId) + .orElseThrow(() -> new NotFoundException(String.format("EntityLog does not exist for Dossier ID \"%s\" and File ID \"%s\"!", dossierId, fileId))); + + } + + @SneakyThrows + public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog); + } + + public boolean entityLogExists(String dossierId, String fileId) { + + return entityLogMongoService.entityLogDocumentExists(dossierId, fileId); } @@ -161,6 +170,11 @@ public class FileManagementStorageService { storageService.deleteObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, fileType)); } + public void deleteEntityLog(String dossierId, String fileId) { + + entityLogMongoService.deleteEntityLog(dossierId, fileId); + } + public void deleteObject(String storageId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java index 22273f6a8..4ad2d6cf3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java @@ -690,7 +690,7 @@ public class FileStatusService { fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ORIGIN); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.IMAGE_INFO); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_STRUCTURE); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); @@ -719,7 +719,7 @@ public class FileStatusService { OffsetDateTime now = OffsetDateTime.now(); // remove everything related to redaction fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.IMAGE_INFO); // wipe comments diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java new file mode 100644 index 000000000..f398ddf69 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java @@ -0,0 +1,238 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; +import com.iqser.red.service.persistence.management.v1.processor.exception.EntityLogDocumentNotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntityLogEntryDocumentRepository; +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; + +@Service +public class EntityLogMongoService { + + private final EntityLogDocumentRepository entityLogDocumentRepository; + private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + + + public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository) { + + this.entityLogDocumentRepository = entityLogDocumentRepository; + this.entityLogEntryDocumentRepository = entityLogEntryDocumentRepository; + } + + + public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + EntityLogDocument entityLogDocument = entityLogDocumentRepository.insert(new EntityLogDocument(dossierId, fileId, entityLog)); + + entityLogEntryDocumentRepository.insert(entityLog.getEntityLogEntry() + .stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogDocument.getId(), entityLogEntry)) + .toList()); + } + + + // this does everything : insert when not found and update if found + // todo: remove and replace when services use insert,update,delete correctly + public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)); + if (optionalEntityLogDocument.isEmpty()) { + // throw new EntityLogDocumentNotFoundException(String.format("Entity log for dossier %s and file %s not found.", dossierId, fileId)); + insertEntityLog(dossierId, fileId, entityLog); + return; + } + + EntityLogDocument oldEntityLogDocument = optionalEntityLogDocument.get(); + List oldEntityLogEntryDocuments = oldEntityLogDocument.getEntityLogEntryDocument(); + + EntityLogDocument newEntityLogDocument = new EntityLogDocument(dossierId, fileId, entityLog); + List newEntityLogEntryDocuments = newEntityLogDocument.getEntityLogEntryDocument(); + + List toUpdate = new ArrayList<>(oldEntityLogEntryDocuments); + toUpdate.retainAll(newEntityLogEntryDocuments); + + List toRemove = new ArrayList<>(oldEntityLogEntryDocuments); + toRemove.removeAll(toUpdate); + + List toInsert = new ArrayList<>(newEntityLogEntryDocuments); + toInsert.removeAll(toUpdate); + + entityLogEntryDocumentRepository.saveAll(toUpdate); + entityLogEntryDocumentRepository.deleteAll(toRemove); + entityLogEntryDocumentRepository.insert(toInsert); + + entityLogDocumentRepository.save(newEntityLogDocument); + } + + + public void deleteEntityLog(String dossierId, String fileId) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + entityLogDocumentRepository.deleteById(entityLogId); + + entityLogEntryDocumentRepository.deleteByEntityLogId(entityLogId); + } + + + public void insertEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocument().addAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.insert(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + public void updateEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + entityLogEntryDocumentRepository.saveAll(entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList()); + } + + public void deleteEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocument().removeAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.deleteAll(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + private EntityLogDocument getEntityLogDocument(String entityLogId) { + + Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(entityLogId); + + if (optionalEntityLogDocument.isEmpty()) { + throw new EntityLogDocumentNotFoundException(String.format("Entity log not found for %s", entityLogId)); + } + + return optionalEntityLogDocument.get(); + } + + + public Optional findEntityLogByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)) + .map(EntityLogMongoService::fromDocument); + } + + + public boolean entityLogDocumentExists(String dossierId, String fileId) { + + return entityLogDocumentRepository.existsById(EntityLogDocument.getDocumentId(dossierId, fileId)); + } + + + public Optional findLatestAnalysisNumber(String dossierId, String fileId) { + + return entityLogDocumentRepository.findAnalysisNumberById(EntityLogDocument.getDocumentId(dossierId, fileId)) + .map(EntityLogDocument::getAnalysisNumber); + } + + + public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(EntityLogDocument.getDocumentId(dossierId, fileId)) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(EntityLogDocument.getDocumentId(dossierId, fileId), analysisNumber) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + public List findAllEntriesByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogId(EntityLogDocument.getDocumentId(dossierId, fileId)) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + private static EntityLog fromDocument(EntityLogDocument entityLogDocument) { + + EntityLog entityLog = new EntityLog(); + entityLog.setAnalysisVersion(entityLogDocument.getAnalysisVersion()); + entityLog.setAnalysisNumber(entityLogDocument.getAnalysisNumber()); + entityLog.setEntityLogEntry(entityLogDocument.getEntityLogEntryDocument() + .stream() + .map(EntityLogMongoService::fromDocument) + .collect(Collectors.toList())); + entityLog.setLegalBasis(entityLogDocument.getLegalBasis()); + entityLog.setDictionaryVersion(entityLogDocument.getDictionaryVersion()); + entityLog.setDossierDictionaryVersion(entityLogDocument.getDossierDictionaryVersion()); + entityLog.setRulesVersion(entityLogDocument.getRulesVersion()); + entityLog.setLegalBasisVersion(entityLogDocument.getLegalBasisVersion()); + return entityLog; + } + + + private static EntityLogEntry fromDocument(EntityLogEntryDocument entityLogEntryDocument) { + + EntityLogEntry entityLogEntry = new EntityLogEntry(); + entityLogEntry.setId(entityLogEntryDocument.getEntryId()); + entityLogEntry.setState(entityLogEntryDocument.getState()); + entityLogEntry.setValue(entityLogEntryDocument.getValue()); + entityLogEntry.setReason(entityLogEntryDocument.getReason()); + entityLogEntry.setMatchedRule(entityLogEntryDocument.getMatchedRule()); + entityLogEntry.setLegalBasis(entityLogEntryDocument.getLegalBasis()); + entityLogEntry.setContainingNodeId(new ArrayList<>(entityLogEntryDocument.getContainingNodeId())); + entityLogEntry.setClosestHeadline(entityLogEntryDocument.getClosestHeadline()); + entityLogEntry.setSection(entityLogEntryDocument.getSection()); + entityLogEntry.setPositions(new ArrayList<>(entityLogEntryDocument.getPositions())); + entityLogEntry.setTextBefore(entityLogEntryDocument.getTextBefore()); + entityLogEntry.setTextAfter(entityLogEntryDocument.getTextAfter()); + entityLogEntry.setStartOffset(entityLogEntryDocument.getStartOffset()); + entityLogEntry.setEndOffset(entityLogEntryDocument.getEndOffset()); + entityLogEntry.setImageHasTransparency(entityLogEntryDocument.isImageHasTransparency()); + entityLogEntry.setDictionaryEntry(entityLogEntryDocument.isDictionaryEntry()); + entityLogEntry.setDossierDictionaryEntry(entityLogEntryDocument.isDossierDictionaryEntry()); + entityLogEntry.setExcluded(entityLogEntryDocument.isExcluded()); + entityLogEntry.setChanges(new ArrayList<>(entityLogEntryDocument.getChanges())); + entityLogEntry.setManualChanges(new ArrayList<>(entityLogEntryDocument.getManualChanges())); + entityLogEntry.setEngines(new HashSet<>(entityLogEntryDocument.getEngines())); + entityLogEntry.setReference(new HashSet<>(entityLogEntryDocument.getReference())); + entityLogEntry.setImportedRedactionIntersections(new HashSet<>(entityLogEntryDocument.getImportedRedactionIntersections())); + entityLogEntry.setNumberOfComments(entityLogEntryDocument.getNumberOfComments()); + return entityLogEntry; + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java new file mode 100644 index 000000000..81249cfcd --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java @@ -0,0 +1,15 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; + +import java.util.Optional; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.data.repository.query.Param; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; + +public interface EntityLogDocumentRepository extends MongoRepository { + + @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") + Optional findAnalysisNumberById(@Param("_id") String id); +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java new file mode 100644 index 000000000..8e1d82a06 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java @@ -0,0 +1,23 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; + +public interface EntityLogEntryDocumentRepository extends MongoRepository { + + @Query("{ 'entityLogId' : ?0, 'manualChanges' : { $exists: true, $not: { $size: 0 } } }") + List findByEntityLogIdAndManualChangesNotEmpty(String entityLogId); + + @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") + List findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); + + @Query("{ 'entityLogId' : ?0}") + List findByEntityLogId(String entityLogId); + + @Query(value = "{ 'entityLogId' : ?0}", delete = true) + void deleteByEntityLogId(String entityLogId); +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index e856e1b16..d702fb1c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -64,9 +64,8 @@ public class FileTesterAndProvider { assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isGreaterThanOrEqualTo(1); - fileManagementStorageService.storeJSONObject(dossier.getId(), + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getFileId(), - FileType.ENTITY_LOG, new EntityLog(1, 1, List.of(EntityLogEntry.builder() diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 7b6107283..7672880cc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -139,7 +139,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(entityLog); @@ -333,7 +333,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -393,7 +393,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -448,7 +448,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -543,7 +543,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); @@ -562,7 +562,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -708,7 +708,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); @@ -727,7 +727,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -877,7 +877,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); @@ -896,7 +896,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -1043,7 +1043,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); @@ -1062,7 +1062,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -1186,7 +1186,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1270,7 +1270,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1449,7 +1449,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1648,7 +1648,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1754,7 +1754,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(entityLog); @@ -1864,7 +1864,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(entityLog); @@ -1948,8 +1948,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); var recatModel = RecategorizationRequestModel.builder() diff --git a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts index 8e4c8efce..b2dfa2a93 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts @@ -11,7 +11,6 @@ dependencies { api("org.springframework.boot:spring-boot-starter-validation:3.1.3") api("com.iqser.red.commons:jackson-commons:2.1.0") api("com.iqser.red.commons:dictionary-merge-commons:1.3.0") - implementation("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") testImplementation("com.iqser.red.commons:test-commons:2.1.0") testImplementation("org.springframework.boot:spring-boot-starter-test:3.0.4") compileOnly("org.springdoc:springdoc-openapi-ui:1.7.0") From 3060f5f28a2995a638fd2f57f8c1234009c616a1 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 11:26:52 +0100 Subject: [PATCH 04/32] RED-8702: Explore document databases to store entityLog --- .../migration/SaasMigrationService.java | 3 +- .../service/FileManagementStorageService.java | 2 +- .../EntityLogMongoService.java | 2 +- .../EntityLogDocumentRepository.java | 17 +++++++++ .../EntityLogEntryDocumentRepository.java | 25 +++++++++++++ .../EntityLogDocumentRepository.java | 2 ++ .../build.gradle.kts | 1 + .../peristence/v1/server/Application.java | 9 +++-- .../src/main/resources/application.yaml | 9 +++++ .../AbstractPersistenceServerServiceTest.java | 36 +++++++++++++++++++ .../utils/MongoDBTestContainer.java | 35 ++++++++++++++++++ .../src/test/resources/application.yml | 10 +++++- 12 files changed, 145 insertions(+), 6 deletions(-) rename persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/{persistence => mongo}/EntityLogMongoService.java (99%) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java index cfeb20f8a..46444ec4b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java @@ -45,6 +45,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.MIGRATION_QUEUE; +import static com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType.ENTITY_LOG; import static com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_QUEUE; @Slf4j @@ -203,7 +204,7 @@ public class SaasMigrationService implements TenantSyncService { //todo: 8702 private boolean entityLogMigrationFilesExist(String dossierId, String fileId) { - return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.ENTITY_LOG)) && storageService.objectExists( + return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, ENTITY_LOG)) && storageService.objectExists( TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.MIGRATED_IDS)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java index facc78513..8036fb11f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.exception.InternalServerErrorException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntityLogMongoService; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.EntityLogMongoService; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java similarity index 99% rename from persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java rename to persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java index f398ddf69..b820787aa 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence; +package com.iqser.red.service.persistence.management.v1.processor.service.mongo; import java.util.ArrayList; import java.util.HashSet; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java new file mode 100644 index 000000000..d7aa23952 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java @@ -0,0 +1,17 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository; + +import java.util.Optional; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; + +@Repository +public interface EntityLogDocumentRepository extends MongoRepository { + + @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") + Optional findAnalysisNumberById(@Param("_id") String id); +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java new file mode 100644 index 000000000..c8e4f2015 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java @@ -0,0 +1,25 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.stereotype.Repository; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; + +@Repository +public interface EntityLogEntryDocumentRepository extends MongoRepository { + + @Query("{ 'entityLogId' : ?0, 'manualChanges' : { $exists: true, $not: { $size: 0 } } }") + List findByEntityLogIdAndManualChangesNotEmpty(String entityLogId); + + @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") + List findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); + + @Query("{ 'entityLogId' : ?0}") + List findByEntityLogId(String entityLogId); + + @Query(value = "{ 'entityLogId' : ?0}", delete = true) + void deleteByEntityLogId(String entityLogId); +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java index 81249cfcd..e9916d08f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java @@ -5,9 +5,11 @@ import java.util.Optional; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; +@Repository public interface EntityLogDocumentRepository extends MongoRepository { @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 521247b80..56535f7ff 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -23,6 +23,7 @@ dependencies { api(project(":persistence-service-external-api-impl-v2")) api(project(":persistence-service-internal-api-impl-v1")) api("com.iqser.red.commons:storage-commons:2.45.0") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo") api("junit:junit:4.13.2") api("org.apache.logging.log4j:log4j-slf4j-impl:2.19.0") api("net.logstash.logback:logstash-logback-encoder:7.4") diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java index 50f039237..9a638d226 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java @@ -14,6 +14,7 @@ import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfigurati import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cache.annotation.EnableCaching; @@ -21,6 +22,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.http.server.observation.DefaultServerRequestObservationConvention; import org.springframework.http.server.observation.ServerRequestObservationContext; import org.springframework.http.server.observation.ServerRequestObservationConvention; @@ -43,6 +45,8 @@ import com.iqser.red.storage.commons.StorageAutoConfiguration; import com.knecon.fforesight.databasetenantcommons.DatabaseTenantCommonsAutoConfiguration; import com.knecon.fforesight.jobscommons.JobsAutoConfiguration; import com.knecon.fforesight.keycloakcommons.DefaultKeyCloakCommonsAutoConfiguration; +import com.knecon.fforesight.mongo.database.commons.MongoDatabaseCommonsAutoConfiguration; +import com.knecon.fforesight.mongo.database.commons.service.MongoDataSources; import com.knecon.fforesight.swaggercommons.SpringDocAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyMessagingConfiguration; @@ -62,9 +66,10 @@ import lombok.extern.slf4j.Slf4j; @EnableScheduling @EnableCaching @EnableConfigurationProperties({FileManagementServiceSettings.class}) -@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class}) +@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class, MongoDatabaseCommonsAutoConfiguration.class}) @SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class}) -@Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class}) +@Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class, MongoDataSources.class}) +@EnableMongoRepositories(basePackages = "com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository") public class Application implements ApplicationContextAware { /** diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml index 0af757fe1..6960236c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml @@ -37,6 +37,15 @@ spring: batch_size: 1000 order_inserts: true order_updates: true + data: + mongodb: + auto-index-creation: true + # todo: multi-tenancy + database: redaction + host: ${MONGODB_HOST:localhost} + port: 27017 + username: ${MONGODB_USER} + password: ${MONGODB_PASSWORD} cache: type: redis mvc: diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 76eb9a805..e36ae8be7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -14,6 +14,7 @@ import com.iqser.red.service.persistence.management.v1.processor.roles.Applicati import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; 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.mongo.EntityLogMongoService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.*; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.*; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; @@ -28,6 +29,8 @@ import com.iqser.red.storage.commons.utils.FileSystemBackedStorageService; import com.knecon.fforesight.databasetenantcommons.providers.TenantCreatedListener; import com.knecon.fforesight.databasetenantcommons.providers.events.TenantCreatedEvent; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; +import com.knecon.fforesight.mongo.database.commons.config.MongoDbConfiguration; +import com.knecon.fforesight.mongo.database.commons.service.MongoDataSources; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import com.knecon.fforesight.tenantcommons.TenantContext; import com.knecon.fforesight.tenantcommons.TenantsClient; @@ -46,7 +49,9 @@ import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.util.TestPropertyValues; @@ -54,6 +59,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.*; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.StatementCallback; import org.springframework.jdbc.datasource.SingleConnectionDataSource; @@ -100,6 +107,12 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired protected StorageService storageService; @Autowired + protected EntityLogDocumentRepository entityLogDocumentRepository; + @Autowired + protected EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + @Autowired + protected EntityLogMongoService entityLogMongoService; + @Autowired protected FileManagementStorageService fileManagementStorageService; @Autowired protected DossierTemplateRepository dossierTemplateRepository; @@ -268,6 +281,7 @@ public abstract class AbstractPersistenceServerServiceTest { private void createDefaultTenant() { var postgreSQLContainerMaster = SpringPostgreSQLTestContainer.getInstance().withDatabaseName("integration-tests-db-master").withUsername("sa").withPassword("sa"); + var mongoDbContainer = MongoDBTestContainer.getInstance(); var port = postgreSQLContainerMaster.getJdbcUrl().substring(0, postgreSQLContainerMaster.getJdbcUrl().lastIndexOf('/')).split(":")[3]; @@ -296,6 +310,7 @@ public abstract class AbstractPersistenceServerServiceTest { .numberOfShards("1") .numberOfReplicas("5") .build()); + redactionTenant.setS3StorageConnection(S3StorageConnection.builder() .key("key") .secret("secret") @@ -304,6 +319,15 @@ public abstract class AbstractPersistenceServerServiceTest { .region("eu") .endpoint("endpoint") .build()); + + redactionTenant.setMongoDBConnection(MongoDBConnection.builder() + .host(mongoDbContainer.getHost()) + .port(String.valueOf(mongoDbContainer.getFirstMappedPort())) + .username(MongoDBTestContainer.MONGO_USERNAME) + .password(MongoDBTestContainer.MONGO_PASSWORD) + .database(MongoDBTestContainer.MONGO_DATABASE) + .build()); + when(tenantsClient.getTenant("redaction")).thenReturn(redactionTenant); when(tenantsClient.getTenants()).thenReturn(List.of(redactionTenant)); @@ -385,6 +409,9 @@ public abstract class AbstractPersistenceServerServiceTest { indexInformationRepository.deleteAll(); applicationConfigRepository.deleteAll(); + entityLogEntryDocumentRepository.deleteAll(); + entityLogDocumentRepository.deleteAll(); + }); } @@ -401,10 +428,17 @@ public abstract class AbstractPersistenceServerServiceTest { var redisContainer = RedisTestContainer.getInstance(); redisContainer.start(); + var mongoInstance = MongoDBTestContainer.getInstance(); + mongoInstance.start(); + log.info("Hosts are - Redis: {}, Postgres: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost()); TestPropertyValues.of("REDIS_PORT=" + redisContainer.getFirstMappedPort(), "REDIS_HOST=" + redisContainer.getHost(), + "MONGODB_HOST=" + mongoInstance.getHost(), + "MONGODB_PORT=" + mongoInstance.getFirstMappedPort(), + "MONGODB_USER=" + MongoDBTestContainer.MONGO_USERNAME, + "MONGODB_PASSWORD=" + MongoDBTestContainer.MONGO_PASSWORD, "fforesight.jobs.enabled=false", "fforesight.keycloak.enabled=false").applyTo(configurableApplicationContext.getEnvironment()); @@ -416,7 +450,9 @@ public abstract class AbstractPersistenceServerServiceTest { @EnableWebSecurity @EnableMethodSecurity @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) + @Import({MongoDataSources.class, MongoDbConfiguration.class}) @ComponentScan("com.iqser.red.service.persistence") + @EnableMongoRepositories("com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository") public static class TestConfiguration { @Bean diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java new file mode 100644 index 000000000..61abcab1a --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java @@ -0,0 +1,35 @@ +package com.iqser.red.service.peristence.v1.server.integration.utils; + +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.utility.DockerImageName; + +public final class MongoDBTestContainer extends GenericContainer { + + private static final String IMAGE_VERSION = "mongo:7.0.2"; + public static final Integer MONGO_PORT = 27017; + public static final String MONGO_DATABASE = "mongo_database"; + public static final String MONGO_PASSWORD = "mongo_password"; + public static final String MONGO_USERNAME = "mongo_username"; + private static MongoDBTestContainer mongoDB; + + + private MongoDBTestContainer() { + + super(DockerImageName.parse(IMAGE_VERSION)); + + } + + + public static MongoDBTestContainer getInstance() { + + if (mongoDB == null) { + mongoDB = new MongoDBTestContainer().withEnv("MONGO_INITDB_ROOT_USERNAME", MONGO_USERNAME) + .withEnv("MONGO_INITDB_ROOT_PASSWORD", MONGO_PASSWORD) + .withEnv("MONGO_INITDB_DATABASE", MONGO_DATABASE) + .withExposedPorts(MONGO_PORT); + + } + return mongoDB; + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml index 968397e81..7f5c1f6a7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml @@ -19,7 +19,15 @@ spring: order_inserts: true order_updates: true open-in-view: true - + data: + mongodb: + auto-index-creation: true + # todo: multi-tenancy + database: redaction + host: ${MONGODB_HOST:localhost} + port: 27017 + username: ${MONGODB_USER} + password: ${MONGODB_PASSWORD} rabbitmq: host: ${RABBITMQ_HOST:localhost} port: ${RABBITMQ_PORT:5672} From 0edb28f164cadb8757ff89ec6e3d5a8390dfd618 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 13:25:19 +0100 Subject: [PATCH 05/32] RED-8702: Explore document databases to store entityLog * first fix for failing tests --- .../service/mongo/EntityLogMongoService.java | 4 ++-- .../EntityLogDocumentRepository.java | 17 -------------- .../EntityLogEntryDocumentRepository.java | 23 ------------------- .../build.gradle.kts | 3 +++ .../peristence/v1/server/Application.java | 10 ++++---- .../AbstractPersistenceServerServiceTest.java | 16 ++++++------- 6 files changed, 18 insertions(+), 55 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java index b820787aa..87ebd379d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java @@ -11,8 +11,8 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; import com.iqser.red.service.persistence.management.v1.processor.exception.EntityLogDocumentNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntityLogDocumentRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntityLogEntryDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogEntryDocumentRepository; 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; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java deleted file mode 100644 index e9916d08f..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; - -import java.util.Optional; - -import org.springframework.data.mongodb.repository.MongoRepository; -import org.springframework.data.mongodb.repository.Query; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; - -@Repository -public interface EntityLogDocumentRepository extends MongoRepository { - - @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") - Optional findAnalysisNumberById(@Param("_id") String id); -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java deleted file mode 100644 index 8e1d82a06..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; - -import java.util.List; - -import org.springframework.data.mongodb.repository.MongoRepository; -import org.springframework.data.mongodb.repository.Query; - -import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; - -public interface EntityLogEntryDocumentRepository extends MongoRepository { - - @Query("{ 'entityLogId' : ?0, 'manualChanges' : { $exists: true, $not: { $size: 0 } } }") - List findByEntityLogIdAndManualChangesNotEmpty(String entityLogId); - - @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") - List findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); - - @Query("{ 'entityLogId' : ?0}") - List findByEntityLogId(String entityLogId); - - @Query(value = "{ 'entityLogId' : ?0}", delete = true) - void deleteByEntityLogId(String entityLogId); -} diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 56535f7ff..8d867fef9 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -17,7 +17,10 @@ configurations { } } +val springBootStarterVersion = "3.1.5" + dependencies { + api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api(project(":persistence-service-processor-v1")) api(project(":persistence-service-external-api-impl-v1")) api(project(":persistence-service-external-api-impl-v2")) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java index 9a638d226..f50606f28 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java @@ -14,7 +14,6 @@ import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfigurati import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; -import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cache.annotation.EnableCaching; @@ -39,6 +38,8 @@ import com.iqser.red.service.dictionarymerge.commons.DictionaryMergeService; import com.iqser.red.service.persistence.management.v1.processor.PersistenceServiceProcessorConfiguration; import com.iqser.red.service.persistence.management.v1.processor.cache.PersistenceServiceExternalApiCacheConfiguration; import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogEntryDocumentRepository; import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.v1.internal.api.PersistenceServiceInternalApiConfiguration; import com.iqser.red.storage.commons.StorageAutoConfiguration; @@ -46,7 +47,6 @@ import com.knecon.fforesight.databasetenantcommons.DatabaseTenantCommonsAutoConf import com.knecon.fforesight.jobscommons.JobsAutoConfiguration; import com.knecon.fforesight.keycloakcommons.DefaultKeyCloakCommonsAutoConfiguration; import com.knecon.fforesight.mongo.database.commons.MongoDatabaseCommonsAutoConfiguration; -import com.knecon.fforesight.mongo.database.commons.service.MongoDataSources; import com.knecon.fforesight.swaggercommons.SpringDocAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyMessagingConfiguration; @@ -66,10 +66,10 @@ import lombok.extern.slf4j.Slf4j; @EnableScheduling @EnableCaching @EnableConfigurationProperties({FileManagementServiceSettings.class}) -@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class, MongoDatabaseCommonsAutoConfiguration.class}) +@EnableMongoRepositories(basePackages = "com.iqser.red.service.persistence") +@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class}) @SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class}) -@Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class, MongoDataSources.class}) -@EnableMongoRepositories(basePackages = "com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository") +@Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class}) public class Application implements ApplicationContextAware { /** diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index e36ae8be7..90e1ec9f7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -25,11 +25,15 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.ApplicationConfig; import com.iqser.red.service.redaction.v1.model.DroolsValidation; import com.iqser.red.storage.commons.service.StorageService; +import com.iqser.red.storage.commons.service.StorageServiceImpl; import com.iqser.red.storage.commons.utils.FileSystemBackedStorageService; import com.knecon.fforesight.databasetenantcommons.providers.TenantCreatedListener; import com.knecon.fforesight.databasetenantcommons.providers.events.TenantCreatedEvent; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.knecon.fforesight.mongo.database.commons.config.MongoDbConfiguration; +import com.knecon.fforesight.mongo.database.commons.config.MultiTenantMongoDBFactory; +import com.knecon.fforesight.mongo.database.commons.service.MongoClientCache; +import com.knecon.fforesight.mongo.database.commons.service.MongoConnectionProviderImpl; import com.knecon.fforesight.mongo.database.commons.service.MongoDataSources; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import com.knecon.fforesight.tenantcommons.TenantContext; @@ -51,6 +55,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; +import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration; +import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; @@ -107,10 +113,6 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired protected StorageService storageService; @Autowired - protected EntityLogDocumentRepository entityLogDocumentRepository; - @Autowired - protected EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; - @Autowired protected EntityLogMongoService entityLogMongoService; @Autowired protected FileManagementStorageService fileManagementStorageService; @@ -409,8 +411,8 @@ public abstract class AbstractPersistenceServerServiceTest { indexInformationRepository.deleteAll(); applicationConfigRepository.deleteAll(); - entityLogEntryDocumentRepository.deleteAll(); - entityLogDocumentRepository.deleteAll(); + //entityLogEntryDocumentRepository.deleteAll(); + //entityLogDocumentRepository.deleteAll(); }); } @@ -450,9 +452,7 @@ public abstract class AbstractPersistenceServerServiceTest { @EnableWebSecurity @EnableMethodSecurity @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) - @Import({MongoDataSources.class, MongoDbConfiguration.class}) @ComponentScan("com.iqser.red.service.persistence") - @EnableMongoRepositories("com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository") public static class TestConfiguration { @Bean From e9c26e37dfa5a5c4b14df3f18102b23b93e1c324 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 14:52:34 +0100 Subject: [PATCH 06/32] RED-8702: Explore document databases to store entityLog * fix for AbstractPersistenceServerServiceTest to include mongodb container --- .../build.gradle.kts | 3 - .../peristence/v1/server/Application.java | 4 +- .../AbstractPersistenceServerServiceTest.java | 187 ++++++++++++------ .../utils/MongoDBTestContainer.java | 6 +- 4 files changed, 131 insertions(+), 69 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 8d867fef9..56535f7ff 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -17,10 +17,7 @@ configurations { } } -val springBootStarterVersion = "3.1.5" - dependencies { - api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api(project(":persistence-service-processor-v1")) api(project(":persistence-service-external-api-impl-v1")) api(project(":persistence-service-external-api-impl-v2")) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java index f50606f28..a90522e03 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java @@ -38,8 +38,6 @@ import com.iqser.red.service.dictionarymerge.commons.DictionaryMergeService; import com.iqser.red.service.persistence.management.v1.processor.PersistenceServiceProcessorConfiguration; import com.iqser.red.service.persistence.management.v1.processor.cache.PersistenceServiceExternalApiCacheConfiguration; import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; -import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogDocumentRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogEntryDocumentRepository; import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.v1.internal.api.PersistenceServiceInternalApiConfiguration; import com.iqser.red.storage.commons.StorageAutoConfiguration; @@ -67,7 +65,7 @@ import lombok.extern.slf4j.Slf4j; @EnableCaching @EnableConfigurationProperties({FileManagementServiceSettings.class}) @EnableMongoRepositories(basePackages = "com.iqser.red.service.persistence") -@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class}) +@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class, MongoDatabaseCommonsAutoConfiguration.class}) @SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class}) @Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class}) public class Application implements ApplicationContextAware { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 90e1ec9f7..a9413bd12 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -1,5 +1,53 @@ package com.iqser.red.service.peristence.v1.server.integration.utils; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.assertj.core.util.Lists; +import org.bson.BsonArray; +import org.bson.BsonDocument; +import org.bson.BsonString; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.quartz.Scheduler; +import org.springframework.amqp.core.AmqpAdmin; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.test.util.TestPropertyValues; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.StatementCallback; +import org.springframework.jdbc.datasource.SingleConnectionDataSource; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; + import com.iqser.red.commons.jackson.ObjectMapperFactory; import com.iqser.red.service.peristence.v1.server.Application; import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; @@ -15,8 +63,35 @@ import com.iqser.red.service.persistence.management.v1.processor.service.Applica 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.mongo.EntityLogMongoService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.*; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.*; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogEntryDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ApplicationConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadStatusRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributeConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesGeneralConfigurationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.IndexInformationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisMappingRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationPreferencesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RuleSetRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ViewedPagesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.WatermarkRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.ForceRedactionRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.LegalBasisChangeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.ManualRedactionRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RecategorizationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RemoveRedactionRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalsePositiveEntryRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; @@ -25,71 +100,27 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.ApplicationConfig; import com.iqser.red.service.redaction.v1.model.DroolsValidation; import com.iqser.red.storage.commons.service.StorageService; -import com.iqser.red.storage.commons.service.StorageServiceImpl; import com.iqser.red.storage.commons.utils.FileSystemBackedStorageService; import com.knecon.fforesight.databasetenantcommons.providers.TenantCreatedListener; import com.knecon.fforesight.databasetenantcommons.providers.events.TenantCreatedEvent; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; -import com.knecon.fforesight.mongo.database.commons.config.MongoDbConfiguration; -import com.knecon.fforesight.mongo.database.commons.config.MultiTenantMongoDBFactory; -import com.knecon.fforesight.mongo.database.commons.service.MongoClientCache; -import com.knecon.fforesight.mongo.database.commons.service.MongoConnectionProviderImpl; -import com.knecon.fforesight.mongo.database.commons.service.MongoDataSources; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import com.knecon.fforesight.tenantcommons.TenantContext; import com.knecon.fforesight.tenantcommons.TenantsClient; -import com.knecon.fforesight.tenantcommons.model.*; +import com.knecon.fforesight.tenantcommons.model.AuthDetails; +import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; +import com.knecon.fforesight.tenantcommons.model.MongoDBConnection; +import com.knecon.fforesight.tenantcommons.model.S3StorageConnection; +import com.knecon.fforesight.tenantcommons.model.SearchConnection; +import com.knecon.fforesight.tenantcommons.model.TenantResponse; +import com.mongodb.MongoCommandException; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoDatabase; import io.micrometer.prometheus.PrometheusMeterRegistry; import lombok.extern.slf4j.Slf4j; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mockito; -import org.quartz.Scheduler; -import org.springframework.amqp.core.AmqpAdmin; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; -import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; -import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.util.TestPropertyValues; -import org.springframework.cloud.openfeign.EnableFeignClients; -import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.*; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.StatementCallback; -import org.springframework.jdbc.datasource.SingleConnectionDataSource; -import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.security.provisioning.InMemoryUserDetailsManager; -import org.springframework.security.web.SecurityFilterChain; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static org.mockito.Mockito.when; - @Slf4j @ExtendWith(SpringExtension.class) @EnableFeignClients(basePackageClasses = FileClient.class) @@ -115,6 +146,10 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired protected EntityLogMongoService entityLogMongoService; @Autowired + protected EntityLogDocumentRepository entityLogDocumentRepository; + @Autowired + protected EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + @Autowired protected FileManagementStorageService fileManagementStorageService; @Autowired protected DossierTemplateRepository dossierTemplateRepository; @@ -326,7 +361,7 @@ public abstract class AbstractPersistenceServerServiceTest { .host(mongoDbContainer.getHost()) .port(String.valueOf(mongoDbContainer.getFirstMappedPort())) .username(MongoDBTestContainer.MONGO_USERNAME) - .password(MongoDBTestContainer.MONGO_PASSWORD) + .password(encryptionDecryptionService.encrypt(MongoDBTestContainer.MONGO_PASSWORD)) .database(MongoDBTestContainer.MONGO_DATABASE) .build()); @@ -358,6 +393,8 @@ public abstract class AbstractPersistenceServerServiceTest { } + + @AfterEach public void cleanupStorage() { @@ -411,8 +448,8 @@ public abstract class AbstractPersistenceServerServiceTest { indexInformationRepository.deleteAll(); applicationConfigRepository.deleteAll(); - //entityLogEntryDocumentRepository.deleteAll(); - //entityLogDocumentRepository.deleteAll(); + entityLogEntryDocumentRepository.deleteAll(); + entityLogDocumentRepository.deleteAll(); }); } @@ -432,6 +469,7 @@ public abstract class AbstractPersistenceServerServiceTest { var mongoInstance = MongoDBTestContainer.getInstance(); mongoInstance.start(); + createMongoDBDatabase(mongoInstance); log.info("Hosts are - Redis: {}, Postgres: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost()); @@ -448,11 +486,40 @@ public abstract class AbstractPersistenceServerServiceTest { } + + private static void createMongoDBDatabase(MongoDBTestContainer mongoDBTestContainer) { + + try (MongoClient mongoClient = MongoClients.create(String.format("mongodb://%s:%s@%s:%s/", + MongoDBTestContainer.MONGO_USERNAME, + MongoDBTestContainer.MONGO_PASSWORD, + mongoDBTestContainer.getHost(), + mongoDBTestContainer.getFirstMappedPort()))) { + MongoDatabase database = mongoClient.getDatabase(MongoDBTestContainer.MONGO_DATABASE); + BsonDocument createUserCommand = new BsonDocument(); + createUserCommand.append("createUser", new BsonString(MongoDBTestContainer.MONGO_USERNAME)); + createUserCommand.append("pwd", new BsonString(MongoDBTestContainer.MONGO_PASSWORD)); + BsonArray roles = new BsonArray(); + roles.add(new BsonString("readWrite")); + createUserCommand.append("roles", roles); + + try { + database.runCommand(createUserCommand); + } catch (MongoCommandException mongoCommandException) { + // ignore user already exists + if(mongoCommandException.getErrorCode() != 51003) { + throw mongoCommandException; + } + + } + + } + } + @Configuration @EnableWebSecurity @EnableMethodSecurity @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) - @ComponentScan("com.iqser.red.service.persistence") + @ComponentScan(basePackages = {"com.iqser.red.service.persistence" }) public static class TestConfiguration { @Bean diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java index 61abcab1a..6db3c46ec 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java @@ -7,9 +7,9 @@ public final class MongoDBTestContainer extends GenericContainer Date: Tue, 19 Mar 2024 15:30:32 +0100 Subject: [PATCH 07/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../processor/document/EntityLogDocument.java | 9 ++---- .../document/EntityLogEntryDocument.java | 30 ++++--------------- 2 files changed, 7 insertions(+), 32 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java index 2e3d06b46..48ebf6651 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java @@ -9,6 +9,7 @@ import org.springframework.data.mongodb.core.mapping.Document; 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.EntityLogLegalBasis; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; @@ -50,19 +51,13 @@ public class EntityLogDocument { public EntityLogDocument(String dossierId, String fileId, EntityLog entityLog) { + MagicConverter.copyAllFields(entityLog, this); this.id = getDocumentId(dossierId, fileId); this.dossierId = dossierId; this.fileId = fileId; - this.analysisVersion = entityLog.getAnalysisVersion(); - this.analysisNumber = entityLog.getAnalysisNumber(); this.entityLogEntryDocument = new ArrayList<>(entityLog.getEntityLogEntry() .stream() .map(entityLogEntry -> new EntityLogEntryDocument(this.id, entityLogEntry)).toList()); - this.legalBasis = entityLog.getLegalBasis(); - this.dictionaryVersion = entityLog.getDictionaryVersion(); - this.dossierDictionaryVersion = entityLog.getDossierDictionaryVersion(); - this.rulesVersion = entityLog.getRulesVersion(); - this.legalBasisVersion = entityLog.getLegalBasisVersion(); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java index 87963463a..aa20ebd04 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java @@ -8,6 +8,7 @@ import java.util.Set; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; +import com.fasterxml.jackson.databind.ObjectMapper; 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.Engine; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; @@ -15,6 +16,7 @@ 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.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.Position; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -81,34 +83,12 @@ public class EntityLogEntryDocument { public EntityLogEntryDocument(String entityLogId, EntityLogEntry entityLogEntry) { + MagicConverter.copyAllFields(entityLogEntry, this); this.id = entityLogId + "/" + entityLogEntry.getId(); this.entryId = entityLogEntry.getId(); this.entityLogId = entityLogId; - this.type = entityLogEntry.getType(); - this.entryType = entityLogEntry.getEntryType(); - this.state = entityLogEntry.getState(); - this.value = entityLogEntry.getValue(); - this.reason = entityLogEntry.getReason(); - this.matchedRule = entityLogEntry.getMatchedRule(); - this.legalBasis = entityLogEntry.getLegalBasis(); - this.containingNodeId = new ArrayList<>(entityLogEntry.getContainingNodeId()); - this.closestHeadline = entityLogEntry.getClosestHeadline(); - this.section = entityLogEntry.getSection(); - this.positions = new ArrayList<>(entityLogEntry.getPositions()); - this.textBefore = entityLogEntry.getTextBefore(); - this.textAfter = entityLogEntry.getTextAfter(); - this.startOffset = entityLogEntry.getStartOffset(); - this.endOffset = entityLogEntry.getEndOffset(); - this.imageHasTransparency = entityLogEntry.isImageHasTransparency(); - this.dictionaryEntry = entityLogEntry.isDictionaryEntry(); - this.dossierDictionaryEntry = entityLogEntry.isDossierDictionaryEntry(); - this.excluded = entityLogEntry.isExcluded(); - this.changes = new ArrayList<>(entityLogEntry.getChanges()); - this.manualChanges = new ArrayList<>(entityLogEntry.getManualChanges()); - this.engines = new HashSet<>(entityLogEntry.getEngines()); - this.reference = new HashSet<>(entityLogEntry.getReference()); - this.importedRedactionIntersections = new HashSet<>(entityLogEntry.getImportedRedactionIntersections()); - this.numberOfComments = entityLogEntry.getNumberOfComments(); + + } } From aed3da331ba4e985c2a010dc6898b33cb89bebd6 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 16:36:59 +0100 Subject: [PATCH 08/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../integration/utils/AbstractPersistenceServerServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index a9413bd12..6a2c43035 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -471,7 +471,7 @@ public abstract class AbstractPersistenceServerServiceTest { mongoInstance.start(); createMongoDBDatabase(mongoInstance); - log.info("Hosts are - Redis: {}, Postgres: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost()); + log.info("Hosts are - Redis: {}, Postgres: {}, MongoDB: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost(), mongoInstance.getHost()); TestPropertyValues.of("REDIS_PORT=" + redisContainer.getFirstMappedPort(), "REDIS_HOST=" + redisContainer.getHost(), From 49932a9074688e3356759991febb76a34ea199b9 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 13 Mar 2024 15:26:35 +0100 Subject: [PATCH 09/32] RED-8702: Explore document databases to store entityLog * refactoring RED-8702: Explore document databases to store entityLog * refactoring RED-8702: Explore document databases to store entityLog * fix for AbstractPersistenceServerServiceTest to include mongodb container RED-8702: Explore document databases to store entityLog * first fix for failing tests RED-8702: Explore document databases to store entityLog RED-8702: Explore document databases to store entityLog * added mongodb documents, repositories and EntityLogMongoService * refactored places where entity logs were stored and loaded to use new logic RED-8702 RED-8702 --- .../internal/AdminInterfaceController.java | 4 +- .../build.gradle.kts | 5 +- .../processor/document/EntityLogDocument.java | 70 ++++++ .../document/EntityLogEntryDocument.java | 94 +++++++ .../EntityLogDocumentNotFoundException.java | 10 + .../migration/SaasMigrationService.java | 4 +- .../ManualRedactionTypeRenameMigration15.java | 4 +- .../service/FileManagementStorageService.java | 30 ++- .../processor/service/FileStatusService.java | 4 +- .../service/mongo/EntityLogMongoService.java | 238 ++++++++++++++++++ .../EntityLogDocumentRepository.java | 17 ++ .../EntityLogEntryDocumentRepository.java | 25 ++ .../build.gradle.kts | 1 + .../peristence/v1/server/Application.java | 5 +- .../src/main/resources/application.yaml | 9 + .../service/FileTesterAndProvider.java | 3 +- .../tests/ManualRedactionTest.java | 40 +-- .../AbstractPersistenceServerServiceTest.java | 189 ++++++++++---- .../utils/MongoDBTestContainer.java | 35 +++ .../src/test/resources/application.yml | 10 +- .../build.gradle.kts | 2 + 21 files changed, 715 insertions(+), 84 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java index 0cdb2ca51..0f58f9dad 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java @@ -36,7 +36,7 @@ public class AdminInterfaceController { public void resetFile(@RequestParam("dossierId") String dossierId, @RequestParam("fileId") String fileId) { fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_TEXT); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_POSITION); @@ -141,7 +141,7 @@ public class AdminInterfaceController { var fileId = file.getId(); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_STRUCTURE); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_TEXT); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); diff --git a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts index 1fb9d4bcf..0e277da9a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -34,8 +34,8 @@ dependencies { exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1") } api("com.knecon.fforesight:jobs-commons:0.10.0") - api("com.knecon.fforesight:database-tenant-commons:0.21.0") - api("com.knecon.fforesight:keycloak-commons:0.25.0") + api("com.knecon.fforesight:database-tenant-commons:maverick-mongo") + api("com.knecon.fforesight:keycloak-commons:maverick-mongo") api("com.knecon.fforesight:tracing-commons:0.5.0") api("com.knecon.fforesight:swagger-commons:0.5.0") api("com.giffing.bucket4j.spring.boot.starter:bucket4j-spring-boot-starter:0.4.0") @@ -43,6 +43,7 @@ dependencies { api("org.springframework.boot:spring-boot-starter-mail:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-data-jpa:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-data-redis:${springBootStarterVersion}") + api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-amqp:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-web:${springBootStarterVersion}") api("com.iqser.red.commons:spring-commons:2.1.0") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java new file mode 100644 index 000000000..48ebf6651 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java @@ -0,0 +1,70 @@ +package com.iqser.red.service.persistence.management.v1.processor.document; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; + +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.EntityLogLegalBasis; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(onlyExplicitlyIncluded = true) +@Document(collection = "entity-logs") +public class EntityLogDocument { + + @Id + @EqualsAndHashCode.Include + private String id; + + private String dossierId; + private String fileId; + + private long analysisVersion; + + //@Indexed(direction = IndexDirection.DESCENDING) + private int analysisNumber; + + @DBRef + private List entityLogEntryDocument = new ArrayList<>(); + + private List legalBasis = new ArrayList<>(); + + private long dictionaryVersion = -1; + private long dossierDictionaryVersion = -1; + + private long rulesVersion = -1; + private long legalBasisVersion = -1; + + + public EntityLogDocument(String dossierId, String fileId, EntityLog entityLog) { + + MagicConverter.copyAllFields(entityLog, this); + this.id = getDocumentId(dossierId, fileId); + this.dossierId = dossierId; + this.fileId = fileId; + this.entityLogEntryDocument = new ArrayList<>(entityLog.getEntityLogEntry() + .stream() + .map(entityLogEntry -> new EntityLogEntryDocument(this.id, entityLogEntry)).toList()); + + } + + + public static String getDocumentId(String dossierId, String fileId) { + + return dossierId + "/" + fileId; + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java new file mode 100644 index 000000000..aa20ebd04 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java @@ -0,0 +1,94 @@ +package com.iqser.red.service.persistence.management.v1.processor.document; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import com.fasterxml.jackson.databind.ObjectMapper; +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.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.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.Position; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.FieldDefaults; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(onlyExplicitlyIncluded = true) +@FieldDefaults(level = AccessLevel.PRIVATE) +@Document(collection = "entity-log-entries") +//@CompoundIndexes({ + //@CompoundIndex(name = "changes_analysisNumber", def = "{ 'changes.analysisNumber': 1 }") +// }) +public class EntityLogEntryDocument { + + @Id + @EqualsAndHashCode.Include + String id; + String entryId; + String entityLogId; + String type; + EntryType entryType; + EntryState state; + String value; + String reason; + String matchedRule; + String legalBasis; + + List containingNodeId; + String closestHeadline; + String section; + + List positions = new ArrayList<>(); + + String textBefore; + String textAfter; + + int startOffset; + int endOffset; + + boolean imageHasTransparency; + + boolean dictionaryEntry; + boolean dossierDictionaryEntry; + + boolean excluded; + + List changes = new ArrayList<>(); + + List manualChanges = new ArrayList<>(); + + Set engines = new HashSet<>(); + + Set reference = new HashSet<>(); + + Set importedRedactionIntersections = new HashSet<>(); + + int numberOfComments; + + + public EntityLogEntryDocument(String entityLogId, EntityLogEntry entityLogEntry) { + + MagicConverter.copyAllFields(entityLogEntry, this); + this.id = entityLogId + "/" + entityLogEntry.getId(); + this.entryId = entityLogEntry.getId(); + this.entityLogId = entityLogId; + + + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java new file mode 100644 index 000000000..fe33d0df9 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.persistence.management.v1.processor.exception; + +public class EntityLogDocumentNotFoundException extends RuntimeException { + + public EntityLogDocumentNotFoundException(String errorMessage) { + + super(errorMessage); + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java index 3606f9a74..46444ec4b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java @@ -45,6 +45,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.MIGRATION_QUEUE; +import static com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType.ENTITY_LOG; import static com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_QUEUE; @Slf4j @@ -200,9 +201,10 @@ public class SaasMigrationService implements TenantSyncService { } + //todo: 8702 private boolean entityLogMigrationFilesExist(String dossierId, String fileId) { - return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.ENTITY_LOG)) && storageService.objectExists( + return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, ENTITY_LOG)) && storageService.objectExists( TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.MIGRATED_IDS)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java index c42fdcfe3..8494b32e2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java @@ -69,7 +69,7 @@ public class ManualRedactionTypeRenameMigration15 extends Migration { continue; } - if (!fileManagementStorageService.objectExists(file.getDossierId(), file.getId(), FileType.ENTITY_LOG)) { + if (!fileManagementStorageService.entityLogExists(file.getDossierId(), file.getId())) { continue; } @@ -92,7 +92,7 @@ public class ManualRedactionTypeRenameMigration15 extends Migration { } } } - fileManagementStorageService.storeJSONObject(file.getDossierId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(file.getDossierId(), file.getId(), entityLog); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java index b199fb4ae..8036fb11f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.exception.InternalServerErrorException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.EntityLogMongoService; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; @@ -36,6 +37,8 @@ public class FileManagementStorageService { private final StorageService storageService; + private final EntityLogMongoService entityLogMongoService; + @SneakyThrows public byte[] getStoredObjectBytes(String dossierId, String fileId, FileType fileType) { @@ -99,14 +102,20 @@ public class FileManagementStorageService { public EntityLog getEntityLog(String dossierId, String fileId) { - try { - return storageService.readJSONObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.ENTITY_LOG), EntityLog.class); - } catch (StorageObjectDoesNotExist e) { - log.debug("EntityLog does not exist"); - throw new NotFoundException(String.format("EntityLog does not exist for Dossier ID \"%s\" and File ID \"%s\"!", dossierId, fileId)); - } catch (StorageException e) { - throw new InternalServerErrorException(e.getMessage()); - } + return entityLogMongoService.findEntityLogByDossierIdAndFileId(dossierId, fileId) + .orElseThrow(() -> new NotFoundException(String.format("EntityLog does not exist for Dossier ID \"%s\" and File ID \"%s\"!", dossierId, fileId))); + + } + + @SneakyThrows + public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog); + } + + public boolean entityLogExists(String dossierId, String fileId) { + + return entityLogMongoService.entityLogDocumentExists(dossierId, fileId); } @@ -161,6 +170,11 @@ public class FileManagementStorageService { storageService.deleteObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, fileType)); } + public void deleteEntityLog(String dossierId, String fileId) { + + entityLogMongoService.deleteEntityLog(dossierId, fileId); + } + public void deleteObject(String storageId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java index 22273f6a8..4ad2d6cf3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java @@ -690,7 +690,7 @@ public class FileStatusService { fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ORIGIN); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.IMAGE_INFO); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_STRUCTURE); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); @@ -719,7 +719,7 @@ public class FileStatusService { OffsetDateTime now = OffsetDateTime.now(); // remove everything related to redaction fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.IMAGE_INFO); // wipe comments diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java new file mode 100644 index 000000000..87ebd379d --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java @@ -0,0 +1,238 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.mongo; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; +import com.iqser.red.service.persistence.management.v1.processor.exception.EntityLogDocumentNotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogEntryDocumentRepository; +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; + +@Service +public class EntityLogMongoService { + + private final EntityLogDocumentRepository entityLogDocumentRepository; + private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + + + public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository) { + + this.entityLogDocumentRepository = entityLogDocumentRepository; + this.entityLogEntryDocumentRepository = entityLogEntryDocumentRepository; + } + + + public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + EntityLogDocument entityLogDocument = entityLogDocumentRepository.insert(new EntityLogDocument(dossierId, fileId, entityLog)); + + entityLogEntryDocumentRepository.insert(entityLog.getEntityLogEntry() + .stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogDocument.getId(), entityLogEntry)) + .toList()); + } + + + // this does everything : insert when not found and update if found + // todo: remove and replace when services use insert,update,delete correctly + public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)); + if (optionalEntityLogDocument.isEmpty()) { + // throw new EntityLogDocumentNotFoundException(String.format("Entity log for dossier %s and file %s not found.", dossierId, fileId)); + insertEntityLog(dossierId, fileId, entityLog); + return; + } + + EntityLogDocument oldEntityLogDocument = optionalEntityLogDocument.get(); + List oldEntityLogEntryDocuments = oldEntityLogDocument.getEntityLogEntryDocument(); + + EntityLogDocument newEntityLogDocument = new EntityLogDocument(dossierId, fileId, entityLog); + List newEntityLogEntryDocuments = newEntityLogDocument.getEntityLogEntryDocument(); + + List toUpdate = new ArrayList<>(oldEntityLogEntryDocuments); + toUpdate.retainAll(newEntityLogEntryDocuments); + + List toRemove = new ArrayList<>(oldEntityLogEntryDocuments); + toRemove.removeAll(toUpdate); + + List toInsert = new ArrayList<>(newEntityLogEntryDocuments); + toInsert.removeAll(toUpdate); + + entityLogEntryDocumentRepository.saveAll(toUpdate); + entityLogEntryDocumentRepository.deleteAll(toRemove); + entityLogEntryDocumentRepository.insert(toInsert); + + entityLogDocumentRepository.save(newEntityLogDocument); + } + + + public void deleteEntityLog(String dossierId, String fileId) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + entityLogDocumentRepository.deleteById(entityLogId); + + entityLogEntryDocumentRepository.deleteByEntityLogId(entityLogId); + } + + + public void insertEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocument().addAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.insert(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + public void updateEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + entityLogEntryDocumentRepository.saveAll(entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList()); + } + + public void deleteEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocument().removeAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.deleteAll(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + private EntityLogDocument getEntityLogDocument(String entityLogId) { + + Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(entityLogId); + + if (optionalEntityLogDocument.isEmpty()) { + throw new EntityLogDocumentNotFoundException(String.format("Entity log not found for %s", entityLogId)); + } + + return optionalEntityLogDocument.get(); + } + + + public Optional findEntityLogByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)) + .map(EntityLogMongoService::fromDocument); + } + + + public boolean entityLogDocumentExists(String dossierId, String fileId) { + + return entityLogDocumentRepository.existsById(EntityLogDocument.getDocumentId(dossierId, fileId)); + } + + + public Optional findLatestAnalysisNumber(String dossierId, String fileId) { + + return entityLogDocumentRepository.findAnalysisNumberById(EntityLogDocument.getDocumentId(dossierId, fileId)) + .map(EntityLogDocument::getAnalysisNumber); + } + + + public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(EntityLogDocument.getDocumentId(dossierId, fileId)) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(EntityLogDocument.getDocumentId(dossierId, fileId), analysisNumber) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + public List findAllEntriesByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogId(EntityLogDocument.getDocumentId(dossierId, fileId)) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + private static EntityLog fromDocument(EntityLogDocument entityLogDocument) { + + EntityLog entityLog = new EntityLog(); + entityLog.setAnalysisVersion(entityLogDocument.getAnalysisVersion()); + entityLog.setAnalysisNumber(entityLogDocument.getAnalysisNumber()); + entityLog.setEntityLogEntry(entityLogDocument.getEntityLogEntryDocument() + .stream() + .map(EntityLogMongoService::fromDocument) + .collect(Collectors.toList())); + entityLog.setLegalBasis(entityLogDocument.getLegalBasis()); + entityLog.setDictionaryVersion(entityLogDocument.getDictionaryVersion()); + entityLog.setDossierDictionaryVersion(entityLogDocument.getDossierDictionaryVersion()); + entityLog.setRulesVersion(entityLogDocument.getRulesVersion()); + entityLog.setLegalBasisVersion(entityLogDocument.getLegalBasisVersion()); + return entityLog; + } + + + private static EntityLogEntry fromDocument(EntityLogEntryDocument entityLogEntryDocument) { + + EntityLogEntry entityLogEntry = new EntityLogEntry(); + entityLogEntry.setId(entityLogEntryDocument.getEntryId()); + entityLogEntry.setState(entityLogEntryDocument.getState()); + entityLogEntry.setValue(entityLogEntryDocument.getValue()); + entityLogEntry.setReason(entityLogEntryDocument.getReason()); + entityLogEntry.setMatchedRule(entityLogEntryDocument.getMatchedRule()); + entityLogEntry.setLegalBasis(entityLogEntryDocument.getLegalBasis()); + entityLogEntry.setContainingNodeId(new ArrayList<>(entityLogEntryDocument.getContainingNodeId())); + entityLogEntry.setClosestHeadline(entityLogEntryDocument.getClosestHeadline()); + entityLogEntry.setSection(entityLogEntryDocument.getSection()); + entityLogEntry.setPositions(new ArrayList<>(entityLogEntryDocument.getPositions())); + entityLogEntry.setTextBefore(entityLogEntryDocument.getTextBefore()); + entityLogEntry.setTextAfter(entityLogEntryDocument.getTextAfter()); + entityLogEntry.setStartOffset(entityLogEntryDocument.getStartOffset()); + entityLogEntry.setEndOffset(entityLogEntryDocument.getEndOffset()); + entityLogEntry.setImageHasTransparency(entityLogEntryDocument.isImageHasTransparency()); + entityLogEntry.setDictionaryEntry(entityLogEntryDocument.isDictionaryEntry()); + entityLogEntry.setDossierDictionaryEntry(entityLogEntryDocument.isDossierDictionaryEntry()); + entityLogEntry.setExcluded(entityLogEntryDocument.isExcluded()); + entityLogEntry.setChanges(new ArrayList<>(entityLogEntryDocument.getChanges())); + entityLogEntry.setManualChanges(new ArrayList<>(entityLogEntryDocument.getManualChanges())); + entityLogEntry.setEngines(new HashSet<>(entityLogEntryDocument.getEngines())); + entityLogEntry.setReference(new HashSet<>(entityLogEntryDocument.getReference())); + entityLogEntry.setImportedRedactionIntersections(new HashSet<>(entityLogEntryDocument.getImportedRedactionIntersections())); + entityLogEntry.setNumberOfComments(entityLogEntryDocument.getNumberOfComments()); + return entityLogEntry; + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java new file mode 100644 index 000000000..d7aa23952 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java @@ -0,0 +1,17 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository; + +import java.util.Optional; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; + +@Repository +public interface EntityLogDocumentRepository extends MongoRepository { + + @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") + Optional findAnalysisNumberById(@Param("_id") String id); +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java new file mode 100644 index 000000000..c8e4f2015 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java @@ -0,0 +1,25 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.stereotype.Repository; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; + +@Repository +public interface EntityLogEntryDocumentRepository extends MongoRepository { + + @Query("{ 'entityLogId' : ?0, 'manualChanges' : { $exists: true, $not: { $size: 0 } } }") + List findByEntityLogIdAndManualChangesNotEmpty(String entityLogId); + + @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") + List findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); + + @Query("{ 'entityLogId' : ?0}") + List findByEntityLogId(String entityLogId); + + @Query(value = "{ 'entityLogId' : ?0}", delete = true) + void deleteByEntityLogId(String entityLogId); +} diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 521247b80..56535f7ff 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -23,6 +23,7 @@ dependencies { api(project(":persistence-service-external-api-impl-v2")) api(project(":persistence-service-internal-api-impl-v1")) api("com.iqser.red.commons:storage-commons:2.45.0") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo") api("junit:junit:4.13.2") api("org.apache.logging.log4j:log4j-slf4j-impl:2.19.0") api("net.logstash.logback:logstash-logback-encoder:7.4") diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java index 50f039237..a90522e03 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java @@ -21,6 +21,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.http.server.observation.DefaultServerRequestObservationConvention; import org.springframework.http.server.observation.ServerRequestObservationContext; import org.springframework.http.server.observation.ServerRequestObservationConvention; @@ -43,6 +44,7 @@ import com.iqser.red.storage.commons.StorageAutoConfiguration; import com.knecon.fforesight.databasetenantcommons.DatabaseTenantCommonsAutoConfiguration; import com.knecon.fforesight.jobscommons.JobsAutoConfiguration; import com.knecon.fforesight.keycloakcommons.DefaultKeyCloakCommonsAutoConfiguration; +import com.knecon.fforesight.mongo.database.commons.MongoDatabaseCommonsAutoConfiguration; import com.knecon.fforesight.swaggercommons.SpringDocAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyMessagingConfiguration; @@ -62,7 +64,8 @@ import lombok.extern.slf4j.Slf4j; @EnableScheduling @EnableCaching @EnableConfigurationProperties({FileManagementServiceSettings.class}) -@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class}) +@EnableMongoRepositories(basePackages = "com.iqser.red.service.persistence") +@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class, MongoDatabaseCommonsAutoConfiguration.class}) @SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class}) @Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class}) public class Application implements ApplicationContextAware { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml index 0af757fe1..6960236c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml @@ -37,6 +37,15 @@ spring: batch_size: 1000 order_inserts: true order_updates: true + data: + mongodb: + auto-index-creation: true + # todo: multi-tenancy + database: redaction + host: ${MONGODB_HOST:localhost} + port: 27017 + username: ${MONGODB_USER} + password: ${MONGODB_PASSWORD} cache: type: redis mvc: diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index e856e1b16..d702fb1c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -64,9 +64,8 @@ public class FileTesterAndProvider { assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isGreaterThanOrEqualTo(1); - fileManagementStorageService.storeJSONObject(dossier.getId(), + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getFileId(), - FileType.ENTITY_LOG, new EntityLog(1, 1, List.of(EntityLogEntry.builder() diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 7b6107283..7672880cc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -139,7 +139,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(entityLog); @@ -333,7 +333,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -393,7 +393,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -448,7 +448,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -543,7 +543,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); @@ -562,7 +562,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -708,7 +708,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); @@ -727,7 +727,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -877,7 +877,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); @@ -896,7 +896,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -1043,7 +1043,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); @@ -1062,7 +1062,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -1186,7 +1186,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1270,7 +1270,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1449,7 +1449,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1648,7 +1648,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1754,7 +1754,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(entityLog); @@ -1864,7 +1864,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(entityLog); @@ -1948,8 +1948,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); var recatModel = RecategorizationRequestModel.builder() diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 76eb9a805..6a2c43035 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -1,42 +1,17 @@ package com.iqser.red.service.peristence.v1.server.integration.utils; -import com.iqser.red.commons.jackson.ObjectMapperFactory; -import com.iqser.red.service.peristence.v1.server.Application; -import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.utils.MetricsPrinterService; -import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; -import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; -import com.iqser.red.service.persistence.management.v1.processor.client.searchservice.SearchClient; -import com.iqser.red.service.persistence.management.v1.processor.client.tenantusermanagementservice.UsersClient; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity; -import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles; -import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; -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.persistence.repository.*; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.*; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalsePositiveEntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; -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.dossiertemplate.configuration.ApplicationConfig; -import com.iqser.red.service.redaction.v1.model.DroolsValidation; -import com.iqser.red.storage.commons.service.StorageService; -import com.iqser.red.storage.commons.utils.FileSystemBackedStorageService; -import com.knecon.fforesight.databasetenantcommons.providers.TenantCreatedListener; -import com.knecon.fforesight.databasetenantcommons.providers.events.TenantCreatedEvent; -import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; -import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; -import com.knecon.fforesight.tenantcommons.TenantContext; -import com.knecon.fforesight.tenantcommons.TenantsClient; -import com.knecon.fforesight.tenantcommons.model.*; +import static org.mockito.Mockito.when; -import io.micrometer.prometheus.PrometheusMeterRegistry; -import lombok.extern.slf4j.Slf4j; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import org.assertj.core.util.Lists; +import org.bson.BsonArray; +import org.bson.BsonDocument; +import org.bson.BsonString; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; @@ -53,7 +28,11 @@ import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Primary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.StatementCallback; import org.springframework.jdbc.datasource.SingleConnectionDataSource; @@ -69,13 +48,78 @@ import org.springframework.security.web.SecurityFilterChain; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; +import com.iqser.red.commons.jackson.ObjectMapperFactory; +import com.iqser.red.service.peristence.v1.server.Application; +import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.utils.MetricsPrinterService; +import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; +import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; +import com.iqser.red.service.persistence.management.v1.processor.client.searchservice.SearchClient; +import com.iqser.red.service.persistence.management.v1.processor.client.tenantusermanagementservice.UsersClient; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity; +import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles; +import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; +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.mongo.EntityLogMongoService; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogEntryDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ApplicationConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadStatusRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributeConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesGeneralConfigurationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.IndexInformationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisMappingRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationPreferencesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RuleSetRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ViewedPagesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.WatermarkRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.ForceRedactionRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.LegalBasisChangeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.ManualRedactionRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RecategorizationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RemoveRedactionRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalsePositiveEntryRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; +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.dossiertemplate.configuration.ApplicationConfig; +import com.iqser.red.service.redaction.v1.model.DroolsValidation; +import com.iqser.red.storage.commons.service.StorageService; +import com.iqser.red.storage.commons.utils.FileSystemBackedStorageService; +import com.knecon.fforesight.databasetenantcommons.providers.TenantCreatedListener; +import com.knecon.fforesight.databasetenantcommons.providers.events.TenantCreatedEvent; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; +import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; +import com.knecon.fforesight.tenantcommons.TenantContext; +import com.knecon.fforesight.tenantcommons.TenantsClient; +import com.knecon.fforesight.tenantcommons.model.AuthDetails; +import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; +import com.knecon.fforesight.tenantcommons.model.MongoDBConnection; +import com.knecon.fforesight.tenantcommons.model.S3StorageConnection; +import com.knecon.fforesight.tenantcommons.model.SearchConnection; +import com.knecon.fforesight.tenantcommons.model.TenantResponse; +import com.mongodb.MongoCommandException; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoDatabase; -import static org.mockito.Mockito.when; +import io.micrometer.prometheus.PrometheusMeterRegistry; +import lombok.extern.slf4j.Slf4j; @Slf4j @ExtendWith(SpringExtension.class) @@ -100,6 +144,12 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired protected StorageService storageService; @Autowired + protected EntityLogMongoService entityLogMongoService; + @Autowired + protected EntityLogDocumentRepository entityLogDocumentRepository; + @Autowired + protected EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + @Autowired protected FileManagementStorageService fileManagementStorageService; @Autowired protected DossierTemplateRepository dossierTemplateRepository; @@ -268,6 +318,7 @@ public abstract class AbstractPersistenceServerServiceTest { private void createDefaultTenant() { var postgreSQLContainerMaster = SpringPostgreSQLTestContainer.getInstance().withDatabaseName("integration-tests-db-master").withUsername("sa").withPassword("sa"); + var mongoDbContainer = MongoDBTestContainer.getInstance(); var port = postgreSQLContainerMaster.getJdbcUrl().substring(0, postgreSQLContainerMaster.getJdbcUrl().lastIndexOf('/')).split(":")[3]; @@ -296,6 +347,7 @@ public abstract class AbstractPersistenceServerServiceTest { .numberOfShards("1") .numberOfReplicas("5") .build()); + redactionTenant.setS3StorageConnection(S3StorageConnection.builder() .key("key") .secret("secret") @@ -304,6 +356,15 @@ public abstract class AbstractPersistenceServerServiceTest { .region("eu") .endpoint("endpoint") .build()); + + redactionTenant.setMongoDBConnection(MongoDBConnection.builder() + .host(mongoDbContainer.getHost()) + .port(String.valueOf(mongoDbContainer.getFirstMappedPort())) + .username(MongoDBTestContainer.MONGO_USERNAME) + .password(encryptionDecryptionService.encrypt(MongoDBTestContainer.MONGO_PASSWORD)) + .database(MongoDBTestContainer.MONGO_DATABASE) + .build()); + when(tenantsClient.getTenant("redaction")).thenReturn(redactionTenant); when(tenantsClient.getTenants()).thenReturn(List.of(redactionTenant)); @@ -332,6 +393,8 @@ public abstract class AbstractPersistenceServerServiceTest { } + + @AfterEach public void cleanupStorage() { @@ -385,6 +448,9 @@ public abstract class AbstractPersistenceServerServiceTest { indexInformationRepository.deleteAll(); applicationConfigRepository.deleteAll(); + entityLogEntryDocumentRepository.deleteAll(); + entityLogDocumentRepository.deleteAll(); + }); } @@ -401,10 +467,18 @@ public abstract class AbstractPersistenceServerServiceTest { var redisContainer = RedisTestContainer.getInstance(); redisContainer.start(); - log.info("Hosts are - Redis: {}, Postgres: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost()); + var mongoInstance = MongoDBTestContainer.getInstance(); + mongoInstance.start(); + createMongoDBDatabase(mongoInstance); + + log.info("Hosts are - Redis: {}, Postgres: {}, MongoDB: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost(), mongoInstance.getHost()); TestPropertyValues.of("REDIS_PORT=" + redisContainer.getFirstMappedPort(), "REDIS_HOST=" + redisContainer.getHost(), + "MONGODB_HOST=" + mongoInstance.getHost(), + "MONGODB_PORT=" + mongoInstance.getFirstMappedPort(), + "MONGODB_USER=" + MongoDBTestContainer.MONGO_USERNAME, + "MONGODB_PASSWORD=" + MongoDBTestContainer.MONGO_PASSWORD, "fforesight.jobs.enabled=false", "fforesight.keycloak.enabled=false").applyTo(configurableApplicationContext.getEnvironment()); @@ -412,11 +486,40 @@ public abstract class AbstractPersistenceServerServiceTest { } + + private static void createMongoDBDatabase(MongoDBTestContainer mongoDBTestContainer) { + + try (MongoClient mongoClient = MongoClients.create(String.format("mongodb://%s:%s@%s:%s/", + MongoDBTestContainer.MONGO_USERNAME, + MongoDBTestContainer.MONGO_PASSWORD, + mongoDBTestContainer.getHost(), + mongoDBTestContainer.getFirstMappedPort()))) { + MongoDatabase database = mongoClient.getDatabase(MongoDBTestContainer.MONGO_DATABASE); + BsonDocument createUserCommand = new BsonDocument(); + createUserCommand.append("createUser", new BsonString(MongoDBTestContainer.MONGO_USERNAME)); + createUserCommand.append("pwd", new BsonString(MongoDBTestContainer.MONGO_PASSWORD)); + BsonArray roles = new BsonArray(); + roles.add(new BsonString("readWrite")); + createUserCommand.append("roles", roles); + + try { + database.runCommand(createUserCommand); + } catch (MongoCommandException mongoCommandException) { + // ignore user already exists + if(mongoCommandException.getErrorCode() != 51003) { + throw mongoCommandException; + } + + } + + } + } + @Configuration @EnableWebSecurity @EnableMethodSecurity @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) - @ComponentScan("com.iqser.red.service.persistence") + @ComponentScan(basePackages = {"com.iqser.red.service.persistence" }) public static class TestConfiguration { @Bean diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java new file mode 100644 index 000000000..6db3c46ec --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java @@ -0,0 +1,35 @@ +package com.iqser.red.service.peristence.v1.server.integration.utils; + +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.utility.DockerImageName; + +public final class MongoDBTestContainer extends GenericContainer { + + private static final String IMAGE_VERSION = "mongo:7.0.2"; + public static final Integer MONGO_PORT = 27017; + public static final String MONGO_DATABASE = "redaction"; + public static final String MONGO_PASSWORD = "mongopassword"; + public static final String MONGO_USERNAME = "mongousername"; + private static MongoDBTestContainer mongoDB; + + + private MongoDBTestContainer() { + + super(DockerImageName.parse(IMAGE_VERSION)); + + } + + + public static MongoDBTestContainer getInstance() { + + if (mongoDB == null) { + mongoDB = new MongoDBTestContainer().withEnv("MONGO_INITDB_ROOT_USERNAME", MONGO_USERNAME) + .withEnv("MONGO_INITDB_ROOT_PASSWORD", MONGO_PASSWORD) + .withEnv("MONGO_INITDB_DATABASE", MONGO_DATABASE) + .withExposedPorts(MONGO_PORT); + + } + return mongoDB; + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml index 968397e81..7f5c1f6a7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml @@ -19,7 +19,15 @@ spring: order_inserts: true order_updates: true open-in-view: true - + data: + mongodb: + auto-index-creation: true + # todo: multi-tenancy + database: redaction + host: ${MONGODB_HOST:localhost} + port: 27017 + username: ${MONGODB_USER} + password: ${MONGODB_PASSWORD} rabbitmq: host: ${RABBITMQ_HOST:localhost} port: ${RABBITMQ_PORT:5672} diff --git a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts index a10ac954d..b2dfa2a93 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts @@ -3,6 +3,8 @@ plugins { id("io.freefair.lombok") version "8.4" } +val springBootStarterVersion = "3.1.5" + dependencies { api("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.16.0") api("com.google.guava:guava:31.1-jre") From c7d650abb9824793d47084e51ecd646b445dae43 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 13 Mar 2024 15:26:35 +0100 Subject: [PATCH 10/32] RED-8702: Explore document databases to store entityLog * refactoring RED-8702: Explore document databases to store entityLog * refactoring RED-8702: Explore document databases to store entityLog * fix for AbstractPersistenceServerServiceTest to include mongodb container RED-8702: Explore document databases to store entityLog * first fix for failing tests RED-8702: Explore document databases to store entityLog RED-8702: Explore document databases to store entityLog * added mongodb documents, repositories and EntityLogMongoService * refactored places where entity logs were stored and loaded to use new logic RED-8702 RED-8702 --- .../internal/AdminInterfaceController.java | 4 +- .../build.gradle.kts | 5 +- .../processor/document/EntityLogDocument.java | 70 ++++++ .../document/EntityLogEntryDocument.java | 94 +++++++ .../EntityLogDocumentNotFoundException.java | 10 + .../migration/SaasMigrationService.java | 3 +- .../ManualRedactionTypeRenameMigration15.java | 4 +- .../service/FileManagementStorageService.java | 30 ++- .../processor/service/FileStatusService.java | 4 +- .../service/mongo/EntityLogMongoService.java | 238 ++++++++++++++++++ .../EntityLogDocumentRepository.java | 17 ++ .../EntityLogEntryDocumentRepository.java | 25 ++ .../build.gradle.kts | 1 + .../peristence/v1/server/Application.java | 5 +- .../src/main/resources/application.yaml | 9 + .../service/FileTesterAndProvider.java | 3 +- .../tests/ManualRedactionTest.java | 40 +-- .../AbstractPersistenceServerServiceTest.java | 189 ++++++++++---- .../utils/MongoDBTestContainer.java | 35 +++ .../src/test/resources/application.yml | 10 +- .../build.gradle.kts | 2 + 21 files changed, 714 insertions(+), 84 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java index 0cdb2ca51..0f58f9dad 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java @@ -36,7 +36,7 @@ public class AdminInterfaceController { public void resetFile(@RequestParam("dossierId") String dossierId, @RequestParam("fileId") String fileId) { fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_TEXT); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_POSITION); @@ -141,7 +141,7 @@ public class AdminInterfaceController { var fileId = file.getId(); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_STRUCTURE); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_TEXT); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); diff --git a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts index dd6e52a9c..90e713f81 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -34,8 +34,8 @@ dependencies { exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1") } api("com.knecon.fforesight:jobs-commons:0.10.0") - api("com.knecon.fforesight:database-tenant-commons:0.21.0") - api("com.knecon.fforesight:keycloak-commons:0.25.0") + api("com.knecon.fforesight:database-tenant-commons:maverick-mongo") + api("com.knecon.fforesight:keycloak-commons:maverick-mongo") api("com.knecon.fforesight:tracing-commons:0.5.0") api("com.knecon.fforesight:swagger-commons:0.7.0") api("com.giffing.bucket4j.spring.boot.starter:bucket4j-spring-boot-starter:0.4.0") @@ -43,6 +43,7 @@ dependencies { api("org.springframework.boot:spring-boot-starter-mail:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-data-jpa:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-data-redis:${springBootStarterVersion}") + api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-amqp:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-web:${springBootStarterVersion}") api("com.iqser.red.commons:spring-commons:2.1.0") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java new file mode 100644 index 000000000..48ebf6651 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java @@ -0,0 +1,70 @@ +package com.iqser.red.service.persistence.management.v1.processor.document; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; + +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.EntityLogLegalBasis; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(onlyExplicitlyIncluded = true) +@Document(collection = "entity-logs") +public class EntityLogDocument { + + @Id + @EqualsAndHashCode.Include + private String id; + + private String dossierId; + private String fileId; + + private long analysisVersion; + + //@Indexed(direction = IndexDirection.DESCENDING) + private int analysisNumber; + + @DBRef + private List entityLogEntryDocument = new ArrayList<>(); + + private List legalBasis = new ArrayList<>(); + + private long dictionaryVersion = -1; + private long dossierDictionaryVersion = -1; + + private long rulesVersion = -1; + private long legalBasisVersion = -1; + + + public EntityLogDocument(String dossierId, String fileId, EntityLog entityLog) { + + MagicConverter.copyAllFields(entityLog, this); + this.id = getDocumentId(dossierId, fileId); + this.dossierId = dossierId; + this.fileId = fileId; + this.entityLogEntryDocument = new ArrayList<>(entityLog.getEntityLogEntry() + .stream() + .map(entityLogEntry -> new EntityLogEntryDocument(this.id, entityLogEntry)).toList()); + + } + + + public static String getDocumentId(String dossierId, String fileId) { + + return dossierId + "/" + fileId; + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java new file mode 100644 index 000000000..aa20ebd04 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java @@ -0,0 +1,94 @@ +package com.iqser.red.service.persistence.management.v1.processor.document; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import com.fasterxml.jackson.databind.ObjectMapper; +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.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.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.Position; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.FieldDefaults; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(onlyExplicitlyIncluded = true) +@FieldDefaults(level = AccessLevel.PRIVATE) +@Document(collection = "entity-log-entries") +//@CompoundIndexes({ + //@CompoundIndex(name = "changes_analysisNumber", def = "{ 'changes.analysisNumber': 1 }") +// }) +public class EntityLogEntryDocument { + + @Id + @EqualsAndHashCode.Include + String id; + String entryId; + String entityLogId; + String type; + EntryType entryType; + EntryState state; + String value; + String reason; + String matchedRule; + String legalBasis; + + List containingNodeId; + String closestHeadline; + String section; + + List positions = new ArrayList<>(); + + String textBefore; + String textAfter; + + int startOffset; + int endOffset; + + boolean imageHasTransparency; + + boolean dictionaryEntry; + boolean dossierDictionaryEntry; + + boolean excluded; + + List changes = new ArrayList<>(); + + List manualChanges = new ArrayList<>(); + + Set engines = new HashSet<>(); + + Set reference = new HashSet<>(); + + Set importedRedactionIntersections = new HashSet<>(); + + int numberOfComments; + + + public EntityLogEntryDocument(String entityLogId, EntityLogEntry entityLogEntry) { + + MagicConverter.copyAllFields(entityLogEntry, this); + this.id = entityLogId + "/" + entityLogEntry.getId(); + this.entryId = entityLogEntry.getId(); + this.entityLogId = entityLogId; + + + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java new file mode 100644 index 000000000..fe33d0df9 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.persistence.management.v1.processor.exception; + +public class EntityLogDocumentNotFoundException extends RuntimeException { + + public EntityLogDocumentNotFoundException(String errorMessage) { + + super(errorMessage); + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java index cf8911208..bf2a23e31 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java @@ -208,9 +208,10 @@ public class SaasMigrationService implements TenantSyncService { } + //todo: 8702 private boolean entityLogMigrationFilesExist(String dossierId, String fileId) { - return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.ENTITY_LOG)) && storageService.objectExists( + return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, ENTITY_LOG)) && storageService.objectExists( TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.MIGRATED_IDS)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java index c42fdcfe3..8494b32e2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualRedactionTypeRenameMigration15.java @@ -69,7 +69,7 @@ public class ManualRedactionTypeRenameMigration15 extends Migration { continue; } - if (!fileManagementStorageService.objectExists(file.getDossierId(), file.getId(), FileType.ENTITY_LOG)) { + if (!fileManagementStorageService.entityLogExists(file.getDossierId(), file.getId())) { continue; } @@ -92,7 +92,7 @@ public class ManualRedactionTypeRenameMigration15 extends Migration { } } } - fileManagementStorageService.storeJSONObject(file.getDossierId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(file.getDossierId(), file.getId(), entityLog); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java index b199fb4ae..8036fb11f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.exception.InternalServerErrorException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.EntityLogMongoService; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; @@ -36,6 +37,8 @@ public class FileManagementStorageService { private final StorageService storageService; + private final EntityLogMongoService entityLogMongoService; + @SneakyThrows public byte[] getStoredObjectBytes(String dossierId, String fileId, FileType fileType) { @@ -99,14 +102,20 @@ public class FileManagementStorageService { public EntityLog getEntityLog(String dossierId, String fileId) { - try { - return storageService.readJSONObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.ENTITY_LOG), EntityLog.class); - } catch (StorageObjectDoesNotExist e) { - log.debug("EntityLog does not exist"); - throw new NotFoundException(String.format("EntityLog does not exist for Dossier ID \"%s\" and File ID \"%s\"!", dossierId, fileId)); - } catch (StorageException e) { - throw new InternalServerErrorException(e.getMessage()); - } + return entityLogMongoService.findEntityLogByDossierIdAndFileId(dossierId, fileId) + .orElseThrow(() -> new NotFoundException(String.format("EntityLog does not exist for Dossier ID \"%s\" and File ID \"%s\"!", dossierId, fileId))); + + } + + @SneakyThrows + public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog); + } + + public boolean entityLogExists(String dossierId, String fileId) { + + return entityLogMongoService.entityLogDocumentExists(dossierId, fileId); } @@ -161,6 +170,11 @@ public class FileManagementStorageService { storageService.deleteObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, fileType)); } + public void deleteEntityLog(String dossierId, String fileId) { + + entityLogMongoService.deleteEntityLog(dossierId, fileId); + } + public void deleteObject(String storageId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java index 22273f6a8..4ad2d6cf3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java @@ -690,7 +690,7 @@ public class FileStatusService { fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ORIGIN); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.IMAGE_INFO); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_STRUCTURE); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.DOCUMENT_PAGES); @@ -719,7 +719,7 @@ public class FileStatusService { OffsetDateTime now = OffsetDateTime.now(); // remove everything related to redaction fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); - fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ENTITY_LOG); + fileManagementStorageService.deleteEntityLog(dossierId, fileId); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.IMAGE_INFO); // wipe comments diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java new file mode 100644 index 000000000..87ebd379d --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java @@ -0,0 +1,238 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.mongo; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; +import com.iqser.red.service.persistence.management.v1.processor.exception.EntityLogDocumentNotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogEntryDocumentRepository; +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; + +@Service +public class EntityLogMongoService { + + private final EntityLogDocumentRepository entityLogDocumentRepository; + private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + + + public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository) { + + this.entityLogDocumentRepository = entityLogDocumentRepository; + this.entityLogEntryDocumentRepository = entityLogEntryDocumentRepository; + } + + + public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + EntityLogDocument entityLogDocument = entityLogDocumentRepository.insert(new EntityLogDocument(dossierId, fileId, entityLog)); + + entityLogEntryDocumentRepository.insert(entityLog.getEntityLogEntry() + .stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogDocument.getId(), entityLogEntry)) + .toList()); + } + + + // this does everything : insert when not found and update if found + // todo: remove and replace when services use insert,update,delete correctly + public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)); + if (optionalEntityLogDocument.isEmpty()) { + // throw new EntityLogDocumentNotFoundException(String.format("Entity log for dossier %s and file %s not found.", dossierId, fileId)); + insertEntityLog(dossierId, fileId, entityLog); + return; + } + + EntityLogDocument oldEntityLogDocument = optionalEntityLogDocument.get(); + List oldEntityLogEntryDocuments = oldEntityLogDocument.getEntityLogEntryDocument(); + + EntityLogDocument newEntityLogDocument = new EntityLogDocument(dossierId, fileId, entityLog); + List newEntityLogEntryDocuments = newEntityLogDocument.getEntityLogEntryDocument(); + + List toUpdate = new ArrayList<>(oldEntityLogEntryDocuments); + toUpdate.retainAll(newEntityLogEntryDocuments); + + List toRemove = new ArrayList<>(oldEntityLogEntryDocuments); + toRemove.removeAll(toUpdate); + + List toInsert = new ArrayList<>(newEntityLogEntryDocuments); + toInsert.removeAll(toUpdate); + + entityLogEntryDocumentRepository.saveAll(toUpdate); + entityLogEntryDocumentRepository.deleteAll(toRemove); + entityLogEntryDocumentRepository.insert(toInsert); + + entityLogDocumentRepository.save(newEntityLogDocument); + } + + + public void deleteEntityLog(String dossierId, String fileId) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + entityLogDocumentRepository.deleteById(entityLogId); + + entityLogEntryDocumentRepository.deleteByEntityLogId(entityLogId); + } + + + public void insertEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocument().addAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.insert(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + public void updateEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + entityLogEntryDocumentRepository.saveAll(entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList()); + } + + public void deleteEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocument().removeAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.deleteAll(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + private EntityLogDocument getEntityLogDocument(String entityLogId) { + + Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(entityLogId); + + if (optionalEntityLogDocument.isEmpty()) { + throw new EntityLogDocumentNotFoundException(String.format("Entity log not found for %s", entityLogId)); + } + + return optionalEntityLogDocument.get(); + } + + + public Optional findEntityLogByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)) + .map(EntityLogMongoService::fromDocument); + } + + + public boolean entityLogDocumentExists(String dossierId, String fileId) { + + return entityLogDocumentRepository.existsById(EntityLogDocument.getDocumentId(dossierId, fileId)); + } + + + public Optional findLatestAnalysisNumber(String dossierId, String fileId) { + + return entityLogDocumentRepository.findAnalysisNumberById(EntityLogDocument.getDocumentId(dossierId, fileId)) + .map(EntityLogDocument::getAnalysisNumber); + } + + + public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(EntityLogDocument.getDocumentId(dossierId, fileId)) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(EntityLogDocument.getDocumentId(dossierId, fileId), analysisNumber) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + public List findAllEntriesByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogId(EntityLogDocument.getDocumentId(dossierId, fileId)) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + private static EntityLog fromDocument(EntityLogDocument entityLogDocument) { + + EntityLog entityLog = new EntityLog(); + entityLog.setAnalysisVersion(entityLogDocument.getAnalysisVersion()); + entityLog.setAnalysisNumber(entityLogDocument.getAnalysisNumber()); + entityLog.setEntityLogEntry(entityLogDocument.getEntityLogEntryDocument() + .stream() + .map(EntityLogMongoService::fromDocument) + .collect(Collectors.toList())); + entityLog.setLegalBasis(entityLogDocument.getLegalBasis()); + entityLog.setDictionaryVersion(entityLogDocument.getDictionaryVersion()); + entityLog.setDossierDictionaryVersion(entityLogDocument.getDossierDictionaryVersion()); + entityLog.setRulesVersion(entityLogDocument.getRulesVersion()); + entityLog.setLegalBasisVersion(entityLogDocument.getLegalBasisVersion()); + return entityLog; + } + + + private static EntityLogEntry fromDocument(EntityLogEntryDocument entityLogEntryDocument) { + + EntityLogEntry entityLogEntry = new EntityLogEntry(); + entityLogEntry.setId(entityLogEntryDocument.getEntryId()); + entityLogEntry.setState(entityLogEntryDocument.getState()); + entityLogEntry.setValue(entityLogEntryDocument.getValue()); + entityLogEntry.setReason(entityLogEntryDocument.getReason()); + entityLogEntry.setMatchedRule(entityLogEntryDocument.getMatchedRule()); + entityLogEntry.setLegalBasis(entityLogEntryDocument.getLegalBasis()); + entityLogEntry.setContainingNodeId(new ArrayList<>(entityLogEntryDocument.getContainingNodeId())); + entityLogEntry.setClosestHeadline(entityLogEntryDocument.getClosestHeadline()); + entityLogEntry.setSection(entityLogEntryDocument.getSection()); + entityLogEntry.setPositions(new ArrayList<>(entityLogEntryDocument.getPositions())); + entityLogEntry.setTextBefore(entityLogEntryDocument.getTextBefore()); + entityLogEntry.setTextAfter(entityLogEntryDocument.getTextAfter()); + entityLogEntry.setStartOffset(entityLogEntryDocument.getStartOffset()); + entityLogEntry.setEndOffset(entityLogEntryDocument.getEndOffset()); + entityLogEntry.setImageHasTransparency(entityLogEntryDocument.isImageHasTransparency()); + entityLogEntry.setDictionaryEntry(entityLogEntryDocument.isDictionaryEntry()); + entityLogEntry.setDossierDictionaryEntry(entityLogEntryDocument.isDossierDictionaryEntry()); + entityLogEntry.setExcluded(entityLogEntryDocument.isExcluded()); + entityLogEntry.setChanges(new ArrayList<>(entityLogEntryDocument.getChanges())); + entityLogEntry.setManualChanges(new ArrayList<>(entityLogEntryDocument.getManualChanges())); + entityLogEntry.setEngines(new HashSet<>(entityLogEntryDocument.getEngines())); + entityLogEntry.setReference(new HashSet<>(entityLogEntryDocument.getReference())); + entityLogEntry.setImportedRedactionIntersections(new HashSet<>(entityLogEntryDocument.getImportedRedactionIntersections())); + entityLogEntry.setNumberOfComments(entityLogEntryDocument.getNumberOfComments()); + return entityLogEntry; + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java new file mode 100644 index 000000000..d7aa23952 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java @@ -0,0 +1,17 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository; + +import java.util.Optional; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; + +@Repository +public interface EntityLogDocumentRepository extends MongoRepository { + + @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") + Optional findAnalysisNumberById(@Param("_id") String id); +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java new file mode 100644 index 000000000..c8e4f2015 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java @@ -0,0 +1,25 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.stereotype.Repository; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; + +@Repository +public interface EntityLogEntryDocumentRepository extends MongoRepository { + + @Query("{ 'entityLogId' : ?0, 'manualChanges' : { $exists: true, $not: { $size: 0 } } }") + List findByEntityLogIdAndManualChangesNotEmpty(String entityLogId); + + @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") + List findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); + + @Query("{ 'entityLogId' : ?0}") + List findByEntityLogId(String entityLogId); + + @Query(value = "{ 'entityLogId' : ?0}", delete = true) + void deleteByEntityLogId(String entityLogId); +} diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 521247b80..56535f7ff 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -23,6 +23,7 @@ dependencies { api(project(":persistence-service-external-api-impl-v2")) api(project(":persistence-service-internal-api-impl-v1")) api("com.iqser.red.commons:storage-commons:2.45.0") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo") api("junit:junit:4.13.2") api("org.apache.logging.log4j:log4j-slf4j-impl:2.19.0") api("net.logstash.logback:logstash-logback-encoder:7.4") diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java index 50f039237..a90522e03 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java @@ -21,6 +21,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.http.server.observation.DefaultServerRequestObservationConvention; import org.springframework.http.server.observation.ServerRequestObservationContext; import org.springframework.http.server.observation.ServerRequestObservationConvention; @@ -43,6 +44,7 @@ import com.iqser.red.storage.commons.StorageAutoConfiguration; import com.knecon.fforesight.databasetenantcommons.DatabaseTenantCommonsAutoConfiguration; import com.knecon.fforesight.jobscommons.JobsAutoConfiguration; import com.knecon.fforesight.keycloakcommons.DefaultKeyCloakCommonsAutoConfiguration; +import com.knecon.fforesight.mongo.database.commons.MongoDatabaseCommonsAutoConfiguration; import com.knecon.fforesight.swaggercommons.SpringDocAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyMessagingConfiguration; @@ -62,7 +64,8 @@ import lombok.extern.slf4j.Slf4j; @EnableScheduling @EnableCaching @EnableConfigurationProperties({FileManagementServiceSettings.class}) -@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class}) +@EnableMongoRepositories(basePackages = "com.iqser.red.service.persistence") +@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class, MongoDatabaseCommonsAutoConfiguration.class}) @SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class}) @Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class}) public class Application implements ApplicationContextAware { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml index 0af757fe1..6960236c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml @@ -37,6 +37,15 @@ spring: batch_size: 1000 order_inserts: true order_updates: true + data: + mongodb: + auto-index-creation: true + # todo: multi-tenancy + database: redaction + host: ${MONGODB_HOST:localhost} + port: 27017 + username: ${MONGODB_USER} + password: ${MONGODB_PASSWORD} cache: type: redis mvc: diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index e856e1b16..d702fb1c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -64,9 +64,8 @@ public class FileTesterAndProvider { assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isGreaterThanOrEqualTo(1); - fileManagementStorageService.storeJSONObject(dossier.getId(), + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getFileId(), - FileType.ENTITY_LOG, new EntityLog(1, 1, List.of(EntityLogEntry.builder() diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 7b6107283..7672880cc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -139,7 +139,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(entityLog); @@ -333,7 +333,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -393,7 +393,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -448,7 +448,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -543,7 +543,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); @@ -562,7 +562,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -708,7 +708,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); @@ -727,7 +727,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -877,7 +877,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); @@ -896,7 +896,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -1043,7 +1043,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier1.getId(), file1.getId(), FileType.ENTITY_LOG, entityLog1); + fileManagementStorageService.saveEntityLog(dossier1.getId(), file1.getId(), entityLog1); var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); @@ -1062,7 +1062,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier2.getId(), file2.getId(), FileType.ENTITY_LOG, entityLog2); + fileManagementStorageService.saveEntityLog(dossier2.getId(), file2.getId(), entityLog2); var redactionRequest2 = RedactionRequest.builder().dossierId(file2.getDossierId()).fileId(file2.getFileId()).dossierTemplateId(file2.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), any(), anyBoolean())).thenReturn(entityLog2); @@ -1186,7 +1186,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1270,7 +1270,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1449,7 +1449,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1648,7 +1648,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); @@ -1754,7 +1754,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(entityLog); @@ -1864,7 +1864,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(entityLog); @@ -1948,8 +1948,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); var recatModel = RecategorizationRequestModel.builder() diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 76eb9a805..6a2c43035 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -1,42 +1,17 @@ package com.iqser.red.service.peristence.v1.server.integration.utils; -import com.iqser.red.commons.jackson.ObjectMapperFactory; -import com.iqser.red.service.peristence.v1.server.Application; -import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.utils.MetricsPrinterService; -import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; -import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; -import com.iqser.red.service.persistence.management.v1.processor.client.searchservice.SearchClient; -import com.iqser.red.service.persistence.management.v1.processor.client.tenantusermanagementservice.UsersClient; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity; -import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles; -import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; -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.persistence.repository.*; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.*; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalsePositiveEntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; -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.dossiertemplate.configuration.ApplicationConfig; -import com.iqser.red.service.redaction.v1.model.DroolsValidation; -import com.iqser.red.storage.commons.service.StorageService; -import com.iqser.red.storage.commons.utils.FileSystemBackedStorageService; -import com.knecon.fforesight.databasetenantcommons.providers.TenantCreatedListener; -import com.knecon.fforesight.databasetenantcommons.providers.events.TenantCreatedEvent; -import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; -import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; -import com.knecon.fforesight.tenantcommons.TenantContext; -import com.knecon.fforesight.tenantcommons.TenantsClient; -import com.knecon.fforesight.tenantcommons.model.*; +import static org.mockito.Mockito.when; -import io.micrometer.prometheus.PrometheusMeterRegistry; -import lombok.extern.slf4j.Slf4j; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import org.assertj.core.util.Lists; +import org.bson.BsonArray; +import org.bson.BsonDocument; +import org.bson.BsonString; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; @@ -53,7 +28,11 @@ import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Primary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.StatementCallback; import org.springframework.jdbc.datasource.SingleConnectionDataSource; @@ -69,13 +48,78 @@ import org.springframework.security.web.SecurityFilterChain; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; +import com.iqser.red.commons.jackson.ObjectMapperFactory; +import com.iqser.red.service.peristence.v1.server.Application; +import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.utils.MetricsPrinterService; +import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; +import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; +import com.iqser.red.service.persistence.management.v1.processor.client.searchservice.SearchClient; +import com.iqser.red.service.persistence.management.v1.processor.client.tenantusermanagementservice.UsersClient; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity; +import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles; +import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; +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.mongo.EntityLogMongoService; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository.EntityLogEntryDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ApplicationConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadStatusRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributeConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesGeneralConfigurationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.IndexInformationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisMappingRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationPreferencesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RuleSetRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ViewedPagesRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.WatermarkRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.ForceRedactionRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.LegalBasisChangeRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.ManualRedactionRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RecategorizationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RemoveRedactionRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalsePositiveEntryRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; +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.dossiertemplate.configuration.ApplicationConfig; +import com.iqser.red.service.redaction.v1.model.DroolsValidation; +import com.iqser.red.storage.commons.service.StorageService; +import com.iqser.red.storage.commons.utils.FileSystemBackedStorageService; +import com.knecon.fforesight.databasetenantcommons.providers.TenantCreatedListener; +import com.knecon.fforesight.databasetenantcommons.providers.events.TenantCreatedEvent; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; +import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; +import com.knecon.fforesight.tenantcommons.TenantContext; +import com.knecon.fforesight.tenantcommons.TenantsClient; +import com.knecon.fforesight.tenantcommons.model.AuthDetails; +import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; +import com.knecon.fforesight.tenantcommons.model.MongoDBConnection; +import com.knecon.fforesight.tenantcommons.model.S3StorageConnection; +import com.knecon.fforesight.tenantcommons.model.SearchConnection; +import com.knecon.fforesight.tenantcommons.model.TenantResponse; +import com.mongodb.MongoCommandException; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoDatabase; -import static org.mockito.Mockito.when; +import io.micrometer.prometheus.PrometheusMeterRegistry; +import lombok.extern.slf4j.Slf4j; @Slf4j @ExtendWith(SpringExtension.class) @@ -100,6 +144,12 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired protected StorageService storageService; @Autowired + protected EntityLogMongoService entityLogMongoService; + @Autowired + protected EntityLogDocumentRepository entityLogDocumentRepository; + @Autowired + protected EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + @Autowired protected FileManagementStorageService fileManagementStorageService; @Autowired protected DossierTemplateRepository dossierTemplateRepository; @@ -268,6 +318,7 @@ public abstract class AbstractPersistenceServerServiceTest { private void createDefaultTenant() { var postgreSQLContainerMaster = SpringPostgreSQLTestContainer.getInstance().withDatabaseName("integration-tests-db-master").withUsername("sa").withPassword("sa"); + var mongoDbContainer = MongoDBTestContainer.getInstance(); var port = postgreSQLContainerMaster.getJdbcUrl().substring(0, postgreSQLContainerMaster.getJdbcUrl().lastIndexOf('/')).split(":")[3]; @@ -296,6 +347,7 @@ public abstract class AbstractPersistenceServerServiceTest { .numberOfShards("1") .numberOfReplicas("5") .build()); + redactionTenant.setS3StorageConnection(S3StorageConnection.builder() .key("key") .secret("secret") @@ -304,6 +356,15 @@ public abstract class AbstractPersistenceServerServiceTest { .region("eu") .endpoint("endpoint") .build()); + + redactionTenant.setMongoDBConnection(MongoDBConnection.builder() + .host(mongoDbContainer.getHost()) + .port(String.valueOf(mongoDbContainer.getFirstMappedPort())) + .username(MongoDBTestContainer.MONGO_USERNAME) + .password(encryptionDecryptionService.encrypt(MongoDBTestContainer.MONGO_PASSWORD)) + .database(MongoDBTestContainer.MONGO_DATABASE) + .build()); + when(tenantsClient.getTenant("redaction")).thenReturn(redactionTenant); when(tenantsClient.getTenants()).thenReturn(List.of(redactionTenant)); @@ -332,6 +393,8 @@ public abstract class AbstractPersistenceServerServiceTest { } + + @AfterEach public void cleanupStorage() { @@ -385,6 +448,9 @@ public abstract class AbstractPersistenceServerServiceTest { indexInformationRepository.deleteAll(); applicationConfigRepository.deleteAll(); + entityLogEntryDocumentRepository.deleteAll(); + entityLogDocumentRepository.deleteAll(); + }); } @@ -401,10 +467,18 @@ public abstract class AbstractPersistenceServerServiceTest { var redisContainer = RedisTestContainer.getInstance(); redisContainer.start(); - log.info("Hosts are - Redis: {}, Postgres: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost()); + var mongoInstance = MongoDBTestContainer.getInstance(); + mongoInstance.start(); + createMongoDBDatabase(mongoInstance); + + log.info("Hosts are - Redis: {}, Postgres: {}, MongoDB: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost(), mongoInstance.getHost()); TestPropertyValues.of("REDIS_PORT=" + redisContainer.getFirstMappedPort(), "REDIS_HOST=" + redisContainer.getHost(), + "MONGODB_HOST=" + mongoInstance.getHost(), + "MONGODB_PORT=" + mongoInstance.getFirstMappedPort(), + "MONGODB_USER=" + MongoDBTestContainer.MONGO_USERNAME, + "MONGODB_PASSWORD=" + MongoDBTestContainer.MONGO_PASSWORD, "fforesight.jobs.enabled=false", "fforesight.keycloak.enabled=false").applyTo(configurableApplicationContext.getEnvironment()); @@ -412,11 +486,40 @@ public abstract class AbstractPersistenceServerServiceTest { } + + private static void createMongoDBDatabase(MongoDBTestContainer mongoDBTestContainer) { + + try (MongoClient mongoClient = MongoClients.create(String.format("mongodb://%s:%s@%s:%s/", + MongoDBTestContainer.MONGO_USERNAME, + MongoDBTestContainer.MONGO_PASSWORD, + mongoDBTestContainer.getHost(), + mongoDBTestContainer.getFirstMappedPort()))) { + MongoDatabase database = mongoClient.getDatabase(MongoDBTestContainer.MONGO_DATABASE); + BsonDocument createUserCommand = new BsonDocument(); + createUserCommand.append("createUser", new BsonString(MongoDBTestContainer.MONGO_USERNAME)); + createUserCommand.append("pwd", new BsonString(MongoDBTestContainer.MONGO_PASSWORD)); + BsonArray roles = new BsonArray(); + roles.add(new BsonString("readWrite")); + createUserCommand.append("roles", roles); + + try { + database.runCommand(createUserCommand); + } catch (MongoCommandException mongoCommandException) { + // ignore user already exists + if(mongoCommandException.getErrorCode() != 51003) { + throw mongoCommandException; + } + + } + + } + } + @Configuration @EnableWebSecurity @EnableMethodSecurity @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) - @ComponentScan("com.iqser.red.service.persistence") + @ComponentScan(basePackages = {"com.iqser.red.service.persistence" }) public static class TestConfiguration { @Bean diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java new file mode 100644 index 000000000..6db3c46ec --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java @@ -0,0 +1,35 @@ +package com.iqser.red.service.peristence.v1.server.integration.utils; + +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.utility.DockerImageName; + +public final class MongoDBTestContainer extends GenericContainer { + + private static final String IMAGE_VERSION = "mongo:7.0.2"; + public static final Integer MONGO_PORT = 27017; + public static final String MONGO_DATABASE = "redaction"; + public static final String MONGO_PASSWORD = "mongopassword"; + public static final String MONGO_USERNAME = "mongousername"; + private static MongoDBTestContainer mongoDB; + + + private MongoDBTestContainer() { + + super(DockerImageName.parse(IMAGE_VERSION)); + + } + + + public static MongoDBTestContainer getInstance() { + + if (mongoDB == null) { + mongoDB = new MongoDBTestContainer().withEnv("MONGO_INITDB_ROOT_USERNAME", MONGO_USERNAME) + .withEnv("MONGO_INITDB_ROOT_PASSWORD", MONGO_PASSWORD) + .withEnv("MONGO_INITDB_DATABASE", MONGO_DATABASE) + .withExposedPorts(MONGO_PORT); + + } + return mongoDB; + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml index 968397e81..7f5c1f6a7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml @@ -19,7 +19,15 @@ spring: order_inserts: true order_updates: true open-in-view: true - + data: + mongodb: + auto-index-creation: true + # todo: multi-tenancy + database: redaction + host: ${MONGODB_HOST:localhost} + port: 27017 + username: ${MONGODB_USER} + password: ${MONGODB_PASSWORD} rabbitmq: host: ${RABBITMQ_HOST:localhost} port: ${RABBITMQ_PORT:5672} diff --git a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts index a10ac954d..b2dfa2a93 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts @@ -3,6 +3,8 @@ plugins { id("io.freefair.lombok") version "8.4" } +val springBootStarterVersion = "3.1.5" + dependencies { api("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.16.0") api("com.google.guava:guava:31.1-jre") From 2dbc4ef3486de7323779fb7c1ba91d1254df31b2 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 13 Mar 2024 15:26:35 +0100 Subject: [PATCH 11/32] RED-8702 --- .../service/EntityLogMergeService.java | 16 +- .../processor/service/EntityLogService.java | 2 +- .../ManualRedactionMapper.java | 3 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 2 +- .../PendingDictionaryEntryFactory.java | 8 +- .../service/FileTesterAndProvider.java | 6 +- .../integration/tests/EntityLogMergeTest.java | 36 ++-- .../v1/server/integration/tests/FileTest.java | 7 +- .../tests/ManualRedactionTest.java | 166 ++++++++++++------ .../AbstractPersistenceServerServiceTest.java | 6 +- .../build.gradle.kts | 1 + .../analysislog/entitylog/CascadeSave.java | 12 ++ .../analysislog/entitylog/EntityLog.java | 42 +++++ .../analysislog/entitylog/EntityLogEntry.java | 6 +- 15 files changed, 223 insertions(+), 92 deletions(-) create mode 100644 persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/CascadeSave.java 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 12ba5b1ea..a588c72e5 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 @@ -81,7 +81,7 @@ public class EntityLogMergeService { List matchingEntities = entityLog.getEntityLogEntry() .stream() - .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getId())) + .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getEntryId())) .collect(Collectors.toList()); final int analysisNumber = entityLog.getAnalysisNumber(); @@ -143,7 +143,7 @@ public class EntityLogMergeService { private EntityLogEntry findMatchingEntry(String annotationId, List matchingEntities) { return matchingEntities.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(annotationId)) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(annotationId)) .findAny() .orElseThrow(() -> new NotFoundException("No matching EntityLogEntry found for id " + annotationId)); } @@ -182,7 +182,7 @@ public class EntityLogMergeService { boolean isHint = isHint(manualRedactionEntry.getType(), dossier); EntityLogEntry entityLogEntry = EntityLogEntry.builder() - .id(manualRedactionEntry.getAnnotationId()) + .entryId(manualRedactionEntry.getAnnotationId()) .type(manualRedactionEntry.getType()) .value(manualRedactionEntry.getValue()) .legalBasis(manualRedactionEntry.getLegalBasis()) @@ -237,7 +237,7 @@ public class EntityLogMergeService { private void mergeIdsToRemove(IdRemoval idRemoval, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(idRemoval.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(idRemoval.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setState(EntryState.IGNORED); @@ -258,7 +258,7 @@ public class EntityLogMergeService { private void mergeResizeRedactions(ManualResizeRedaction manualResizeRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(manualResizeRedaction.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(manualResizeRedaction.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setTextAfter(manualResizeRedaction.getTextAfter()); @@ -283,7 +283,7 @@ public class EntityLogMergeService { private void mergeLegalBasisChanges(ManualLegalBasisChange manualLegalBasisChange, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(manualLegalBasisChange.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(manualLegalBasisChange.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis()); @@ -325,7 +325,7 @@ public class EntityLogMergeService { boolean isHint = isHint(recategorization.getType(), dossier); var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(recategorization.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(recategorization.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setType(recategorization.getType()); @@ -348,7 +348,7 @@ public class EntityLogMergeService { private void mergeForceRedactions(ManualForceRedaction forceRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(forceRedaction.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(forceRedaction.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setLegalBasis(forceRedaction.getLegalBasis()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java index d763854da..dd6e406a7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java @@ -80,7 +80,7 @@ public class EntityLogService { Map commentCountPerAnnotationId = commentService.getCommentCounts(fileId); entityLog.getEntityLogEntry() - .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getId(), 0))); + .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getEntryId(), 0))); return entityLog; } 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 83a314bae..f667dabe4 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 @@ -10,7 +10,6 @@ import java.util.Set; import org.springframework.stereotype.Service; -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.EntityLog; @@ -187,7 +186,7 @@ public class ManualRedactionMapper { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getId().equals(annotationId)) + .filter(entry -> entry.getEntryId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 82e4549a5..f3c56a10a 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 @@ -348,7 +348,7 @@ public class ManualRedactionService { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getId().equals(annotationId)) + .filter(entry -> entry.getEntryId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 d753850c1..b47411bba 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 @@ -343,7 +343,7 @@ public class ManualRedactionUndoService { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getId().equals(annotationId)) + .filter(entry -> entry.getEntryId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 6c9a317ed..8c53a07d0 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 @@ -35,7 +35,7 @@ public class PendingDictionaryEntryFactory { .propertyChanges(Map.of("value", manualRedactionEntry.getValue())) .build()); return EntityLogEntry.builder() - .id(manualRedactionEntry.getAnnotationId()) + .entryId(manualRedactionEntry.getAnnotationId()) .value(manualRedactionEntry.getValue()) .type(manualRedactionEntry.getType()) .entryType(Optional.ofNullable(manualRedactionEntry.getDictionaryEntryType()) @@ -82,7 +82,7 @@ public class PendingDictionaryEntryFactory { .build()); return EntityLogEntry.builder() - .id(originalEntry.getId()) + .entryId(originalEntry.getEntryId()) .value(originalEntry.getValue()) .type(originalEntry.getType()) .entryType(originalEntry.getEntryType()) @@ -121,7 +121,7 @@ public class PendingDictionaryEntryFactory { .propertyChanges(propertyChanges) .build()); return EntityLogEntry.builder() - .id(originalEntry.getId()) + .entryId(originalEntry.getEntryId()) .value(manualChange.getValue()) .type(originalEntry.getType()) .entryType(originalEntry.getEntryType()) @@ -171,7 +171,7 @@ public class PendingDictionaryEntryFactory { .build()); return EntityLogEntry.builder() - .id(originalEntry.getId()) + .entryId(originalEntry.getEntryId()) .value(originalEntry.getValue()) .type(manualChange.getType()) .entryType(originalEntry.getEntryType()) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index d702fb1c6..214b3c64e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -66,10 +66,12 @@ public class FileTesterAndProvider { fileManagementStorageService.saveEntityLog(dossier.getId(), file.getFileId(), - new EntityLog(1, + new EntityLog(dossier.getId(), + fileId, + 1, 1, List.of(EntityLogEntry.builder() - .id("annotationId") + .entryId("annotationId") .type("manual") .value("value entry") .entryType(EntryType.ENTITY) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java index 7a041bc58..2de272ccf 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java @@ -120,7 +120,7 @@ public class EntityLogMergeTest { ManualRedactions manualRedactions = provideManualRedactions(entryToAddId, entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId, fileId, rectangleToAddId); - var entityLog = provideEntityLog(entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId); + var entityLog = provideEntityLog(dossierId, fileId, entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId); when(manualRedactionProviderService.getManualRedactions(any(), any())).thenReturn(manualRedactions); when(fileStatusService.getStatus(fileId)).thenReturn(FileModel.builder().excluded(false).dossierStatusId(dossierTemplateId).id(fileId).build()); @@ -137,7 +137,7 @@ public class EntityLogMergeTest { var optionalEntityLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToAddId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToAddId)) .findFirst(); assertTrue(optionalEntityLogEntry.isPresent()); var entityLogEntry = optionalEntityLogEntry.get(); @@ -152,7 +152,7 @@ public class EntityLogMergeTest { var optionalRemoveEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToRemoveId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToRemoveId)) .findFirst(); assertTrue(optionalRemoveEntryLogEntry.isPresent()); var removeEntryLogEntry = optionalRemoveEntryLogEntry.get(); @@ -166,7 +166,7 @@ public class EntityLogMergeTest { var optionalResizeEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToResizeId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToResizeId)) .findFirst(); assertTrue(optionalResizeEntryLogEntry.isPresent()); var resizeEntryLogEntry = optionalResizeEntryLogEntry.get(); @@ -190,7 +190,7 @@ public class EntityLogMergeTest { var optionalLegalBasisEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryLegalBasisId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryLegalBasisId)) .findFirst(); assertTrue(optionalLegalBasisEntryLogEntry.isPresent()); var legalBasisEntryLogEntry = optionalLegalBasisEntryLogEntry.get(); @@ -205,7 +205,7 @@ public class EntityLogMergeTest { var optionalForceRedactionEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(forceRedactionId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(forceRedactionId)) .findFirst(); assertTrue(optionalForceRedactionEntryLogEntry.isPresent()); var forceRedactionEntryLogEntry = optionalForceRedactionEntryLogEntry.get(); @@ -220,7 +220,7 @@ public class EntityLogMergeTest { var optionalRectangleEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(rectangleToAddId)) + .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(rectangleToAddId)) .findFirst(); assertTrue(optionalRectangleEntryLogEntry.isPresent()); var rectangleEntryLogEntry = optionalRectangleEntryLogEntry.get(); @@ -236,22 +236,24 @@ public class EntityLogMergeTest { } - private EntityLog provideEntityLog(String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { + private EntityLog provideEntityLog(String dossierId, String fileId, String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { List positions = new ArrayList<>(); positions.add(new Position(1, 1, 1, 1, 1)); - return new EntityLog(1, + return new EntityLog(dossierId, + fileId, 1, - Lists.newArrayList(EntityLogEntry.builder() - .id(entryToRemoveId) + 1, + Lists.newArrayList(EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) + .entryId(entryToRemoveId) .type("manual") .value("Luke Skywalker") .entryType(EntryType.ENTITY) .state(EntryState.APPLIED) .dictionaryEntry(true) .build(), - EntityLogEntry.builder() - .id(entryToResizeId) + EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) + .entryId(entryToResizeId) .type("manual") .value("Darth Vader") .entryType(EntryType.ENTITY) @@ -259,8 +261,8 @@ public class EntityLogMergeTest { .dictionaryEntry(true) .positions(positions) .build(), - EntityLogEntry.builder() - .id(entryLegalBasisId) + EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) + .entryId(entryLegalBasisId) .type("manual") .value("Darth Luke") .entryType(EntryType.ENTITY) @@ -268,8 +270,8 @@ public class EntityLogMergeTest { .dictionaryEntry(true) .positions(positions) .build(), - EntityLogEntry.builder() - .id(forceRedactionId) + EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) + .entryId(forceRedactionId) .type("manual") .value("Darth Luke") .entryType(EntryType.ENTITY) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index fe831f9d0..3193deebd 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -369,10 +369,13 @@ public class FileTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "manual"); var annotationId = "imagine_this_makes_sense"; - EntityLog entityLog = new EntityLog(1, + EntityLog entityLog = new EntityLog(dossierId, + fileId, + 1, 1, List.of(EntityLogEntry.builder() - .id(annotationId) + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId(annotationId) .type(type.getType()) .value("value entry") .state(EntryState.APPLIED) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 7672880cc..af1866789 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -45,10 +45,7 @@ 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.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.EntryType; -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.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.ManualRedactionEntry; 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; @@ -124,10 +121,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -318,10 +318,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { Dictionary dossierDictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), dossier.getId()); assertThat(dossierDictionary.getEntries()).containsExactlyInAnyOrder("Luke Skywalker"); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -378,10 +381,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { // CreateTypeValue dossierDictionaryType = MagicConverter.convert(type, CreateTypeValue.class); // dictionaryClient.addType(dossierDictionaryType, dossier.getId()); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -433,10 +439,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { // dictionaryClient.addType(dossierDictionaryType, dossier.getId()); dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -520,10 +529,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); var loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); - var entityLog1 = new EntityLog(1, + var entityLog1 = new EntityLog(dossier1.getId(), + file1.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(0).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier") .dossierDictionaryEntry(true) @@ -531,7 +543,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -547,10 +560,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(1, + var entityLog2 = new EntityLog(dossier2.getId(), + file2.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -685,10 +701,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); var loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); - var entityLog1 = new EntityLog(1, + var entityLog1 = new EntityLog(dossier1.getId(), + file1.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(0).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier yayy") .dossierDictionaryEntry(true) @@ -696,7 +715,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -712,10 +732,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(1, + var entityLog2 = new EntityLog(dossier2.getId(), + file2.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -854,10 +877,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); - var entityLog1 = new EntityLog(1, + var entityLog1 = new EntityLog(dossier1.getId(), + file1.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(0).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier") .dossierDictionaryEntry(true) @@ -865,7 +891,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -881,10 +908,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(1, + var entityLog2 = new EntityLog(dossier2.getId(), + file2.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -1020,10 +1050,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); - var entityLog1 = new EntityLog(1, + var entityLog1 = new EntityLog(dossier1.getId(), + file1.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(0).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier yayy") .dossierDictionaryEntry(true) @@ -1031,7 +1064,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -1047,10 +1081,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(1, + var entityLog2 = new EntityLog(dossier2.getId(), + file2.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(addRedactions.get(1).getAnnotationId()) + .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) + .entryId(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -1171,10 +1208,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(dossierDictionary2.getEntries()).isEmpty(); var annotationId = "AnnotationId"; - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(annotationId) + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId(annotationId) .type(type.getType()) .value(lukeSkywalker) .dictionaryEntry(true) @@ -1255,10 +1295,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(dossierDictionary2.getEntries()).isEmpty(); var annotationId = "AnnotationId"; - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id(annotationId) + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId(annotationId) .type(type.getType()) .value(lukeSkywalker) .dictionaryEntry(true) @@ -1426,10 +1469,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Anakin"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type(type.getType()) .value("Anakin") .entryType(EntryType.ENTITY) @@ -1437,7 +1483,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .id("AnnotationId2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId2") .type(type.getType()) .value("Anakin2") .entryType(EntryType.ENTITY) @@ -1625,10 +1672,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Darth Vader"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("dv") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("dv") .type(type.getType()) .value("Darth Vader") .entryType(EntryType.ENTITY) @@ -1636,7 +1686,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .id("dv2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("dv2") .type(type.getType()) .value("Vader Darth") .entryType(EntryType.ENTITY) @@ -1731,10 +1782,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -1742,7 +1796,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .id("AnnotationId2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId2") .type(type.getType()) .value("Skywalker Luke") .entryType(EntryType.ENTITY) @@ -1841,10 +1896,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("AnnotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -1852,7 +1910,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .id("AnnotationId2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("AnnotationId2") .type(type.getType()) .value("Skywalker Luke") .entryType(EntryType.ENTITY) @@ -1917,10 +1976,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "type", false); - var entityLog = new EntityLog(1, + var entityLog = new EntityLog(dossier.getId(), + file.getFileId(), + 1, 1, List.of(EntityLogEntry.builder() - .id("annotationId") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("annotationId") .type(type.getType()) .value("lukeSkywalker") .dictionaryEntry(true) @@ -1928,7 +1990,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id("annotationId2") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("annotationId2") .type(type.getType()) .value("Johannesbrotkernmehl") .dictionaryEntry(true) @@ -1936,7 +1999,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .id("annotationId3") + .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) + .entryId("annotationId3") .type(type.getType()) .value("Baustelle") .dictionaryEntry(true) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 6a2c43035..5014aca79 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -299,8 +299,10 @@ public abstract class AbstractPersistenceServerServiceTest { // doNothing().when(pdfTronRedactionClient).testDigitalCurrentSignature(Mockito.any()); when(amqpAdmin.getQueueInfo(Mockito.any())).thenReturn(null); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(new EntityLog(1, 1, Lists.newArrayList(), null, 0, 0, 0, 0)); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(new EntityLog(1, + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(new EntityLog("", "", 1, 1, Lists.newArrayList(), null, 0, 0, 0, 0)); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(new EntityLog("", + "", + 1, 1, Lists.newArrayList(), null, diff --git a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts index b2dfa2a93..8e4c8efce 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts @@ -11,6 +11,7 @@ dependencies { api("org.springframework.boot:spring-boot-starter-validation:3.1.3") api("com.iqser.red.commons:jackson-commons:2.1.0") api("com.iqser.red.commons:dictionary-merge-commons:1.3.0") + implementation("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") testImplementation("com.iqser.red.commons:test-commons:2.1.0") testImplementation("org.springframework.boot:spring-boot-starter-test:3.0.4") compileOnly("org.springdoc:springdoc-openapi-ui:1.7.0") 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/CascadeSave.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/CascadeSave.java new file mode 100644 index 000000000..05888eda4 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/CascadeSave.java @@ -0,0 +1,12 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface CascadeSave { + // +} 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/EntityLog.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/EntityLog.java index b1de32916..9c23a9551 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/EntityLog.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/EntityLog.java @@ -3,6 +3,10 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislo import java.util.ArrayList; import java.util.List; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,8 +14,15 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor +@Document(collection = "entity-logs") public class EntityLog { + @Id + private String id; + + private String dossierId; + + private String fileId; /** * Version 0 Redaction Logs have manual redactions merged inside them * Version 1 Redaction Logs only contain system ( rule/dictionary ) redactions. Manual Redactions are merged in at runtime. @@ -23,6 +34,8 @@ public class EntityLog { */ private int analysisNumber; + @DBRef + @CascadeSave private List entityLogEntry = new ArrayList<>(); private List legalBasis = new ArrayList<>(); @@ -31,4 +44,33 @@ public class EntityLog { private long rulesVersion = -1; private long legalBasisVersion = -1; + + public EntityLog(String dossierId, + String fileId, + long analysisVersion, + int analysisNumber, + List entityLogEntry, + List legalBasis, + long dictionaryVersion, + long dossierDictionaryVersion, + long rulesVersion, + long legalBasisVersion) { + + this.id = getId(dossierId, fileId); + this.dossierId = dossierId; + this.fileId = fileId; + this.analysisVersion = analysisVersion; + this.analysisNumber = analysisNumber; + this.entityLogEntry = entityLogEntry; + this.legalBasis = legalBasis; + this.dictionaryVersion = dictionaryVersion; + this.dossierDictionaryVersion = dossierDictionaryVersion; + this.rulesVersion = rulesVersion; + this.legalBasisVersion = legalBasisVersion; + } + + public static String getId(String dossierId, String fileId) { + return dossierId + "/" + fileId; + } + } 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/EntityLogEntry.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/EntityLogEntry.java index 362ead2dc..1a222de20 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/EntityLogEntry.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/EntityLogEntry.java @@ -5,6 +5,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.springframework.data.mongodb.core.mapping.Document; + import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -19,9 +21,11 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @EqualsAndHashCode @FieldDefaults(level = AccessLevel.PRIVATE) +@Document(collection = "entity-log-entries") public class EntityLogEntry { - String id; + String entryId; + String entityLogId; String type; EntryType entryType; EntryState state; From c3ad821305667fadbfe09d9794ff9e61f463f9de Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 14 Mar 2024 09:17:12 +0100 Subject: [PATCH 12/32] RED-8702 --- .../service/EntityLogMergeService.java | 16 +- .../processor/service/EntityLogService.java | 2 +- .../ManualRedactionMapper.java | 3 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 2 +- .../PendingDictionaryEntryFactory.java | 8 +- .../service/FileTesterAndProvider.java | 6 +- .../integration/tests/EntityLogMergeTest.java | 36 ++-- .../v1/server/integration/tests/FileTest.java | 7 +- .../tests/ManualRedactionTest.java | 166 ++++++------------ .../AbstractPersistenceServerServiceTest.java | 6 +- .../analysislog/entitylog/CascadeSave.java | 12 -- .../analysislog/entitylog/EntityLog.java | 42 ----- .../analysislog/entitylog/EntityLogEntry.java | 6 +- 14 files changed, 92 insertions(+), 222 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/CascadeSave.java 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 a588c72e5..12ba5b1ea 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 @@ -81,7 +81,7 @@ public class EntityLogMergeService { List matchingEntities = entityLog.getEntityLogEntry() .stream() - .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getEntryId())) + .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getId())) .collect(Collectors.toList()); final int analysisNumber = entityLog.getAnalysisNumber(); @@ -143,7 +143,7 @@ public class EntityLogMergeService { private EntityLogEntry findMatchingEntry(String annotationId, List matchingEntities) { return matchingEntities.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(annotationId)) + .filter(entityLogEntry -> entityLogEntry.getId().equals(annotationId)) .findAny() .orElseThrow(() -> new NotFoundException("No matching EntityLogEntry found for id " + annotationId)); } @@ -182,7 +182,7 @@ public class EntityLogMergeService { boolean isHint = isHint(manualRedactionEntry.getType(), dossier); EntityLogEntry entityLogEntry = EntityLogEntry.builder() - .entryId(manualRedactionEntry.getAnnotationId()) + .id(manualRedactionEntry.getAnnotationId()) .type(manualRedactionEntry.getType()) .value(manualRedactionEntry.getValue()) .legalBasis(manualRedactionEntry.getLegalBasis()) @@ -237,7 +237,7 @@ public class EntityLogMergeService { private void mergeIdsToRemove(IdRemoval idRemoval, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(idRemoval.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(idRemoval.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setState(EntryState.IGNORED); @@ -258,7 +258,7 @@ public class EntityLogMergeService { private void mergeResizeRedactions(ManualResizeRedaction manualResizeRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(manualResizeRedaction.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(manualResizeRedaction.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setTextAfter(manualResizeRedaction.getTextAfter()); @@ -283,7 +283,7 @@ public class EntityLogMergeService { private void mergeLegalBasisChanges(ManualLegalBasisChange manualLegalBasisChange, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(manualLegalBasisChange.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(manualLegalBasisChange.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis()); @@ -325,7 +325,7 @@ public class EntityLogMergeService { boolean isHint = isHint(recategorization.getType(), dossier); var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(recategorization.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(recategorization.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setType(recategorization.getType()); @@ -348,7 +348,7 @@ public class EntityLogMergeService { private void mergeForceRedactions(ManualForceRedaction forceRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getEntryId().equals(forceRedaction.getAnnotationId())) + .filter(entityLogEntry -> entityLogEntry.getId().equals(forceRedaction.getAnnotationId())) .findAny(); entity.ifPresent(entityLogEntry -> { entityLogEntry.setLegalBasis(forceRedaction.getLegalBasis()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java index dd6e406a7..d763854da 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/EntityLogService.java @@ -80,7 +80,7 @@ public class EntityLogService { Map commentCountPerAnnotationId = commentService.getCommentCounts(fileId); entityLog.getEntityLogEntry() - .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getEntryId(), 0))); + .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getId(), 0))); return entityLog; } 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 f667dabe4..83a314bae 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 @@ -10,6 +10,7 @@ import java.util.Set; import org.springframework.stereotype.Service; +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.EntityLog; @@ -186,7 +187,7 @@ public class ManualRedactionMapper { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getEntryId().equals(annotationId)) + .filter(entry -> entry.getId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 f3c56a10a..82e4549a5 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 @@ -348,7 +348,7 @@ public class ManualRedactionService { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getEntryId().equals(annotationId)) + .filter(entry -> entry.getId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 b47411bba..d753850c1 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 @@ -343,7 +343,7 @@ public class ManualRedactionUndoService { return entityLog.getEntityLogEntry() .stream() - .filter(entry -> entry.getEntryId().equals(annotationId)) + .filter(entry -> entry.getId().equals(annotationId)) .findFirst() .orElseThrow(() -> new NotFoundException("Annotation does not exist in entity log.")); } 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 8c53a07d0..6c9a317ed 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 @@ -35,7 +35,7 @@ public class PendingDictionaryEntryFactory { .propertyChanges(Map.of("value", manualRedactionEntry.getValue())) .build()); return EntityLogEntry.builder() - .entryId(manualRedactionEntry.getAnnotationId()) + .id(manualRedactionEntry.getAnnotationId()) .value(manualRedactionEntry.getValue()) .type(manualRedactionEntry.getType()) .entryType(Optional.ofNullable(manualRedactionEntry.getDictionaryEntryType()) @@ -82,7 +82,7 @@ public class PendingDictionaryEntryFactory { .build()); return EntityLogEntry.builder() - .entryId(originalEntry.getEntryId()) + .id(originalEntry.getId()) .value(originalEntry.getValue()) .type(originalEntry.getType()) .entryType(originalEntry.getEntryType()) @@ -121,7 +121,7 @@ public class PendingDictionaryEntryFactory { .propertyChanges(propertyChanges) .build()); return EntityLogEntry.builder() - .entryId(originalEntry.getEntryId()) + .id(originalEntry.getId()) .value(manualChange.getValue()) .type(originalEntry.getType()) .entryType(originalEntry.getEntryType()) @@ -171,7 +171,7 @@ public class PendingDictionaryEntryFactory { .build()); return EntityLogEntry.builder() - .entryId(originalEntry.getEntryId()) + .id(originalEntry.getId()) .value(originalEntry.getValue()) .type(manualChange.getType()) .entryType(originalEntry.getEntryType()) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index 214b3c64e..d702fb1c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -66,12 +66,10 @@ public class FileTesterAndProvider { fileManagementStorageService.saveEntityLog(dossier.getId(), file.getFileId(), - new EntityLog(dossier.getId(), - fileId, - 1, + new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entryId("annotationId") + .id("annotationId") .type("manual") .value("value entry") .entryType(EntryType.ENTITY) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java index 2de272ccf..7a041bc58 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java @@ -120,7 +120,7 @@ public class EntityLogMergeTest { ManualRedactions manualRedactions = provideManualRedactions(entryToAddId, entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId, fileId, rectangleToAddId); - var entityLog = provideEntityLog(dossierId, fileId, entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId); + var entityLog = provideEntityLog(entryToRemoveId, entryToResizeId, entryLegalBasisId, forceRedactionId); when(manualRedactionProviderService.getManualRedactions(any(), any())).thenReturn(manualRedactions); when(fileStatusService.getStatus(fileId)).thenReturn(FileModel.builder().excluded(false).dossierStatusId(dossierTemplateId).id(fileId).build()); @@ -137,7 +137,7 @@ public class EntityLogMergeTest { var optionalEntityLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToAddId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToAddId)) .findFirst(); assertTrue(optionalEntityLogEntry.isPresent()); var entityLogEntry = optionalEntityLogEntry.get(); @@ -152,7 +152,7 @@ public class EntityLogMergeTest { var optionalRemoveEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToRemoveId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToRemoveId)) .findFirst(); assertTrue(optionalRemoveEntryLogEntry.isPresent()); var removeEntryLogEntry = optionalRemoveEntryLogEntry.get(); @@ -166,7 +166,7 @@ public class EntityLogMergeTest { var optionalResizeEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryToResizeId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToResizeId)) .findFirst(); assertTrue(optionalResizeEntryLogEntry.isPresent()); var resizeEntryLogEntry = optionalResizeEntryLogEntry.get(); @@ -190,7 +190,7 @@ public class EntityLogMergeTest { var optionalLegalBasisEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(entryLegalBasisId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryLegalBasisId)) .findFirst(); assertTrue(optionalLegalBasisEntryLogEntry.isPresent()); var legalBasisEntryLogEntry = optionalLegalBasisEntryLogEntry.get(); @@ -205,7 +205,7 @@ public class EntityLogMergeTest { var optionalForceRedactionEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(forceRedactionId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(forceRedactionId)) .findFirst(); assertTrue(optionalForceRedactionEntryLogEntry.isPresent()); var forceRedactionEntryLogEntry = optionalForceRedactionEntryLogEntry.get(); @@ -220,7 +220,7 @@ public class EntityLogMergeTest { var optionalRectangleEntryLogEntry = response.getEntityLogEntry() .stream() - .filter(entityLogEntry1 -> entityLogEntry1.getEntryId().equals(rectangleToAddId)) + .filter(entityLogEntry1 -> entityLogEntry1.getId().equals(rectangleToAddId)) .findFirst(); assertTrue(optionalRectangleEntryLogEntry.isPresent()); var rectangleEntryLogEntry = optionalRectangleEntryLogEntry.get(); @@ -236,24 +236,22 @@ public class EntityLogMergeTest { } - private EntityLog provideEntityLog(String dossierId, String fileId, String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { + private EntityLog provideEntityLog(String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { List positions = new ArrayList<>(); positions.add(new Position(1, 1, 1, 1, 1)); - return new EntityLog(dossierId, - fileId, + return new EntityLog(1, 1, - 1, - Lists.newArrayList(EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) - .entryId(entryToRemoveId) + Lists.newArrayList(EntityLogEntry.builder() + .id(entryToRemoveId) .type("manual") .value("Luke Skywalker") .entryType(EntryType.ENTITY) .state(EntryState.APPLIED) .dictionaryEntry(true) .build(), - EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) - .entryId(entryToResizeId) + EntityLogEntry.builder() + .id(entryToResizeId) .type("manual") .value("Darth Vader") .entryType(EntryType.ENTITY) @@ -261,8 +259,8 @@ public class EntityLogMergeTest { .dictionaryEntry(true) .positions(positions) .build(), - EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) - .entryId(entryLegalBasisId) + EntityLogEntry.builder() + .id(entryLegalBasisId) .type("manual") .value("Darth Luke") .entryType(EntryType.ENTITY) @@ -270,8 +268,8 @@ public class EntityLogMergeTest { .dictionaryEntry(true) .positions(positions) .build(), - EntityLogEntry.builder().entityLogId(EntityLog.getId(dossierId, fileId)) - .entryId(forceRedactionId) + EntityLogEntry.builder() + .id(forceRedactionId) .type("manual") .value("Darth Luke") .entryType(EntryType.ENTITY) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index 3193deebd..fe831f9d0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -369,13 +369,10 @@ public class FileTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "manual"); var annotationId = "imagine_this_makes_sense"; - EntityLog entityLog = new EntityLog(dossierId, - fileId, - 1, + EntityLog entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId(annotationId) + .id(annotationId) .type(type.getType()) .value("value entry") .state(EntryState.APPLIED) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index af1866789..7672880cc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -45,7 +45,10 @@ 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.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.EntryType; +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.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.ManualRedactionEntry; 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; @@ -121,13 +124,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -318,13 +318,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { Dictionary dossierDictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), dossier.getId()); assertThat(dossierDictionary.getEntries()).containsExactlyInAnyOrder("Luke Skywalker"); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -381,13 +378,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { // CreateTypeValue dossierDictionaryType = MagicConverter.convert(type, CreateTypeValue.class); // dictionaryClient.addType(dossierDictionaryType, dossier.getId()); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -439,13 +433,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { // dictionaryClient.addType(dossierDictionaryType, dossier.getId()); dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type("test") .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -529,13 +520,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); var loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); - var entityLog1 = new EntityLog(dossier1.getId(), - file1.getFileId(), - 1, + var entityLog1 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(0).getAnnotationId()) + .id(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier") .dossierDictionaryEntry(true) @@ -543,8 +531,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -560,13 +547,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(dossier2.getId(), - file2.getFileId(), - 1, + var entityLog2 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -701,13 +685,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); var loadedRedactionsFile1 = manualRedactionClient.getManualRedactions(file1.getDossierId(), file1.getFileId(), false, true); - var entityLog1 = new EntityLog(dossier1.getId(), - file1.getFileId(), - 1, + var entityLog1 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(0).getAnnotationId()) + .id(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier yayy") .dossierDictionaryEntry(true) @@ -715,8 +696,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -732,13 +712,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), any(), anyBoolean())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(dossier2.getId(), - file2.getFileId(), - 1, + var entityLog2 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -877,13 +854,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); - var entityLog1 = new EntityLog(dossier1.getId(), - file1.getFileId(), - 1, + var entityLog1 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(0).getAnnotationId()) + .id(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier") .dossierDictionaryEntry(true) @@ -891,8 +865,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -908,13 +881,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(dossier2.getId(), - file2.getFileId(), - 1, + var entityLog2 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template") .dictionaryEntry(true) @@ -1050,13 +1020,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var addRedactions = manualRedactionClient.addRedactionBulk(dossier1.getId(), file1.getId(), Set.of(redactionDos, redactionDosTempDict)); - var entityLog1 = new EntityLog(dossier1.getId(), - file1.getFileId(), - 1, + var entityLog1 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(0).getAnnotationId()) + .id(addRedactions.get(0).getAnnotationId()) .type(typeDosDict.getType()) .value("test redaction in dossier yayy") .dossierDictionaryEntry(true) @@ -1064,8 +1031,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier1.getId(), file1.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -1081,13 +1047,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var redactionRequest1 = RedactionRequest.builder().dossierId(file1.getDossierId()).fileId(file1.getFileId()).dossierTemplateId(file1.getDossierTemplateId()).build(); when(entityLogService.getEntityLog(file1.getDossierId(), file1.getFileId())).thenReturn(entityLog1); - var entityLog2 = new EntityLog(dossier2.getId(), - file2.getFileId(), - 1, + var entityLog2 = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier2.getId(), file2.getFileId())) - .entryId(addRedactions.get(1).getAnnotationId()) + .id(addRedactions.get(1).getAnnotationId()) .type(typeDosTempDict.getType()) .value("test redaction in dossier template yayy") .dictionaryEntry(true) @@ -1208,13 +1171,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(dossierDictionary2.getEntries()).isEmpty(); var annotationId = "AnnotationId"; - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId(annotationId) + .id(annotationId) .type(type.getType()) .value(lukeSkywalker) .dictionaryEntry(true) @@ -1295,13 +1255,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(dossierDictionary2.getEntries()).isEmpty(); var annotationId = "AnnotationId"; - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId(annotationId) + .id(annotationId) .type(type.getType()) .value(lukeSkywalker) .dictionaryEntry(true) @@ -1469,13 +1426,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Anakin"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type(type.getType()) .value("Anakin") .entryType(EntryType.ENTITY) @@ -1483,8 +1437,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId2") + .id("AnnotationId2") .type(type.getType()) .value("Anakin2") .entryType(EntryType.ENTITY) @@ -1672,13 +1625,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Darth Vader"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("dv") + .id("dv") .type(type.getType()) .value("Darth Vader") .entryType(EntryType.ENTITY) @@ -1686,8 +1636,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("dv2") + .id("dv2") .type(type.getType()) .value("Vader Darth") .entryType(EntryType.ENTITY) @@ -1782,13 +1731,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -1796,8 +1742,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId2") + .id("AnnotationId2") .type(type.getType()) .value("Skywalker Luke") .entryType(EntryType.ENTITY) @@ -1896,13 +1841,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { dictionaryClient.addEntry(type.getType(), type.getDossierTemplateId(), List.of("Luke Skywalker"), false, dossier.getId(), DictionaryEntryType.ENTRY); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId") + .id("AnnotationId") .type(type.getType()) .value("Luke Skywalker") .entryType(EntryType.ENTITY) @@ -1910,8 +1852,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dictionaryEntry(false) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("AnnotationId2") + .id("AnnotationId2") .type(type.getType()) .value("Skywalker Luke") .entryType(EntryType.ENTITY) @@ -1976,13 +1917,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var type = typeProvider.testAndProvideType(dossierTemplate, null, "type", false); - var entityLog = new EntityLog(dossier.getId(), - file.getFileId(), - 1, + var entityLog = new EntityLog(1, 1, List.of(EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("annotationId") + .id("annotationId") .type(type.getType()) .value("lukeSkywalker") .dictionaryEntry(true) @@ -1990,8 +1928,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("annotationId2") + .id("annotationId2") .type(type.getType()) .value("Johannesbrotkernmehl") .dictionaryEntry(true) @@ -1999,8 +1936,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .state(EntryState.APPLIED) .build(), EntityLogEntry.builder() - .entityLogId(EntityLog.getId(dossier.getId(), file.getFileId())) - .entryId("annotationId3") + .id("annotationId3") .type(type.getType()) .value("Baustelle") .dictionaryEntry(true) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 5014aca79..6a2c43035 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -299,10 +299,8 @@ public abstract class AbstractPersistenceServerServiceTest { // doNothing().when(pdfTronRedactionClient).testDigitalCurrentSignature(Mockito.any()); when(amqpAdmin.getQueueInfo(Mockito.any())).thenReturn(null); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(new EntityLog("", "", 1, 1, Lists.newArrayList(), null, 0, 0, 0, 0)); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(new EntityLog("", - "", - 1, + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any())).thenReturn(new EntityLog(1, 1, Lists.newArrayList(), null, 0, 0, 0, 0)); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(new EntityLog(1, 1, Lists.newArrayList(), null, 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/CascadeSave.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/CascadeSave.java deleted file mode 100644 index 05888eda4..000000000 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/CascadeSave.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface CascadeSave { - // -} 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/EntityLog.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/EntityLog.java index 9c23a9551..b1de32916 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/EntityLog.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/EntityLog.java @@ -3,10 +3,6 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislo import java.util.ArrayList; import java.util.List; -import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.mapping.DBRef; -import org.springframework.data.mongodb.core.mapping.Document; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,15 +10,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -@Document(collection = "entity-logs") public class EntityLog { - @Id - private String id; - - private String dossierId; - - private String fileId; /** * Version 0 Redaction Logs have manual redactions merged inside them * Version 1 Redaction Logs only contain system ( rule/dictionary ) redactions. Manual Redactions are merged in at runtime. @@ -34,8 +23,6 @@ public class EntityLog { */ private int analysisNumber; - @DBRef - @CascadeSave private List entityLogEntry = new ArrayList<>(); private List legalBasis = new ArrayList<>(); @@ -44,33 +31,4 @@ public class EntityLog { private long rulesVersion = -1; private long legalBasisVersion = -1; - - public EntityLog(String dossierId, - String fileId, - long analysisVersion, - int analysisNumber, - List entityLogEntry, - List legalBasis, - long dictionaryVersion, - long dossierDictionaryVersion, - long rulesVersion, - long legalBasisVersion) { - - this.id = getId(dossierId, fileId); - this.dossierId = dossierId; - this.fileId = fileId; - this.analysisVersion = analysisVersion; - this.analysisNumber = analysisNumber; - this.entityLogEntry = entityLogEntry; - this.legalBasis = legalBasis; - this.dictionaryVersion = dictionaryVersion; - this.dossierDictionaryVersion = dossierDictionaryVersion; - this.rulesVersion = rulesVersion; - this.legalBasisVersion = legalBasisVersion; - } - - public static String getId(String dossierId, String fileId) { - return dossierId + "/" + fileId; - } - } 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/EntityLogEntry.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/EntityLogEntry.java index 1a222de20..362ead2dc 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/EntityLogEntry.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/EntityLogEntry.java @@ -5,8 +5,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.springframework.data.mongodb.core.mapping.Document; - import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -21,11 +19,9 @@ import lombok.experimental.FieldDefaults; @AllArgsConstructor @EqualsAndHashCode @FieldDefaults(level = AccessLevel.PRIVATE) -@Document(collection = "entity-log-entries") public class EntityLogEntry { - String entryId; - String entityLogId; + String id; String type; EntryType entryType; EntryState state; From af791f13eb31a2102ee3e3f0215b29e88fe72775 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 18 Mar 2024 15:05:41 +0100 Subject: [PATCH 13/32] RED-8702: Explore document databases to store entityLog * added mongodb documents, repositories and EntityLogMongoService * refactored places where entity logs were stored and loaded to use new logic --- .../persistence/EntityLogMongoService.java | 238 ++++++++++++++++++ .../EntityLogDocumentRepository.java | 15 ++ .../EntityLogEntryDocumentRepository.java | 23 ++ .../build.gradle.kts | 1 - 4 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java new file mode 100644 index 000000000..f398ddf69 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java @@ -0,0 +1,238 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; +import com.iqser.red.service.persistence.management.v1.processor.exception.EntityLogDocumentNotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntityLogEntryDocumentRepository; +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; + +@Service +public class EntityLogMongoService { + + private final EntityLogDocumentRepository entityLogDocumentRepository; + private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + + + public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository) { + + this.entityLogDocumentRepository = entityLogDocumentRepository; + this.entityLogEntryDocumentRepository = entityLogEntryDocumentRepository; + } + + + public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + EntityLogDocument entityLogDocument = entityLogDocumentRepository.insert(new EntityLogDocument(dossierId, fileId, entityLog)); + + entityLogEntryDocumentRepository.insert(entityLog.getEntityLogEntry() + .stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogDocument.getId(), entityLogEntry)) + .toList()); + } + + + // this does everything : insert when not found and update if found + // todo: remove and replace when services use insert,update,delete correctly + public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { + + Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)); + if (optionalEntityLogDocument.isEmpty()) { + // throw new EntityLogDocumentNotFoundException(String.format("Entity log for dossier %s and file %s not found.", dossierId, fileId)); + insertEntityLog(dossierId, fileId, entityLog); + return; + } + + EntityLogDocument oldEntityLogDocument = optionalEntityLogDocument.get(); + List oldEntityLogEntryDocuments = oldEntityLogDocument.getEntityLogEntryDocument(); + + EntityLogDocument newEntityLogDocument = new EntityLogDocument(dossierId, fileId, entityLog); + List newEntityLogEntryDocuments = newEntityLogDocument.getEntityLogEntryDocument(); + + List toUpdate = new ArrayList<>(oldEntityLogEntryDocuments); + toUpdate.retainAll(newEntityLogEntryDocuments); + + List toRemove = new ArrayList<>(oldEntityLogEntryDocuments); + toRemove.removeAll(toUpdate); + + List toInsert = new ArrayList<>(newEntityLogEntryDocuments); + toInsert.removeAll(toUpdate); + + entityLogEntryDocumentRepository.saveAll(toUpdate); + entityLogEntryDocumentRepository.deleteAll(toRemove); + entityLogEntryDocumentRepository.insert(toInsert); + + entityLogDocumentRepository.save(newEntityLogDocument); + } + + + public void deleteEntityLog(String dossierId, String fileId) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + entityLogDocumentRepository.deleteById(entityLogId); + + entityLogEntryDocumentRepository.deleteByEntityLogId(entityLogId); + } + + + public void insertEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocument().addAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.insert(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + public void updateEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + entityLogEntryDocumentRepository.saveAll(entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList()); + } + + public void deleteEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocument().removeAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.deleteAll(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + private EntityLogDocument getEntityLogDocument(String entityLogId) { + + Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(entityLogId); + + if (optionalEntityLogDocument.isEmpty()) { + throw new EntityLogDocumentNotFoundException(String.format("Entity log not found for %s", entityLogId)); + } + + return optionalEntityLogDocument.get(); + } + + + public Optional findEntityLogByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)) + .map(EntityLogMongoService::fromDocument); + } + + + public boolean entityLogDocumentExists(String dossierId, String fileId) { + + return entityLogDocumentRepository.existsById(EntityLogDocument.getDocumentId(dossierId, fileId)); + } + + + public Optional findLatestAnalysisNumber(String dossierId, String fileId) { + + return entityLogDocumentRepository.findAnalysisNumberById(EntityLogDocument.getDocumentId(dossierId, fileId)) + .map(EntityLogDocument::getAnalysisNumber); + } + + + public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(EntityLogDocument.getDocumentId(dossierId, fileId)) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(EntityLogDocument.getDocumentId(dossierId, fileId), analysisNumber) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + public List findAllEntriesByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogId(EntityLogDocument.getDocumentId(dossierId, fileId)) + .stream() + .map(EntityLogMongoService::fromDocument) + .toList(); + } + + + private static EntityLog fromDocument(EntityLogDocument entityLogDocument) { + + EntityLog entityLog = new EntityLog(); + entityLog.setAnalysisVersion(entityLogDocument.getAnalysisVersion()); + entityLog.setAnalysisNumber(entityLogDocument.getAnalysisNumber()); + entityLog.setEntityLogEntry(entityLogDocument.getEntityLogEntryDocument() + .stream() + .map(EntityLogMongoService::fromDocument) + .collect(Collectors.toList())); + entityLog.setLegalBasis(entityLogDocument.getLegalBasis()); + entityLog.setDictionaryVersion(entityLogDocument.getDictionaryVersion()); + entityLog.setDossierDictionaryVersion(entityLogDocument.getDossierDictionaryVersion()); + entityLog.setRulesVersion(entityLogDocument.getRulesVersion()); + entityLog.setLegalBasisVersion(entityLogDocument.getLegalBasisVersion()); + return entityLog; + } + + + private static EntityLogEntry fromDocument(EntityLogEntryDocument entityLogEntryDocument) { + + EntityLogEntry entityLogEntry = new EntityLogEntry(); + entityLogEntry.setId(entityLogEntryDocument.getEntryId()); + entityLogEntry.setState(entityLogEntryDocument.getState()); + entityLogEntry.setValue(entityLogEntryDocument.getValue()); + entityLogEntry.setReason(entityLogEntryDocument.getReason()); + entityLogEntry.setMatchedRule(entityLogEntryDocument.getMatchedRule()); + entityLogEntry.setLegalBasis(entityLogEntryDocument.getLegalBasis()); + entityLogEntry.setContainingNodeId(new ArrayList<>(entityLogEntryDocument.getContainingNodeId())); + entityLogEntry.setClosestHeadline(entityLogEntryDocument.getClosestHeadline()); + entityLogEntry.setSection(entityLogEntryDocument.getSection()); + entityLogEntry.setPositions(new ArrayList<>(entityLogEntryDocument.getPositions())); + entityLogEntry.setTextBefore(entityLogEntryDocument.getTextBefore()); + entityLogEntry.setTextAfter(entityLogEntryDocument.getTextAfter()); + entityLogEntry.setStartOffset(entityLogEntryDocument.getStartOffset()); + entityLogEntry.setEndOffset(entityLogEntryDocument.getEndOffset()); + entityLogEntry.setImageHasTransparency(entityLogEntryDocument.isImageHasTransparency()); + entityLogEntry.setDictionaryEntry(entityLogEntryDocument.isDictionaryEntry()); + entityLogEntry.setDossierDictionaryEntry(entityLogEntryDocument.isDossierDictionaryEntry()); + entityLogEntry.setExcluded(entityLogEntryDocument.isExcluded()); + entityLogEntry.setChanges(new ArrayList<>(entityLogEntryDocument.getChanges())); + entityLogEntry.setManualChanges(new ArrayList<>(entityLogEntryDocument.getManualChanges())); + entityLogEntry.setEngines(new HashSet<>(entityLogEntryDocument.getEngines())); + entityLogEntry.setReference(new HashSet<>(entityLogEntryDocument.getReference())); + entityLogEntry.setImportedRedactionIntersections(new HashSet<>(entityLogEntryDocument.getImportedRedactionIntersections())); + entityLogEntry.setNumberOfComments(entityLogEntryDocument.getNumberOfComments()); + return entityLogEntry; + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java new file mode 100644 index 000000000..81249cfcd --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java @@ -0,0 +1,15 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; + +import java.util.Optional; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.data.repository.query.Param; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; + +public interface EntityLogDocumentRepository extends MongoRepository { + + @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") + Optional findAnalysisNumberById(@Param("_id") String id); +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java new file mode 100644 index 000000000..8e1d82a06 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java @@ -0,0 +1,23 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; + +import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; + +public interface EntityLogEntryDocumentRepository extends MongoRepository { + + @Query("{ 'entityLogId' : ?0, 'manualChanges' : { $exists: true, $not: { $size: 0 } } }") + List findByEntityLogIdAndManualChangesNotEmpty(String entityLogId); + + @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") + List findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); + + @Query("{ 'entityLogId' : ?0}") + List findByEntityLogId(String entityLogId); + + @Query(value = "{ 'entityLogId' : ?0}", delete = true) + void deleteByEntityLogId(String entityLogId); +} diff --git a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts index 8e4c8efce..b2dfa2a93 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-api-v1/build.gradle.kts @@ -11,7 +11,6 @@ dependencies { api("org.springframework.boot:spring-boot-starter-validation:3.1.3") api("com.iqser.red.commons:jackson-commons:2.1.0") api("com.iqser.red.commons:dictionary-merge-commons:1.3.0") - implementation("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") testImplementation("com.iqser.red.commons:test-commons:2.1.0") testImplementation("org.springframework.boot:spring-boot-starter-test:3.0.4") compileOnly("org.springdoc:springdoc-openapi-ui:1.7.0") From 2b4ce6b448c31b1d991ee577196978a5929fa719 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 11:26:52 +0100 Subject: [PATCH 14/32] RED-8702: Explore document databases to store entityLog --- .../persistence/EntityLogMongoService.java | 238 ------------------ .../EntityLogDocumentRepository.java | 2 + 2 files changed, 2 insertions(+), 238 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java deleted file mode 100644 index f398ddf69..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntityLogMongoService.java +++ /dev/null @@ -1,238 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; - -import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; -import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; -import com.iqser.red.service.persistence.management.v1.processor.exception.EntityLogDocumentNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntityLogDocumentRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntityLogEntryDocumentRepository; -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; - -@Service -public class EntityLogMongoService { - - private final EntityLogDocumentRepository entityLogDocumentRepository; - private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; - - - public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository) { - - this.entityLogDocumentRepository = entityLogDocumentRepository; - this.entityLogEntryDocumentRepository = entityLogEntryDocumentRepository; - } - - - public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) { - - EntityLogDocument entityLogDocument = entityLogDocumentRepository.insert(new EntityLogDocument(dossierId, fileId, entityLog)); - - entityLogEntryDocumentRepository.insert(entityLog.getEntityLogEntry() - .stream() - .map(entityLogEntry -> new EntityLogEntryDocument(entityLogDocument.getId(), entityLogEntry)) - .toList()); - } - - - // this does everything : insert when not found and update if found - // todo: remove and replace when services use insert,update,delete correctly - public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { - - Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)); - if (optionalEntityLogDocument.isEmpty()) { - // throw new EntityLogDocumentNotFoundException(String.format("Entity log for dossier %s and file %s not found.", dossierId, fileId)); - insertEntityLog(dossierId, fileId, entityLog); - return; - } - - EntityLogDocument oldEntityLogDocument = optionalEntityLogDocument.get(); - List oldEntityLogEntryDocuments = oldEntityLogDocument.getEntityLogEntryDocument(); - - EntityLogDocument newEntityLogDocument = new EntityLogDocument(dossierId, fileId, entityLog); - List newEntityLogEntryDocuments = newEntityLogDocument.getEntityLogEntryDocument(); - - List toUpdate = new ArrayList<>(oldEntityLogEntryDocuments); - toUpdate.retainAll(newEntityLogEntryDocuments); - - List toRemove = new ArrayList<>(oldEntityLogEntryDocuments); - toRemove.removeAll(toUpdate); - - List toInsert = new ArrayList<>(newEntityLogEntryDocuments); - toInsert.removeAll(toUpdate); - - entityLogEntryDocumentRepository.saveAll(toUpdate); - entityLogEntryDocumentRepository.deleteAll(toRemove); - entityLogEntryDocumentRepository.insert(toInsert); - - entityLogDocumentRepository.save(newEntityLogDocument); - } - - - public void deleteEntityLog(String dossierId, String fileId) { - - String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); - - entityLogDocumentRepository.deleteById(entityLogId); - - entityLogEntryDocumentRepository.deleteByEntityLogId(entityLogId); - } - - - public void insertEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { - - String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); - - EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); - - List entityLogEntryDocuments = entityLogEntries.stream() - .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) - .toList(); - - entityLogDocument.getEntityLogEntryDocument().addAll(entityLogEntryDocuments); - - entityLogEntryDocumentRepository.insert(entityLogEntryDocuments); - entityLogDocumentRepository.save(entityLogDocument); - } - - - public void updateEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { - - String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); - - entityLogEntryDocumentRepository.saveAll(entityLogEntries.stream() - .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) - .toList()); - } - - public void deleteEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { - - String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); - - EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); - - List entityLogEntryDocuments = entityLogEntries.stream() - .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) - .toList(); - - entityLogDocument.getEntityLogEntryDocument().removeAll(entityLogEntryDocuments); - - entityLogEntryDocumentRepository.deleteAll(entityLogEntryDocuments); - entityLogDocumentRepository.save(entityLogDocument); - } - - - private EntityLogDocument getEntityLogDocument(String entityLogId) { - - Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(entityLogId); - - if (optionalEntityLogDocument.isEmpty()) { - throw new EntityLogDocumentNotFoundException(String.format("Entity log not found for %s", entityLogId)); - } - - return optionalEntityLogDocument.get(); - } - - - public Optional findEntityLogByDossierIdAndFileId(String dossierId, String fileId) { - - return entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)) - .map(EntityLogMongoService::fromDocument); - } - - - public boolean entityLogDocumentExists(String dossierId, String fileId) { - - return entityLogDocumentRepository.existsById(EntityLogDocument.getDocumentId(dossierId, fileId)); - } - - - public Optional findLatestAnalysisNumber(String dossierId, String fileId) { - - return entityLogDocumentRepository.findAnalysisNumberById(EntityLogDocument.getDocumentId(dossierId, fileId)) - .map(EntityLogDocument::getAnalysisNumber); - } - - - public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { - - return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(EntityLogDocument.getDocumentId(dossierId, fileId)) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - - - public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { - - return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(EntityLogDocument.getDocumentId(dossierId, fileId), analysisNumber) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - - - public List findAllEntriesByDossierIdAndFileId(String dossierId, String fileId) { - - return entityLogEntryDocumentRepository.findByEntityLogId(EntityLogDocument.getDocumentId(dossierId, fileId)) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - - - private static EntityLog fromDocument(EntityLogDocument entityLogDocument) { - - EntityLog entityLog = new EntityLog(); - entityLog.setAnalysisVersion(entityLogDocument.getAnalysisVersion()); - entityLog.setAnalysisNumber(entityLogDocument.getAnalysisNumber()); - entityLog.setEntityLogEntry(entityLogDocument.getEntityLogEntryDocument() - .stream() - .map(EntityLogMongoService::fromDocument) - .collect(Collectors.toList())); - entityLog.setLegalBasis(entityLogDocument.getLegalBasis()); - entityLog.setDictionaryVersion(entityLogDocument.getDictionaryVersion()); - entityLog.setDossierDictionaryVersion(entityLogDocument.getDossierDictionaryVersion()); - entityLog.setRulesVersion(entityLogDocument.getRulesVersion()); - entityLog.setLegalBasisVersion(entityLogDocument.getLegalBasisVersion()); - return entityLog; - } - - - private static EntityLogEntry fromDocument(EntityLogEntryDocument entityLogEntryDocument) { - - EntityLogEntry entityLogEntry = new EntityLogEntry(); - entityLogEntry.setId(entityLogEntryDocument.getEntryId()); - entityLogEntry.setState(entityLogEntryDocument.getState()); - entityLogEntry.setValue(entityLogEntryDocument.getValue()); - entityLogEntry.setReason(entityLogEntryDocument.getReason()); - entityLogEntry.setMatchedRule(entityLogEntryDocument.getMatchedRule()); - entityLogEntry.setLegalBasis(entityLogEntryDocument.getLegalBasis()); - entityLogEntry.setContainingNodeId(new ArrayList<>(entityLogEntryDocument.getContainingNodeId())); - entityLogEntry.setClosestHeadline(entityLogEntryDocument.getClosestHeadline()); - entityLogEntry.setSection(entityLogEntryDocument.getSection()); - entityLogEntry.setPositions(new ArrayList<>(entityLogEntryDocument.getPositions())); - entityLogEntry.setTextBefore(entityLogEntryDocument.getTextBefore()); - entityLogEntry.setTextAfter(entityLogEntryDocument.getTextAfter()); - entityLogEntry.setStartOffset(entityLogEntryDocument.getStartOffset()); - entityLogEntry.setEndOffset(entityLogEntryDocument.getEndOffset()); - entityLogEntry.setImageHasTransparency(entityLogEntryDocument.isImageHasTransparency()); - entityLogEntry.setDictionaryEntry(entityLogEntryDocument.isDictionaryEntry()); - entityLogEntry.setDossierDictionaryEntry(entityLogEntryDocument.isDossierDictionaryEntry()); - entityLogEntry.setExcluded(entityLogEntryDocument.isExcluded()); - entityLogEntry.setChanges(new ArrayList<>(entityLogEntryDocument.getChanges())); - entityLogEntry.setManualChanges(new ArrayList<>(entityLogEntryDocument.getManualChanges())); - entityLogEntry.setEngines(new HashSet<>(entityLogEntryDocument.getEngines())); - entityLogEntry.setReference(new HashSet<>(entityLogEntryDocument.getReference())); - entityLogEntry.setImportedRedactionIntersections(new HashSet<>(entityLogEntryDocument.getImportedRedactionIntersections())); - entityLogEntry.setNumberOfComments(entityLogEntryDocument.getNumberOfComments()); - return entityLogEntry; - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java index 81249cfcd..e9916d08f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java @@ -5,9 +5,11 @@ import java.util.Optional; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; +@Repository public interface EntityLogDocumentRepository extends MongoRepository { @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") From bf7f15e7444a368a0f29016397ee26ffa4756f7d Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 13:25:19 +0100 Subject: [PATCH 15/32] RED-8702: Explore document databases to store entityLog * first fix for failing tests --- .../EntityLogDocumentRepository.java | 17 -------------- .../EntityLogEntryDocumentRepository.java | 23 ------------------- .../build.gradle.kts | 3 +++ 3 files changed, 3 insertions(+), 40 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java deleted file mode 100644 index e9916d08f..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogDocumentRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; - -import java.util.Optional; - -import org.springframework.data.mongodb.repository.MongoRepository; -import org.springframework.data.mongodb.repository.Query; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; - -@Repository -public interface EntityLogDocumentRepository extends MongoRepository { - - @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") - Optional findAnalysisNumberById(@Param("_id") String id); -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java deleted file mode 100644 index 8e1d82a06..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntityLogEntryDocumentRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; - -import java.util.List; - -import org.springframework.data.mongodb.repository.MongoRepository; -import org.springframework.data.mongodb.repository.Query; - -import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; - -public interface EntityLogEntryDocumentRepository extends MongoRepository { - - @Query("{ 'entityLogId' : ?0, 'manualChanges' : { $exists: true, $not: { $size: 0 } } }") - List findByEntityLogIdAndManualChangesNotEmpty(String entityLogId); - - @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") - List findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); - - @Query("{ 'entityLogId' : ?0}") - List findByEntityLogId(String entityLogId); - - @Query(value = "{ 'entityLogId' : ?0}", delete = true) - void deleteByEntityLogId(String entityLogId); -} diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 56535f7ff..8d867fef9 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -17,7 +17,10 @@ configurations { } } +val springBootStarterVersion = "3.1.5" + dependencies { + api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api(project(":persistence-service-processor-v1")) api(project(":persistence-service-external-api-impl-v1")) api(project(":persistence-service-external-api-impl-v2")) From 1304fbbbe980b7274298ea378c75b7b3bb736f66 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 14:52:34 +0100 Subject: [PATCH 16/32] RED-8702: Explore document databases to store entityLog * fix for AbstractPersistenceServerServiceTest to include mongodb container --- .../persistence-service-server-v1/build.gradle.kts | 3 --- 1 file changed, 3 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 8d867fef9..56535f7ff 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -17,10 +17,7 @@ configurations { } } -val springBootStarterVersion = "3.1.5" - dependencies { - api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api(project(":persistence-service-processor-v1")) api(project(":persistence-service-external-api-impl-v1")) api(project(":persistence-service-external-api-impl-v2")) From 6d9fa8a8c0a9fae72eac34a4e4fc04843f5e76ee Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 17:15:41 +0100 Subject: [PATCH 17/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../management/v1/processor/migration/SaasMigrationService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java index bf2a23e31..890c3efba 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java @@ -1,6 +1,7 @@ package com.iqser.red.service.persistence.management.v1.processor.migration; import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.MIGRATION_QUEUE; +import static com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType.ENTITY_LOG; import static com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_QUEUE; import java.util.List; From cf98969d38fac611938f554e157799e0b5c6bab4 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 10:49:50 +0100 Subject: [PATCH 18/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../v1/processor/service/mongo/EntityLogMongoService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java index 87ebd379d..99ed39a40 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java @@ -58,8 +58,8 @@ public class EntityLogMongoService { EntityLogDocument newEntityLogDocument = new EntityLogDocument(dossierId, fileId, entityLog); List newEntityLogEntryDocuments = newEntityLogDocument.getEntityLogEntryDocument(); - List toUpdate = new ArrayList<>(oldEntityLogEntryDocuments); - toUpdate.retainAll(newEntityLogEntryDocuments); + List toUpdate = new ArrayList<>(newEntityLogEntryDocuments); + toUpdate.retainAll(oldEntityLogEntryDocuments); List toRemove = new ArrayList<>(oldEntityLogEntryDocuments); toRemove.removeAll(toUpdate); From d4c97cd9708eda02da1f656ad671ffa7fe2b4d21 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 11:23:47 +0100 Subject: [PATCH 19/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../processor/document/EntityLogDocument.java | 4 +-- .../document/EntityLogEntryDocument.java | 6 ++-- .../processor/utils/ObjectConverterUtils.java | 28 +++++++++++++++++++ 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ObjectConverterUtils.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java index 48ebf6651..6f9c9760c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java @@ -7,9 +7,9 @@ import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.Document; +import com.iqser.red.service.persistence.management.v1.processor.utils.ObjectConverterUtils; 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.EntityLogLegalBasis; -import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; @@ -51,7 +51,7 @@ public class EntityLogDocument { public EntityLogDocument(String dossierId, String fileId, EntityLog entityLog) { - MagicConverter.copyAllFields(entityLog, this); + ObjectConverterUtils.copyAllFields(entityLog, this); this.id = getDocumentId(dossierId, fileId); this.dossierId = dossierId; this.fileId = fileId; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java index aa20ebd04..877fc35a2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.management.v1.processor.document; +import static com.iqser.red.service.persistence.management.v1.processor.utils.ObjectConverterUtils.copyAllFields; + import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -8,7 +10,6 @@ import java.util.Set; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; -import com.fasterxml.jackson.databind.ObjectMapper; 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.Engine; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; @@ -16,7 +17,6 @@ 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.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.Position; -import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -83,7 +83,7 @@ public class EntityLogEntryDocument { public EntityLogEntryDocument(String entityLogId, EntityLogEntry entityLogEntry) { - MagicConverter.copyAllFields(entityLogEntry, this); + copyAllFields(entityLogEntry, this); this.id = entityLogId + "/" + entityLogEntry.getId(); this.entryId = entityLogEntry.getId(); this.entityLogId = entityLogId; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ObjectConverterUtils.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ObjectConverterUtils.java new file mode 100644 index 000000000..33d96e4e4 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ObjectConverterUtils.java @@ -0,0 +1,28 @@ +package com.iqser.red.service.persistence.management.v1.processor.utils; + +import java.lang.reflect.Field; + +public class ObjectConverterUtils { + + public static void copyAllFields(Object source, Object target) { + Class sourceClass = source.getClass(); + Class targetClass = target.getClass(); + Field[] sourceFields = sourceClass.getDeclaredFields(); + Field[] var5 = sourceFields; + int var6 = sourceFields.length; + + for(int var7 = 0; var7 < var6; ++var7) { + Field field = var5[var7]; + + try { + Field targetField = targetClass.getDeclaredField(field.getName()); + field.setAccessible(true); + targetField.setAccessible(true); + targetField.set(target, field.get(source)); + } catch (IllegalAccessException | NoSuchFieldException var10) { + } + } + + } + +} From 93708b4efc55cb20aaa3caac9ddfbb645ffb78be Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 11:42:56 +0100 Subject: [PATCH 20/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../processor/document/EntityLogDocument.java | 14 ++++++++-- .../document/EntityLogEntryDocument.java | 27 ++++++++++++++++-- .../service/mongo/EntityLogMongoService.java | 1 + .../processor/utils/ObjectConverterUtils.java | 28 ------------------- 4 files changed, 36 insertions(+), 34 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ObjectConverterUtils.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java index 6f9c9760c..4dc8a3fa1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java @@ -2,12 +2,12 @@ package com.iqser.red.service.persistence.management.v1.processor.document; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.Document; -import com.iqser.red.service.persistence.management.v1.processor.utils.ObjectConverterUtils; 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.EntityLogLegalBasis; @@ -51,13 +51,21 @@ public class EntityLogDocument { public EntityLogDocument(String dossierId, String fileId, EntityLog entityLog) { - ObjectConverterUtils.copyAllFields(entityLog, this); this.id = getDocumentId(dossierId, fileId); this.dossierId = dossierId; this.fileId = fileId; this.entityLogEntryDocument = new ArrayList<>(entityLog.getEntityLogEntry() .stream() - .map(entityLogEntry -> new EntityLogEntryDocument(this.id, entityLogEntry)).toList()); + .map(entityLogEntry -> new EntityLogEntryDocument(this.id, entityLogEntry)) + .toList()); + + this.setAnalysisVersion(entityLog.getAnalysisVersion()); + this.setAnalysisNumber(entityLog.getAnalysisNumber()); + this.setLegalBasis(entityLog.getLegalBasis()); + this.setDictionaryVersion(entityLog.getDictionaryVersion()); + this.setDossierDictionaryVersion(entityLog.getDossierDictionaryVersion()); + this.setRulesVersion(entityLog.getRulesVersion()); + this.setLegalBasisVersion(entityLog.getLegalBasisVersion()); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java index 877fc35a2..f488a682a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java @@ -1,7 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.document; -import static com.iqser.red.service.persistence.management.v1.processor.utils.ObjectConverterUtils.copyAllFields; - import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -83,11 +81,34 @@ public class EntityLogEntryDocument { public EntityLogEntryDocument(String entityLogId, EntityLogEntry entityLogEntry) { - copyAllFields(entityLogEntry, this); this.id = entityLogId + "/" + entityLogEntry.getId(); this.entryId = entityLogEntry.getId(); this.entityLogId = entityLogId; + this.setEntryType(entityLogEntry.getEntryType()); + this.setState(entityLogEntry.getState()); + this.setValue(entityLogEntry.getValue()); + this.setReason(entityLogEntry.getReason()); + this.setMatchedRule(entityLogEntry.getMatchedRule()); + this.setLegalBasis(entityLogEntry.getLegalBasis()); + this.setContainingNodeId(entityLogEntry.getContainingNodeId()); + this.setClosestHeadline(entityLogEntry.getClosestHeadline()); + this.setSection(entityLogEntry.getSection()); + this.setPositions(entityLogEntry.getPositions()); + this.setTextBefore(entityLogEntry.getTextBefore()); + this.setTextAfter(entityLogEntry.getTextAfter()); + this.setStartOffset(entityLogEntry.getStartOffset()); + this.setEndOffset(entityLogEntry.getEndOffset()); + this.setImageHasTransparency(entityLogEntry.isImageHasTransparency()); + this.setDictionaryEntry(entityLogEntry.isDictionaryEntry()); + this.setDossierDictionaryEntry(entityLogEntry.isDossierDictionaryEntry()); + this.setExcluded(entityLogEntry.isExcluded()); + this.setChanges(entityLogEntry.getChanges()); + this.setManualChanges(entityLogEntry.getManualChanges()); + this.setEngines(entityLogEntry.getEngines()); + this.setReference(entityLogEntry.getReference()); + this.setImportedRedactionIntersections(entityLogEntry.getImportedRedactionIntersections()); + this.setNumberOfComments(entityLogEntry.getNumberOfComments()); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java index 99ed39a40..c2a908938 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java @@ -209,6 +209,7 @@ public class EntityLogMongoService { EntityLogEntry entityLogEntry = new EntityLogEntry(); entityLogEntry.setId(entityLogEntryDocument.getEntryId()); + entityLogEntry.setEntryType(entityLogEntryDocument.getEntryType()); entityLogEntry.setState(entityLogEntryDocument.getState()); entityLogEntry.setValue(entityLogEntryDocument.getValue()); entityLogEntry.setReason(entityLogEntryDocument.getReason()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ObjectConverterUtils.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ObjectConverterUtils.java deleted file mode 100644 index 33d96e4e4..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ObjectConverterUtils.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.utils; - -import java.lang.reflect.Field; - -public class ObjectConverterUtils { - - public static void copyAllFields(Object source, Object target) { - Class sourceClass = source.getClass(); - Class targetClass = target.getClass(); - Field[] sourceFields = sourceClass.getDeclaredFields(); - Field[] var5 = sourceFields; - int var6 = sourceFields.length; - - for(int var7 = 0; var7 < var6; ++var7) { - Field field = var5[var7]; - - try { - Field targetField = targetClass.getDeclaredField(field.getName()); - field.setAccessible(true); - targetField.setAccessible(true); - targetField.set(target, field.get(source)); - } catch (IllegalAccessException | NoSuchFieldException var10) { - } - } - - } - -} From 6a1a7c96961c8bb4392615712145afc9e3c04973 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 11:47:51 +0100 Subject: [PATCH 21/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../management/v1/processor/document/EntityLogEntryDocument.java | 1 + .../v1/processor/service/mongo/EntityLogMongoService.java | 1 + 2 files changed, 2 insertions(+) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java index f488a682a..1c81bf15b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java @@ -85,6 +85,7 @@ public class EntityLogEntryDocument { this.entryId = entityLogEntry.getId(); this.entityLogId = entityLogId; + this.setType(entityLogEntry.getType()); this.setEntryType(entityLogEntry.getEntryType()); this.setState(entityLogEntry.getState()); this.setValue(entityLogEntry.getValue()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java index c2a908938..1217034c5 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java @@ -209,6 +209,7 @@ public class EntityLogMongoService { EntityLogEntry entityLogEntry = new EntityLogEntry(); entityLogEntry.setId(entityLogEntryDocument.getEntryId()); + entityLogEntry.setType(entityLogEntryDocument.getType()); entityLogEntry.setEntryType(entityLogEntryDocument.getEntryType()); entityLogEntry.setState(entityLogEntryDocument.getState()); entityLogEntry.setValue(entityLogEntryDocument.getValue()); From 67f7d8a7d047ce8bee2a2f564f604de4501770ac Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 12:05:34 +0100 Subject: [PATCH 22/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../server/Application.java | 2 +- .../server/SpringDocRedirectController.java | 2 +- .../client/ApplicationConfigClient.java | 2 +- .../integration/client/AuditClient.java | 2 +- .../client/CustomPermissionClient.java | 2 +- .../integration/client/DictionaryClient.java | 2 +- .../client/DigitalSignatureClient.java | 2 +- .../client/DossierAttributeClient.java | 2 +- .../client/DossierAttributeConfigClient.java | 2 +- .../integration/client/DossierClient.java | 2 +- .../client/DossierStatsClient.java | 2 +- .../client/DossierStatusClient.java | 2 +- .../client/DossierTemplateClient.java | 2 +- .../client/DossierTemplateStatsClient.java | 2 +- .../integration/client/DownloadClient.java | 2 +- .../integration/client/EntityLogClient.java | 2 +- .../client/FeignSupportConfig.java | 2 +- .../client/FileAttributeClient.java | 2 +- .../client/FileAttributeConfigClient.java | 2 +- .../server/integration/client/FileClient.java | 2 +- .../client/FileManagementClient.java | 2 +- .../client/FileProcessingClient.java | 2 +- .../client/IndexInformationClient.java | 2 +- .../client/InternalDictionaryClient.java | 2 +- .../integration/client/LegalBasisClient.java | 2 +- .../client/LicenseReportClient.java | 2 +- .../client/ManualRedactionClient.java | 2 +- .../client/NotificationClient.java | 2 +- .../client/NotificationPreferencesClient.java | 2 +- .../integration/client/ReanalysisClient.java | 2 +- .../client/RedactionLogClient.java | 2 +- .../client/ReportTemplateClient.java | 2 +- .../integration/client/RulesClient.java | 2 +- .../integration/client/UploadClient.java | 2 +- .../integration/client/VersionClient.java | 2 +- .../integration/client/ViewedPagesClient.java | 2 +- .../integration/client/WatermarkClient.java | 2 +- .../DossierTemplateTesterAndProvider.java | 10 +++--- .../service/DossierTesterAndProvider.java | 4 +-- .../service/FileTesterAndProvider.java | 6 ++-- .../service/ReportTemplateProvider.java | 4 +-- .../integration/service/TypeProvider.java | 4 +-- .../integration/service/UserProvider.java | 2 +- .../tests/ApplicationConfigTest.java | 6 ++-- .../server/integration/tests/AuditTest.java | 8 ++--- .../tests/CustomPermissionTest.java | 15 ++------ .../integration/tests/DictionaryTest.java | 14 ++++---- .../tests/DigitalSignatureTest.java | 7 ++-- .../tests/DossierAttributeTest.java | 10 +++--- .../integration/tests/DossierStatsTest.java | 16 ++++----- .../integration/tests/DossierStatusTest.java | 12 +++---- ...eCloneAndExportWithDuplicateRanksTest.java | 2 +- .../tests/DossierTemplateImportTest.java | 6 ++-- .../tests/DossierTemplateStatsTest.java | 30 ++++++++-------- .../tests/DossierTemplateTest.java | 28 +++++++-------- .../server/integration/tests/DossierTest.java | 20 +++++------ .../tests/DownloadPreparationTest.java | 18 +++++----- .../integration/tests/DownloadTest.java | 15 ++++---- .../integration/tests/EntityLogMergeTest.java | 2 +- .../integration/tests/FileAttributeTest.java | 18 +++++----- .../integration/tests/FileProcessingTest.java | 20 +++++------ .../server/integration/tests/FileTest.java | 34 +++++++++---------- .../tests/IndexInformationTest.java | 6 ++-- .../integration/tests/LegalBasisTest.java | 10 +++--- .../integration/tests/LicenseReportTest.java | 12 +++---- .../tests/ManualRedactionTest.java | 28 +++++++-------- .../NotificationPreferencesServiceTest.java | 6 ++-- .../tests/NotificationPreferencesTest.java | 6 ++-- .../integration/tests/NotificationTest.java | 12 +++---- .../integration/tests/ReanalysisTest.java | 12 +++---- .../tests/ReduceFileSizeMigrationTest.java | 4 +-- .../integration/tests/ReportTemplateTest.java | 10 +++--- .../server/integration/tests/RulesTest.java | 10 +++--- .../tests/StringCleaningUtilityTest.java | 2 +- .../server/integration/tests/TypeTest.java | 13 ++++--- .../integration/tests/ViewedPagesTest.java | 15 ++++---- .../integration/tests/WatermarkTest.java | 12 +++---- .../performance/EntityPerformanceTest.java | 12 +++---- .../performance/FilePerformanceTest.java | 10 +++--- .../performance/PerformanceTestService.java | 10 +++--- .../AbstractPersistenceServerServiceTest.java | 10 +++--- .../utils/FeignRequestInterceptor.java | 2 +- .../utils/KneconRedisTestContainer.java | 2 +- .../KneconSpringPostgreSQLTestContainer.java | 2 +- .../utils/MetricValidationUtils.java | 2 +- .../utils/MongoDBTestContainer.java | 2 +- .../utils/MultithreadedTestRunner.java | 2 +- .../integration/utils/RedisTestContainer.java | 2 +- .../utils/SpringPostgreSQLTestContainer.java | 2 +- .../integration/utils/TokenService.java | 2 +- .../utils/FileSystemBackArchiverTest.java | 2 +- .../server/utils/MetricsPrinterService.java | 2 +- 92 files changed, 295 insertions(+), 312 deletions(-) rename persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/{peristence/v1 => persistence}/server/Application.java (99%) rename persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/{peristence/v1 => persistence}/server/SpringDocRedirectController.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/ApplicationConfigClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/AuditClient.java (79%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/CustomPermissionClient.java (85%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DictionaryClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DigitalSignatureClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DossierAttributeClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DossierAttributeConfigClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DossierClient.java (79%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DossierStatsClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DossierStatusClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DossierTemplateClient.java (83%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DossierTemplateStatsClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/DownloadClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/EntityLogClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/FeignSupportConfig.java (89%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/FileAttributeClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/FileAttributeConfigClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/FileClient.java (79%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/FileManagementClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/FileProcessingClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/IndexInformationClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/InternalDictionaryClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/LegalBasisClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/LicenseReportClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/ManualRedactionClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/NotificationClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/NotificationPreferencesClient.java (83%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/ReanalysisClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/RedactionLogClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/ReportTemplateClient.java (83%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/RulesClient.java (79%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/UploadClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/VersionClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/ViewedPagesClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/client/WatermarkClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/service/DossierTemplateTesterAndProvider.java (87%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/service/DossierTesterAndProvider.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/service/FileTesterAndProvider.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/service/ReportTemplateProvider.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/service/TypeProvider.java (93%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/service/UserProvider.java (88%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/ApplicationConfigTest.java (89%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/AuditTest.java (88%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/CustomPermissionTest.java (76%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DictionaryTest.java (98%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DigitalSignatureTest.java (94%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DossierAttributeTest.java (97%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DossierStatsTest.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DossierStatusTest.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java (99%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DossierTemplateImportTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DossierTemplateStatsTest.java (92%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DossierTemplateTest.java (97%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DossierTest.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DownloadPreparationTest.java (93%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/DownloadTest.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/EntityLogMergeTest.java (99%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/FileAttributeTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/FileProcessingTest.java (92%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/FileTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/IndexInformationTest.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/LegalBasisTest.java (87%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/LicenseReportTest.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/ManualRedactionTest.java (98%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/NotificationPreferencesServiceTest.java (86%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/NotificationPreferencesTest.java (93%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/NotificationTest.java (92%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/ReanalysisTest.java (87%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/ReduceFileSizeMigrationTest.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/ReportTemplateTest.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/RulesTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/StringCleaningUtilityTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/TypeTest.java (88%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/ViewedPagesTest.java (73%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/WatermarkTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/performance/EntityPerformanceTest.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/performance/FilePerformanceTest.java (83%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/tests/performance/PerformanceTestService.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/AbstractPersistenceServerServiceTest.java (98%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/FeignRequestInterceptor.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/KneconRedisTestContainer.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/KneconSpringPostgreSQLTestContainer.java (97%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/MetricValidationUtils.java (94%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/MongoDBTestContainer.java (93%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/MultithreadedTestRunner.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/RedisTestContainer.java (89%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/SpringPostgreSQLTestContainer.java (89%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/integration/utils/TokenService.java (86%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/utils/FileSystemBackArchiverTest.java (97%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{peristence/v1 => persistence}/server/utils/MetricsPrinterService.java (98%) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java similarity index 99% rename from persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java rename to persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java index a90522e03..c448ad01e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server; +package com.iqser.red.service.persistence.server; import java.util.Map; import java.util.Optional; diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/SpringDocRedirectController.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java rename to persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/SpringDocRedirectController.java index 132397d52..09cfbd64e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/SpringDocRedirectController.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server; +package com.iqser.red.service.persistence.server; import com.knecon.fforesight.swaggercommons.SpringDocProperties; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ApplicationConfigClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ApplicationConfigClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ApplicationConfigClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ApplicationConfigClient.java index a2e26efd8..144d9463a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ApplicationConfigClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ApplicationConfigClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/AuditClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/AuditClient.java similarity index 79% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/AuditClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/AuditClient.java index 040693e4a..ce3f89bca 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/AuditClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/AuditClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/CustomPermissionClient.java similarity index 85% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/CustomPermissionClient.java index e94a11325..d1a5446dc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/CustomPermissionClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DictionaryClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DictionaryClient.java index 5a9935a25..c39d3d32f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DictionaryClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DigitalSignatureClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DigitalSignatureClient.java index 47f203f62..4dd9ec7f8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DigitalSignatureClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeClient.java index 035e44773..491a506a9 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeConfigClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeConfigClient.java index 8cccd891e..16ef26889 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeConfigClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierClient.java similarity index 79% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierClient.java index 20126e3a5..19bc26fee 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatsClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatsClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatsClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatsClient.java index eaac5c99d..31cfd0e93 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatsClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatsClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatusClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatusClient.java index 0fb5533ef..9f0d80b35 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatusClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateClient.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateClient.java index b9d794dcf..6d162fdbe 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateStatsClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateStatsClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateStatsClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateStatsClient.java index fdd3a3151..81541b09c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateStatsClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateStatsClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DownloadClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DownloadClient.java index b9244a32f..5bbe74c54 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DownloadClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/EntityLogClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/EntityLogClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/EntityLogClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/EntityLogClient.java index daa7d305d..9a3a6fd48 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/EntityLogClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/EntityLogClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FeignSupportConfig.java similarity index 89% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FeignSupportConfig.java index e158bf918..c1fabd824 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FeignSupportConfig.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import java.util.Collections; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeClient.java index a93e88e8e..cfd534271 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeConfigClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeConfigClient.java index 9599c078c..49554dd1c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeConfigClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileClient.java similarity index 79% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileClient.java index 603071855..11a10ddce 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileManagementClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileManagementClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileManagementClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileManagementClient.java index 9bf188cb2..d55e0607f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileManagementClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileManagementClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileProcessingClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileProcessingClient.java index 275523808..03a5cba5e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileProcessingClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/IndexInformationClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/IndexInformationClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/IndexInformationClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/IndexInformationClient.java index fece04d58..16f7df303 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/IndexInformationClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/IndexInformationClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/InternalDictionaryClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/InternalDictionaryClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/InternalDictionaryClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/InternalDictionaryClient.java index 5f362f75d..e2c29aa24 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/InternalDictionaryClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/InternalDictionaryClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LegalBasisClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LegalBasisClient.java index cb0bfedd3..97e5804af 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LegalBasisClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LicenseReportClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LicenseReportClient.java index cfba25cd1..47c8585f7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LicenseReportClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ManualRedactionClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ManualRedactionClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ManualRedactionClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ManualRedactionClient.java index a0ec87514..9cc71e400 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ManualRedactionClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ManualRedactionClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationClient.java index efa7f4090..99441bbe8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationPreferencesClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationPreferencesClient.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationPreferencesClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationPreferencesClient.java index fb39bbacb..7e6b5d6fa 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationPreferencesClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationPreferencesClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReanalysisClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReanalysisClient.java index a2b406e06..083be0340 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReanalysisClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RedactionLogClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RedactionLogClient.java index 3f3abbf38..4c6c3628d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RedactionLogClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReportTemplateClient.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReportTemplateClient.java index 6e6de9328..dd853983a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReportTemplateClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RulesClient.java similarity index 79% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RulesClient.java index ca7db745e..5a0042e7e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RulesClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/UploadClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/UploadClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/UploadClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/UploadClient.java index 7b467cd7c..ad4c1ebbc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/UploadClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/UploadClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/VersionClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/VersionClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/VersionClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/VersionClient.java index 908b76d05..b4adea390 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/VersionClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/VersionClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ViewedPagesClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ViewedPagesClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ViewedPagesClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ViewedPagesClient.java index 3921b5bb1..9c95f944e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ViewedPagesClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ViewedPagesClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/WatermarkClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/WatermarkClient.java index 00ab23125..35bd7d485 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/WatermarkClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.client; +package com.iqser.red.service.persistence.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTemplateTesterAndProvider.java similarity index 87% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTemplateTesterAndProvider.java index 91e5e20b4..ced233b3b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTemplateTesterAndProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.service; +package com.iqser.red.service.persistence.server.integration.service; import static org.assertj.core.api.Assertions.assertThat; @@ -10,10 +10,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.common.collect.Sets; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.persistence.server.integration.client.LegalBasisClient; +import com.iqser.red.service.persistence.server.integration.client.RulesClient; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTesterAndProvider.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTesterAndProvider.java index a0ef0809a..3abf51e14 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTesterAndProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.service; +package com.iqser.red.service.persistence.server.integration.service; import static org.assertj.core.api.Assertions.assertThat; @@ -10,7 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.common.collect.Sets; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/FileTesterAndProvider.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/FileTesterAndProvider.java index d702fb1c6..7fe7c8c66 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/FileTesterAndProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.service; +package com.iqser.red.service.persistence.server.integration.service; import static org.assertj.core.api.Assertions.assertThat; @@ -12,8 +12,8 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.UploadClient; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/ReportTemplateProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/ReportTemplateProvider.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/ReportTemplateProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/ReportTemplateProvider.java index 37fc8f5d4..8d628effc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/ReportTemplateProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/ReportTemplateProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.service; +package com.iqser.red.service.persistence.server.integration.service; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; @@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; -import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ReportTemplate; @Service diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/TypeProvider.java similarity index 93% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/TypeProvider.java index 047cf00ff..8e61445bd 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/TypeProvider.java @@ -1,11 +1,11 @@ -package com.iqser.red.service.peristence.v1.server.integration.service; +package com.iqser.red.service.persistence.server.integration.service; import static org.assertj.core.api.Assertions.assertThat; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.TypeValue; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/UserProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/UserProvider.java similarity index 88% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/UserProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/UserProvider.java index bda4151cb..04464511b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/UserProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/UserProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.service; +package com.iqser.red.service.persistence.server.integration.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ApplicationConfigTest.java similarity index 89% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ApplicationConfigTest.java index 79b6ff16c..791581fb8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ApplicationConfigTest.java @@ -1,12 +1,12 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.ApplicationConfigClient; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.ApplicationConfig; public class ApplicationConfigTest extends AbstractPersistenceServerServiceTest { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/AuditTest.java similarity index 88% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/AuditTest.java index 9946b3966..3f5a3e475 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/AuditTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -7,9 +7,9 @@ import java.util.Map; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.AuditClient; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.AuditClient; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/CustomPermissionTest.java similarity index 76% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/CustomPermissionTest.java index 38f5d7d97..58454fbc5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/CustomPermissionTest.java @@ -1,22 +1,13 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; - -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.MANAGE_ACL_PERMISSIONS; -import static com.iqser.red.service.persistence.service.v1.api.external.resource.CustomPermissionMappingResource.PERMISSION_REST_PATH; -import static com.iqser.red.service.persistence.service.v1.api.external.resource.CustomPermissionMappingResource.TARGET_OBJECT_VARIABLE; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +package com.iqser.red.service.persistence.server.integration.tests; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithMockUser; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; -import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; -import com.iqser.red.service.peristence.v1.server.integration.client.CustomPermissionClient; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.CustomPermissionClient; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.acl.RedPermission; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.constants.CustomPermissionConstants; import com.iqser.red.service.persistence.service.v1.api.shared.model.permission.CustomPermissionMappingModel; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DictionaryTest.java similarity index 98% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DictionaryTest.java index b016ba95d..c09b8de60 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DictionaryTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -13,12 +13,12 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.TypeProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryService; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.Dictionary; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DigitalSignatureTest.java similarity index 94% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DigitalSignatureTest.java index d5394986a..55651b048 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DigitalSignatureTest.java @@ -1,8 +1,7 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import org.junit.jupiter.api.Test; @@ -10,8 +9,8 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; -import com.iqser.red.service.peristence.v1.server.integration.client.DigitalSignatureClient; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DigitalSignatureClient; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureKms; import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureViewModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignature; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierAttributeTest.java similarity index 97% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierAttributeTest.java index 49014a429..24a4132d2 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierAttributeTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -12,10 +12,10 @@ import org.assertj.core.util.Lists; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DossierAttributeClient; +import com.iqser.red.service.persistence.server.integration.client.DossierAttributeConfigClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributes; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributesConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierAttributeConfig; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatsTest.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatsTest.java index 7df03e79d..c939e6404 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatsTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -12,13 +12,13 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatsClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierStatsClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStats; 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.ProcessingStatus; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatusTest.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatusTest.java index ebb424117..5532348e8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatusTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -6,11 +6,11 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierStatusClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java similarity index 99% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java index ec5c1ba81..265d6c817 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; import static org.mockito.ArgumentMatchers.eq; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateImportTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateImportTest.java index 232d8cc6d..f9f9bf7dd 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateImportTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -19,8 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.mock.web.MockMultipartFile; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateStatsTest.java similarity index 92% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateStatsTest.java index fb7674c77..5f70de0af 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateStatsTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -13,20 +13,20 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import com.google.common.collect.Sets; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateStatsClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierStatusClient; +import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.persistence.server.integration.client.DossierTemplateStatsClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.FileManagementClient; +import com.iqser.red.service.persistence.server.integration.client.ReanalysisClient; +import com.iqser.red.service.persistence.server.integration.client.UploadClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateTest.java similarity index 97% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateTest.java index 4109b40a6..fb013023d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -36,19 +36,19 @@ import org.springframework.mock.web.MockMultipartFile; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Sets; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.DossierAttributeConfigClient; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierStatusClient; +import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.persistence.server.integration.client.DownloadClient; +import com.iqser.red.service.persistence.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.persistence.server.integration.client.LegalBasisClient; +import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.persistence.server.integration.client.WatermarkClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.model.DownloadJob; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTest.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTest.java index f87d39a54..e0bd06aa2 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -15,15 +15,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; import com.google.common.collect.Sets; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierStatusClient; +import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.persistence.server.integration.client.WatermarkClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.TypeProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadPreparationTest.java similarity index 93% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadPreparationTest.java index fe9391237..82fd5769d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadPreparationTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -16,14 +16,14 @@ import org.springframework.mock.web.MockMultipartFile; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DownloadClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.model.DownloadJob; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadCompressionMessageReceiver; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadReportMessageReceiver; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadTest.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadTest.java index 42f473d6e..d6f6eb4fa 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,6 +9,12 @@ import java.util.Set; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionType; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadRedactionFileStatusRepository; +import com.iqser.red.service.persistence.server.integration.client.DownloadClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import org.junit.jupiter.api.Disabled; @@ -17,16 +23,9 @@ import org.springframework.beans.factory.annotation.Autowired; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; -import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.model.DownloadJob; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadMessageReceiver; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadPreparationService; -import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadWithOptionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.RemoveDownloadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMergeTest.java similarity index 99% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMergeTest.java index 7a041bc58..98de30465 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMergeTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileAttributeTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileAttributeTest.java index 98437df2b..6cc0857c0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileAttributeTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static com.iqser.red.service.persistence.management.v1.processor.service.FileAttributesManagementService.ASCII_ENCODING; import static com.iqser.red.service.persistence.management.v1.processor.service.FileAttributesManagementService.UTF_ENCODING; @@ -19,14 +19,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.mock.web.MockMultipartFile; -import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; -import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.FileAttributeClient; +import com.iqser.red.service.persistence.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.FileManagementClient; +import com.iqser.red.service.persistence.server.integration.client.UploadClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributes; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributesConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileProcessingTest.java similarity index 92% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileProcessingTest.java index 008235811..aba741f88 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileProcessingTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,15 +9,15 @@ import java.util.List; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileProcessingClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.FileManagementClient; +import com.iqser.red.service.persistence.server.integration.client.FileProcessingClient; +import com.iqser.red.service.persistence.server.integration.client.ReanalysisClient; +import com.iqser.red.service.persistence.server.integration.client.UploadClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult; import com.iqser.red.service.persistence.service.v1.api.shared.model.MessageType; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileTest.java index fe831f9d0..7af0b87e7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -22,22 +22,22 @@ import org.springframework.mock.web.MockMultipartFile; import com.google.common.collect.Sets; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ViewedPagesClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.persistence.server.integration.client.FileAttributeClient; +import com.iqser.red.service.persistence.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.FileManagementClient; +import com.iqser.red.service.persistence.server.integration.client.ManualRedactionClient; +import com.iqser.red.service.persistence.server.integration.client.ReanalysisClient; +import com.iqser.red.service.persistence.server.integration.client.UploadClient; +import com.iqser.red.service.persistence.server.integration.client.ViewedPagesClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.TypeProvider; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/IndexInformationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/IndexInformationTest.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/IndexInformationTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/IndexInformationTest.java index e61e6c0fe..6bae46aca 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/IndexInformationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/IndexInformationTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -8,8 +8,8 @@ import java.time.temporal.ChronoUnit; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.IndexInformationClient; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.IndexInformationClient; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.IndexInformationRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.index.IndexInformation; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LegalBasisTest.java similarity index 87% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LegalBasisTest.java index 0fbb86efe..baf23c436 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LegalBasisTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,10 +9,10 @@ import org.assertj.core.util.Lists; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.VersionClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.LegalBasisClient; +import com.iqser.red.service.persistence.server.integration.client.VersionClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis; import feign.FeignException; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LicenseReportTest.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LicenseReportTest.java index e2f796699..0fbd7e20a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LicenseReportTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,11 +9,11 @@ import java.time.ZoneId; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.LicenseReportClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.LicenseReportClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ManualRedactionTest.java similarity index 98% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ManualRedactionTest.java index 7672880cc..7f2cec30e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ManualRedactionTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; import static org.assertj.core.api.Assertions.assertThat; @@ -21,17 +21,17 @@ import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileProcessingClient; -import com.iqser.red.service.peristence.v1.server.integration.client.InternalDictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.FileProcessingClient; +import com.iqser.red.service.persistence.server.integration.client.InternalDictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.ManualRedactionClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.TypeProvider; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; 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; @@ -45,11 +45,7 @@ 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.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.EntryType; -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.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.ManualRedactionEntry; -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; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ForceRedactionRequestModel; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesServiceTest.java similarity index 86% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesServiceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesServiceTest.java index 4d16624ce..e0074edf0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesServiceTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -6,8 +6,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.peristence.v1.server.integration.utils.MultithreadedTestRunner; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.utils.MultithreadedTestRunner; import com.iqser.red.service.persistence.management.v1.processor.service.NotificationPreferencesService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPreferencesPersistenceService; import com.knecon.fforesight.tenantcommons.TenantContext; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesTest.java similarity index 93% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesTest.java index 791c2da89..f4273abcb 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,8 +9,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.BeforeEach; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.NotificationPreferencesClient; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.NotificationPreferencesClient; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.EmailNotificationType; import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationPreferences; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationTest.java similarity index 92% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationTest.java index 2619802ae..232778b36 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,11 +9,11 @@ import org.assertj.core.util.Lists; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.NotificationClient; -import com.iqser.red.service.peristence.v1.server.integration.client.NotificationPreferencesClient; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.peristence.v1.server.integration.utils.MultithreadedTestRunner; +import com.iqser.red.service.persistence.server.integration.client.NotificationClient; +import com.iqser.red.service.persistence.server.integration.client.NotificationPreferencesClient; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.utils.MultithreadedTestRunner; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AddNotificationRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReanalysisTest.java similarity index 87% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReanalysisTest.java index 19f547b96..f79625397 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReanalysisTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -8,11 +8,11 @@ import java.util.Set; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.ReanalysisClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReduceFileSizeMigrationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReduceFileSizeMigrationTest.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReduceFileSizeMigrationTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReduceFileSizeMigrationTest.java index c1241731f..f07b146a9 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReduceFileSizeMigrationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReduceFileSizeMigrationTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import java.io.FileOutputStream; @@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.migration.migrations.ReduceTextFileSizeMigration10; import com.iqser.red.service.persistence.management.v1.processor.utils.FileUtils; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReportTemplateTest.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReportTemplateTest.java index dcb05aff3..043c7179e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReportTemplateTest.java @@ -1,14 +1,14 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.ReportTemplateProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.ReportTemplateProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.ReportTemplateUpdateRequest; import feign.FeignException; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/RulesTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/RulesTest.java index 6ac61f6b0..d9f8d34c3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/RulesTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -13,10 +13,10 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; -import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; -import com.iqser.red.service.peristence.v1.server.integration.client.VersionClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.RulesClient; +import com.iqser.red.service.persistence.server.integration.client.VersionClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.DroolsValidationResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/StringCleaningUtilityTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/StringCleaningUtilityTest.java index 4620fe162..320175b68 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/StringCleaningUtilityTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/TypeTest.java similarity index 88% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/TypeTest.java index a82d6d735..666a2f328 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/TypeTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -7,15 +7,14 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.TypeProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.UpdateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.Colors; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type; public class TypeTest extends AbstractPersistenceServerServiceTest { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ViewedPagesTest.java similarity index 73% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ViewedPagesTest.java index 1e7dc5242..b09b6b801 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ViewedPagesTest.java @@ -1,19 +1,18 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ViewedPagesClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.client.ViewedPagesClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.ViewedPagesRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ViewedPage; -import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; public class ViewedPagesTest extends AbstractPersistenceServerServiceTest { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/WatermarkTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/WatermarkTest.java index 5c940ad8c..18abf92f6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/WatermarkTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; +package com.iqser.red.service.persistence.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -7,11 +7,11 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.WatermarkClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/EntityPerformanceTest.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/EntityPerformanceTest.java index 64a146530..230a17e78 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/EntityPerformanceTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests.performance; +package com.iqser.red.service.persistence.server.integration.tests.performance; import static org.assertj.core.api.Assertions.assertThat; @@ -9,11 +9,11 @@ import java.util.stream.Collectors; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.persistence.server.integration.service.TypeProvider; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/FilePerformanceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/FilePerformanceTest.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/FilePerformanceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/FilePerformanceTest.java index 450ab69bb..065f49c5f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/FilePerformanceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/FilePerformanceTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests.performance; +package com.iqser.red.service.persistence.server.integration.tests.performance; import static org.assertj.core.api.Assertions.assertThat; @@ -8,10 +8,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatsClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierStatsClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.knecon.fforesight.tenantcommons.TenantContext; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/PerformanceTestService.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/PerformanceTestService.java index 38635fe6d..830607471 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/PerformanceTestService.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests.performance; +package com.iqser.red.service.persistence.server.integration.tests.performance; import java.time.OffsetDateTime; import java.util.ArrayList; @@ -16,10 +16,10 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.TransientSecurityContext; import org.springframework.stereotype.Service; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatsClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.server.integration.client.DossierStatsClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.integration.service.UserProvider; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/AbstractPersistenceServerServiceTest.java similarity index 98% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/AbstractPersistenceServerServiceTest.java index 6a2c43035..697a59ce8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import static org.mockito.Mockito.when; @@ -49,10 +49,10 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; import com.iqser.red.commons.jackson.ObjectMapperFactory; -import com.iqser.red.service.peristence.v1.server.Application; -import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.utils.MetricsPrinterService; +import com.iqser.red.service.persistence.server.integration.client.ApplicationConfigClient; +import com.iqser.red.service.persistence.server.integration.client.FileClient; +import com.iqser.red.service.persistence.server.Application; +import com.iqser.red.service.persistence.server.utils.MetricsPrinterService; import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; import com.iqser.red.service.persistence.management.v1.processor.client.searchservice.SearchClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FeignRequestInterceptor.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/FeignRequestInterceptor.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FeignRequestInterceptor.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/FeignRequestInterceptor.java index 2a1c258d5..e6ff73a8f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FeignRequestInterceptor.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/FeignRequestInterceptor.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import org.springframework.stereotype.Component; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconRedisTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconRedisTestContainer.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconRedisTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconRedisTestContainer.java index fcede2ceb..232d3e473 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconRedisTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconRedisTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import org.testcontainers.containers.GenericContainer; import org.testcontainers.utility.DockerImageName; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconSpringPostgreSQLTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconSpringPostgreSQLTestContainer.java similarity index 97% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconSpringPostgreSQLTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconSpringPostgreSQLTestContainer.java index 6981e94fa..bb93cdd9a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconSpringPostgreSQLTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconSpringPostgreSQLTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import java.time.Duration; import java.time.temporal.ChronoUnit; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MetricValidationUtils.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MetricValidationUtils.java similarity index 94% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MetricValidationUtils.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MetricValidationUtils.java index 7681c34c5..33e09372d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MetricValidationUtils.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MetricValidationUtils.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MongoDBTestContainer.java similarity index 93% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MongoDBTestContainer.java index 6db3c46ec..5654ca02b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MongoDBTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import org.testcontainers.containers.GenericContainer; import org.testcontainers.utility.DockerImageName; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MultithreadedTestRunner.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MultithreadedTestRunner.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MultithreadedTestRunner.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MultithreadedTestRunner.java index 2dd4cc6c8..efe2d6796 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MultithreadedTestRunner.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MultithreadedTestRunner.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import java.util.ArrayList; import java.util.Collections; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/RedisTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/RedisTestContainer.java similarity index 89% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/RedisTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/RedisTestContainer.java index a756c4f5b..ba4032b51 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/RedisTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/RedisTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import org.testcontainers.containers.GenericContainer; import org.testcontainers.utility.DockerImageName; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/SpringPostgreSQLTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/SpringPostgreSQLTestContainer.java similarity index 89% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/SpringPostgreSQLTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/SpringPostgreSQLTestContainer.java index 56adc5e8e..3fb788bb0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/SpringPostgreSQLTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/SpringPostgreSQLTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import org.testcontainers.containers.PostgreSQLContainer; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/TokenService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/TokenService.java similarity index 86% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/TokenService.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/TokenService.java index fb6269a5b..7ec1bb48f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/TokenService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/TokenService.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.integration.utils; +package com.iqser.red.service.persistence.server.integration.utils; import org.apache.commons.codec.binary.Base64; import org.springframework.stereotype.Service; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/FileSystemBackArchiverTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/FileSystemBackArchiverTest.java similarity index 97% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/FileSystemBackArchiverTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/FileSystemBackArchiverTest.java index 3aef8fe5c..92ab33c26 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/FileSystemBackArchiverTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/FileSystemBackArchiverTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.utils; +package com.iqser.red.service.persistence.server.utils; import static org.assertj.core.api.Assertions.assertThat; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/MetricsPrinterService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/MetricsPrinterService.java similarity index 98% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/MetricsPrinterService.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/MetricsPrinterService.java index d32ff0324..bb3c4b946 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/MetricsPrinterService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/MetricsPrinterService.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.utils; +package com.iqser.red.service.persistence.server.utils; import java.text.DecimalFormat; import java.util.ArrayList; From bfe3f880f4abf0b7aac66b4732dc01f8bc20dc9e Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 13:11:34 +0100 Subject: [PATCH 23/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../persistence-service-server-v1/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 56535f7ff..45e92581c 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -23,7 +23,7 @@ dependencies { api(project(":persistence-service-external-api-impl-v2")) api(project(":persistence-service-internal-api-impl-v1")) api("com.iqser.red.commons:storage-commons:2.45.0") - api("com.knecon.fforesight:mongo-database-commons:maverick-mongo") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo2") api("junit:junit:4.13.2") api("org.apache.logging.log4j:log4j-slf4j-impl:2.19.0") api("net.logstash.logback:logstash-logback-encoder:7.4") From 56b124227ad38d28d17da675675b153dc22d0e19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Wed, 20 Mar 2024 13:46:55 +0100 Subject: [PATCH 24/32] Enabled logging for tests --- .../com.iqser.red.service.java-conventions.gradle.kts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts index 545b9b78e..698264353 100644 --- a/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts @@ -49,6 +49,12 @@ tasks.named("test") { tasks.test { finalizedBy(tasks.jacocoTestReport) // report is always generated after tests run + // Test Logging + + testLogging { + events("standardOut", "started", "passed", "skipped", "failed") + } + } tasks.jacocoTestReport { From f5465c18f94a0c194d872e27115a518113deaad9 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 15:06:48 +0100 Subject: [PATCH 25/32] RED-8702: Explore document databases to store entityLog * refactoring --- .../persistence-service-processor-v1/build.gradle.kts | 3 ++- .../persistence-service-server-v1/build.gradle.kts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts index 90e713f81..639085e55 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -4,6 +4,7 @@ plugins { } val springBootStarterVersion = "3.1.5" +val springCloudVersion = "4.0.4" dependencies { api(project(":persistence-service-shared-api-v1")) @@ -56,7 +57,7 @@ dependencies { api("org.postgresql:postgresql:42.2.23") api("org.apache.commons:commons-lang3:3.12.0") api("com.opencsv:opencsv:5.4") - api("org.springframework.cloud:spring-cloud-starter-openfeign:4.0.4") + api("org.springframework.cloud:spring-cloud-starter-openfeign:${springCloudVersion}") api("commons-validator:commons-validator:1.7") testImplementation("org.springframework.amqp:spring-rabbit-test:3.0.2") testImplementation("org.testcontainers:postgresql:1.17.1") diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index 45e92581c..aaef5e539 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -23,7 +23,7 @@ dependencies { api(project(":persistence-service-external-api-impl-v2")) api(project(":persistence-service-internal-api-impl-v1")) api("com.iqser.red.commons:storage-commons:2.45.0") - api("com.knecon.fforesight:mongo-database-commons:maverick-mongo2") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo3") api("junit:junit:4.13.2") api("org.apache.logging.log4j:log4j-slf4j-impl:2.19.0") api("net.logstash.logback:logstash-logback-encoder:7.4") From 9805b900fc71a49abba141923d3d237972c1f81f Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 21 Mar 2024 09:49:46 +0100 Subject: [PATCH 26/32] RED-8702: Explore document databases to store entityLog * added observed --- .../v1/processor/service/FileManagementStorageService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java index 8036fb11f..a36402487 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileManagementStorageService.java @@ -25,6 +25,7 @@ import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; import com.iqser.red.storage.commons.service.StorageService; import com.knecon.fforesight.tenantcommons.TenantContext; +import io.micrometer.observation.annotation.Observed; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -100,6 +101,7 @@ public class FileManagementStorageService { } + @Observed(name = "FileManagementStorageService", contextualName = "get-entity-log") public EntityLog getEntityLog(String dossierId, String fileId) { return entityLogMongoService.findEntityLogByDossierIdAndFileId(dossierId, fileId) @@ -108,11 +110,13 @@ public class FileManagementStorageService { } @SneakyThrows + @Observed(name = "FileManagementStorageService", contextualName = "save-entity-log") public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog); } + @Observed(name = "FileManagementStorageService", contextualName = "entity-log-exists") public boolean entityLogExists(String dossierId, String fileId) { return entityLogMongoService.entityLogDocumentExists(dossierId, fileId); @@ -170,6 +174,7 @@ public class FileManagementStorageService { storageService.deleteObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, fileType)); } + @Observed(name = "FileManagementStorageService", contextualName = "delete-entity-log") public void deleteEntityLog(String dossierId, String fileId) { entityLogMongoService.deleteEntityLog(dossierId, fileId); From 87b4b9d806f61c6ee2ec351aa1edeab9e7a85e8b Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 21 Mar 2024 12:58:32 +0100 Subject: [PATCH 27/32] RED-8702: Explore document databases to store entityLog * liquibase collection initialization first draft --- .../build.gradle.kts | 1 + .../changelog/mongo.changelog-tenant.xml | 7 + .../tenant/1-initial-database.changelog.xml | 222 ++++++++++++++++++ ...ove-entry-number-of-comments.changelog.xml | 26 ++ .../build.gradle.kts | 1 - .../src/main/resources/application-dev.yaml | 3 + .../src/main/resources/application.yaml | 4 + .../src/test/resources/application.yml | 3 + 8 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog.xml create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-remove-entry-number-of-comments.changelog.xml diff --git a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts index 639085e55..9c78e94ed 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -35,6 +35,7 @@ dependencies { exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1") } api("com.knecon.fforesight:jobs-commons:0.10.0") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo4") api("com.knecon.fforesight:database-tenant-commons:maverick-mongo") api("com.knecon.fforesight:keycloak-commons:maverick-mongo") api("com.knecon.fforesight:tracing-commons:0.5.0") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml new file mode 100644 index 000000000..688421db8 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml @@ -0,0 +1,7 @@ + + + + diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog.xml new file mode 100644 index 000000000..ed643c742 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog.xml @@ -0,0 +1,222 @@ + + + + + + { + validator: { + $jsonSchema: { + bsonType: "object", + required: ["entryId", "entityLogId", "type", "entryType", "state", "value", "reason", "matchedRule", "legalBasis", "containingNodeId", "closestHeadline", "section", + "positions", "textBefore", "textAfter", "startOffset", "endOffset", "imageHasTransparency", "dictionaryEntry", "dossierDictionaryEntry", "excluded", "changes", + "manualChanges", "engines", "reference", "importedRedactionIntersections", "numberOfComments"], + properties: { + entryId: { + bsonType: "string", + description: "The Entry ID" + }, + entityLogId: { + bsonType: "string", + description: "The Entity Log ID" + }, + type: { + bsonType: "string", + description: "The Type" + }, + entryType: { + bsonType: "string", + description: "The Entry Type" + }, + state: { + bsonType: "string", + description: "The Entry State" + }, + value: { + bsonType: "string", + description: "The Value" + }, + reason: { + bsonType: "string", + description: "The Reason" + }, + matchedRule: { + bsonType: "string", + description: "The Matched Rule" + }, + legalBasis: { + bsonType: "string", + description: "The Legal Basis" + }, + containingNodeId: { + bsonType: "array", + items: { + bsonType: "int", + description: "The Containing Node ID" + } + }, + closestHeadline: { + bsonType: "string", + description: "The Closest Headline" + }, + section: { + bsonType: "string", + description: "The Section" + }, + positions: { + bsonType: "array", + description: "The Positions", + items: { + bsonType: "object" + } + }, + textBefore: { + bsonType: "string", + description: "Text before the entry" + }, + textAfter: { + bsonType: "string", + description: "Text after the entry" + }, + startOffset: { + bsonType: "int", + description: "Start offset of the entry" + }, + endOffset: { + bsonType: "int", + description: "End offset of the entry" + }, + imageHasTransparency: { + bsonType: "bool", + description: "Whether the image has transparency" + }, + dictionaryEntry: { + bsonType: "bool", + description: "Whether it's a dictionary entry" + }, + dossierDictionaryEntry: { + bsonType: "bool", + description: "Whether it's a dossier dictionary entry" + }, + excluded: { + bsonType: "bool", + description: "Whether it's excluded" + }, + changes: { + bsonType: "array", + description: "The Changes", + items: { + bsonType: "object" + } + }, + manualChanges: { + bsonType: "array", + description: "The Manual Changes", + items: { + bsonType: "object" + } + }, + engines: { + bsonType: "array", + description: "The Engines", + items: { + bsonType: "string" + } + }, + reference: { + bsonType: "array", + description: "The Reference", + items: { + bsonType: "string" + } + }, + importedRedactionIntersections: { + bsonType: "array", + description: "The Imported Redaction Intersections", + items: { + bsonType: "string" + } + }, + numberOfComments: { + bsonType: "int", + description: "The Number of Comments" + } + } + } + }, + validationAction: "warn", + validationLevel: "strict" + } + + + + + + { + validator: { + $jsonSchema: { + bsonType: "object", + required: ["dossierId", "fileId", "analysisVersion", "analysisNumber", "entityLogEntryDocument", "legalBasis"], + properties: { + dossierId: { + bsonType: "string", + description: "The Dossier ID" + }, + fileId: { + bsonType: "string", + description: "The File ID" + }, + analysisVersion: { + bsonType: "long", + description: "The Analysis Version" + }, + analysisNumber: { + bsonType: "int", + description: "The Analysis Number" + }, + entityLogEntryDocument: { + bsonType: "array", + description: "The Entity Log Entry Documents", + items: { + bsonType: "objectId" + } + }, + legalBasis: { + bsonType: "array", + description: "The Legal Basis", + items: { + bsonType: "object" + } + }, + dictionaryVersion: { + bsonType: "long", + description: "The Dictionary Version" + }, + dossierDictionaryVersion: { + bsonType: "long", + description: "The Dossier Dictionary Version" + }, + rulesVersion: { + bsonType: "long", + description: "The Rules Version" + }, + legalBasisVersion: { + bsonType: "long", + description: "The Legal Basis Version" + } + } + } + }, + validationAction: "warn", + validationLevel: "strict" + } + + + + + + \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-remove-entry-number-of-comments.changelog.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-remove-entry-number-of-comments.changelog.xml new file mode 100644 index 000000000..9665c17b0 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-remove-entry-number-of-comments.changelog.xml @@ -0,0 +1,26 @@ + + + + + + { + update: "entity-log-entries", + updates: [ + { + q: {}, + u: { $unset: { "numberOfComments": "" } }, + multi: true + } + ] + } + + + + + + \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts index aaef5e539..521247b80 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -23,7 +23,6 @@ dependencies { api(project(":persistence-service-external-api-impl-v2")) api(project(":persistence-service-internal-api-impl-v1")) api("com.iqser.red.commons:storage-commons:2.45.0") - api("com.knecon.fforesight:mongo-database-commons:maverick-mongo3") api("junit:junit:4.13.2") api("org.apache.logging.log4j:log4j-slf4j-impl:2.19.0") api("net.logstash.logback:logstash-logback-encoder:7.4") diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yaml index ca4607034..c6c3cd1d6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yaml @@ -23,6 +23,9 @@ multitenancy: liquibase: changeLog: classpath:db/changelog/db.changelog-tenant.yaml clear-checksums: true + mongo: + liquibase: + changeLog: classpath:mongo/changelog/mongo.changelog-tenant.xml monitoring:enabled: true cors.enabled: true diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml index 6960236c6..cd7a95353 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml @@ -114,6 +114,10 @@ multitenancy: liquibase: changeLog: classpath:db/changelog/db.changelog-tenant.yaml clear-checksums: true + mongo: + liquibase: + changeLog: classpath:mongo/changelog/mongo.changelog-tenant.xml + bucket4j: diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml index 7f5c1f6a7..7d6a5ccea 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml @@ -110,6 +110,9 @@ multitenancy: prepStmtCacheSqlLimit: 2048 liquibase: changeLog: classpath:db/changelog/db.changelog-tenant.yaml + mongo: + liquibase: + changeLog: classpath:mongo/changelog/mongo.changelog-tenant.xml From 32e8e8aa0d810a47241b8b5e8608e246be228b61 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 21 Mar 2024 13:45:09 +0100 Subject: [PATCH 28/32] RED-8702: Explore document databases to store entityLog * liquibase collection initialization first draft --- .../changelog/mongo.changelog-tenant.xml | 4 +- ...ial-database.changelog-with-validation.xml | 224 ++++++++++++++++++ .../tenant/1-initial-database.changelog.xml | 213 +---------------- .../tenant/2-create-indices-for-entries.xml | 37 +++ ...ve-entry-number-of-comments.changelog.xml} | 0 5 files changed, 267 insertions(+), 211 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog-with-validation.xml create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-create-indices-for-entries.xml rename persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/{2-remove-entry-number-of-comments.changelog.xml => example-remove-entry-number-of-comments.changelog.xml} (100%) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml index 688421db8..6e0590039 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml @@ -2,6 +2,6 @@ xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.20.xsd"> - - + + diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog-with-validation.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog-with-validation.xml new file mode 100644 index 000000000..c988f71a2 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog-with-validation.xml @@ -0,0 +1,224 @@ + + + + + + + { + validator: { + $jsonSchema: { + bsonType: "object", + required: ["entryId", "entityLogId", "type", "entryType", "state", "value", "reason", "matchedRule", "legalBasis", "containingNodeId", "closestHeadline", "section", + "positions", "textBefore", "textAfter", "startOffset", "endOffset", "imageHasTransparency", "dictionaryEntry", "dossierDictionaryEntry", "excluded", "changes", + "manualChanges", "engines", "reference", "importedRedactionIntersections", "numberOfComments"], + properties: { + entryId: { + bsonType: "string", + description: "The Entry ID" + }, + entityLogId: { + bsonType: "string", + description: "The Entity Log ID" + }, + type: { + bsonType: "string", + description: "The Type" + }, + entryType: { + bsonType: "string", + description: "The Entry Type" + }, + state: { + bsonType: "string", + description: "The Entry State" + }, + value: { + bsonType: "string", + description: "The Value" + }, + reason: { + bsonType: "string", + description: "The Reason" + }, + matchedRule: { + bsonType: "string", + description: "The Matched Rule" + }, + legalBasis: { + bsonType: "string", + description: "The Legal Basis" + }, + containingNodeId: { + bsonType: "array", + items: { + bsonType: "int", + description: "The Containing Node ID" + } + }, + closestHeadline: { + bsonType: "string", + description: "The Closest Headline" + }, + section: { + bsonType: "string", + description: "The Section" + }, + positions: { + bsonType: "array", + description: "The Positions", + items: { + bsonType: "object" + } + }, + textBefore: { + bsonType: "string", + description: "Text before the entry" + }, + textAfter: { + bsonType: "string", + description: "Text after the entry" + }, + startOffset: { + bsonType: "int", + description: "Start offset of the entry" + }, + endOffset: { + bsonType: "int", + description: "End offset of the entry" + }, + imageHasTransparency: { + bsonType: "bool", + description: "Whether the image has transparency" + }, + dictionaryEntry: { + bsonType: "bool", + description: "Whether it's a dictionary entry" + }, + dossierDictionaryEntry: { + bsonType: "bool", + description: "Whether it's a dossier dictionary entry" + }, + excluded: { + bsonType: "bool", + description: "Whether it's excluded" + }, + changes: { + bsonType: "array", + description: "The Changes", + items: { + bsonType: "object" + } + }, + manualChanges: { + bsonType: "array", + description: "The Manual Changes", + items: { + bsonType: "object" + } + }, + engines: { + bsonType: "array", + description: "The Engines", + items: { + bsonType: "string" + } + }, + reference: { + bsonType: "array", + description: "The Reference", + items: { + bsonType: "string" + } + }, + importedRedactionIntersections: { + bsonType: "array", + description: "The Imported Redaction Intersections", + items: { + bsonType: "string" + } + }, + numberOfComments: { + bsonType: "int", + description: "The Number of Comments" + } + } + } + }, + validationAction: "warn", + validationLevel: "strict" + } + + + + + + { + validator: { + $jsonSchema: { + bsonType: "object", + required: ["dossierId", "fileId", "analysisVersion", "analysisNumber", "entityLogEntryDocument", "legalBasis"], + properties: { + dossierId: { + bsonType: "string", + description: "The Dossier ID" + }, + fileId: { + bsonType: "string", + description: "The File ID" + }, + analysisVersion: { + bsonType: "long", + description: "The Analysis Version" + }, + analysisNumber: { + bsonType: "int", + description: "The Analysis Number" + }, + entityLogEntryDocument: { + bsonType: "array", + description: "The Entity Log Entry Documents", + items: { + bsonType: "objectId" + } + }, + legalBasis: { + bsonType: "array", + description: "The Legal Basis", + items: { + bsonType: "object" + } + }, + dictionaryVersion: { + bsonType: "long", + description: "The Dictionary Version" + }, + dossierDictionaryVersion: { + bsonType: "long", + description: "The Dossier Dictionary Version" + }, + rulesVersion: { + bsonType: "long", + description: "The Rules Version" + }, + legalBasisVersion: { + bsonType: "long", + description: "The Legal Basis Version" + } + } + } + }, + validationAction: "warn", + validationLevel: "strict" + } + + + + + + + \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog.xml index ed643c742..c8e1cbce6 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog.xml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/1-initial-database.changelog.xml @@ -6,216 +6,11 @@ http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> - - - { - validator: { - $jsonSchema: { - bsonType: "object", - required: ["entryId", "entityLogId", "type", "entryType", "state", "value", "reason", "matchedRule", "legalBasis", "containingNodeId", "closestHeadline", "section", - "positions", "textBefore", "textAfter", "startOffset", "endOffset", "imageHasTransparency", "dictionaryEntry", "dossierDictionaryEntry", "excluded", "changes", - "manualChanges", "engines", "reference", "importedRedactionIntersections", "numberOfComments"], - properties: { - entryId: { - bsonType: "string", - description: "The Entry ID" - }, - entityLogId: { - bsonType: "string", - description: "The Entity Log ID" - }, - type: { - bsonType: "string", - description: "The Type" - }, - entryType: { - bsonType: "string", - description: "The Entry Type" - }, - state: { - bsonType: "string", - description: "The Entry State" - }, - value: { - bsonType: "string", - description: "The Value" - }, - reason: { - bsonType: "string", - description: "The Reason" - }, - matchedRule: { - bsonType: "string", - description: "The Matched Rule" - }, - legalBasis: { - bsonType: "string", - description: "The Legal Basis" - }, - containingNodeId: { - bsonType: "array", - items: { - bsonType: "int", - description: "The Containing Node ID" - } - }, - closestHeadline: { - bsonType: "string", - description: "The Closest Headline" - }, - section: { - bsonType: "string", - description: "The Section" - }, - positions: { - bsonType: "array", - description: "The Positions", - items: { - bsonType: "object" - } - }, - textBefore: { - bsonType: "string", - description: "Text before the entry" - }, - textAfter: { - bsonType: "string", - description: "Text after the entry" - }, - startOffset: { - bsonType: "int", - description: "Start offset of the entry" - }, - endOffset: { - bsonType: "int", - description: "End offset of the entry" - }, - imageHasTransparency: { - bsonType: "bool", - description: "Whether the image has transparency" - }, - dictionaryEntry: { - bsonType: "bool", - description: "Whether it's a dictionary entry" - }, - dossierDictionaryEntry: { - bsonType: "bool", - description: "Whether it's a dossier dictionary entry" - }, - excluded: { - bsonType: "bool", - description: "Whether it's excluded" - }, - changes: { - bsonType: "array", - description: "The Changes", - items: { - bsonType: "object" - } - }, - manualChanges: { - bsonType: "array", - description: "The Manual Changes", - items: { - bsonType: "object" - } - }, - engines: { - bsonType: "array", - description: "The Engines", - items: { - bsonType: "string" - } - }, - reference: { - bsonType: "array", - description: "The Reference", - items: { - bsonType: "string" - } - }, - importedRedactionIntersections: { - bsonType: "array", - description: "The Imported Redaction Intersections", - items: { - bsonType: "string" - } - }, - numberOfComments: { - bsonType: "int", - description: "The Number of Comments" - } - } - } - }, - validationAction: "warn", - validationLevel: "strict" - } - - - - - { - validator: { - $jsonSchema: { - bsonType: "object", - required: ["dossierId", "fileId", "analysisVersion", "analysisNumber", "entityLogEntryDocument", "legalBasis"], - properties: { - dossierId: { - bsonType: "string", - description: "The Dossier ID" - }, - fileId: { - bsonType: "string", - description: "The File ID" - }, - analysisVersion: { - bsonType: "long", - description: "The Analysis Version" - }, - analysisNumber: { - bsonType: "int", - description: "The Analysis Number" - }, - entityLogEntryDocument: { - bsonType: "array", - description: "The Entity Log Entry Documents", - items: { - bsonType: "objectId" - } - }, - legalBasis: { - bsonType: "array", - description: "The Legal Basis", - items: { - bsonType: "object" - } - }, - dictionaryVersion: { - bsonType: "long", - description: "The Dictionary Version" - }, - dossierDictionaryVersion: { - bsonType: "long", - description: "The Dossier Dictionary Version" - }, - rulesVersion: { - bsonType: "long", - description: "The Rules Version" - }, - legalBasisVersion: { - bsonType: "long", - description: "The Legal Basis Version" - } - } - } - }, - validationAction: "warn", - validationLevel: "strict" - } - - + + + + diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-create-indices-for-entries.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-create-indices-for-entries.xml new file mode 100644 index 000000000..5fe9ed7cf --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-create-indices-for-entries.xml @@ -0,0 +1,37 @@ + + + + + + + { + "_id": 1, + "positions.pageNumber": 1 + } + + + {name: "positions_pageNumber_index"} + + + + + + { + "_id": 1, + "changes.analysisNumber": -1 + } + + + {name: "changes_analysisNumber_index"} + + + + + + + \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-remove-entry-number-of-comments.changelog.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/example-remove-entry-number-of-comments.changelog.xml similarity index 100% rename from persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-remove-entry-number-of-comments.changelog.xml rename to persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/example-remove-entry-number-of-comments.changelog.xml From b2b6aa1ffd823440a304c662bb2d385c674fd6d2 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Fri, 22 Mar 2024 17:00:24 +0100 Subject: [PATCH 29/32] RED-8702: Explore document databases to store entityLog * liquibase fix --- .../persistence-service-processor-v1/build.gradle.kts | 2 +- .../main/resources/mongo/changelog/mongo.changelog-tenant.xml | 4 ++-- .../mongo/changelog/tenant/2-create-indices-for-entries.xml | 2 +- .../com/iqser/red/service/persistence/server/Application.java | 4 +++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts index 9c78e94ed..982e1cb8a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -35,7 +35,7 @@ dependencies { exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1") } api("com.knecon.fforesight:jobs-commons:0.10.0") - api("com.knecon.fforesight:mongo-database-commons:maverick-mongo4") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo6") api("com.knecon.fforesight:database-tenant-commons:maverick-mongo") api("com.knecon.fforesight:keycloak-commons:maverick-mongo") api("com.knecon.fforesight:tracing-commons:0.5.0") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml index 6e0590039..0ed1f0749 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/mongo.changelog-tenant.xml @@ -2,6 +2,6 @@ xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.20.xsd"> - - + + diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-create-indices-for-entries.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-create-indices-for-entries.xml index 5fe9ed7cf..65a215858 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-create-indices-for-entries.xml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/2-create-indices-for-entries.xml @@ -5,7 +5,7 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.20.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> - + diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java index c448ad01e..89cb8ac92 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java @@ -12,8 +12,10 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cache.annotation.EnableCaching; @@ -66,7 +68,7 @@ import lombok.extern.slf4j.Slf4j; @EnableConfigurationProperties({FileManagementServiceSettings.class}) @EnableMongoRepositories(basePackages = "com.iqser.red.service.persistence") @ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class, MongoDatabaseCommonsAutoConfiguration.class}) -@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class}) +@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class, MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) @Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class}) public class Application implements ApplicationContextAware { From 0545fdb24b41bb37cee487a60d339c1f9a5a2f55 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 09:44:55 +0100 Subject: [PATCH 30/32] RED-8702: Explore document databases to store entityLog --- .../processor/document/EntityLogDocument.java | 1 - .../document/EntityLogEntryDocument.java | 3 - .../tests/EntityLogMongoServiceTest.java | 41 + .../files/entity-log/sample.ENTITY_LOG.json | 30537 ++++++++++++++++ 4 files changed, 30578 insertions(+), 4 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMongoServiceTest.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/sample.ENTITY_LOG.json diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java index 4dc8a3fa1..4539397b0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java @@ -34,7 +34,6 @@ public class EntityLogDocument { private long analysisVersion; - //@Indexed(direction = IndexDirection.DESCENDING) private int analysisNumber; @DBRef diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java index 1c81bf15b..51cbfeb80 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java @@ -29,9 +29,6 @@ import lombok.experimental.FieldDefaults; @EqualsAndHashCode(onlyExplicitlyIncluded = true) @FieldDefaults(level = AccessLevel.PRIVATE) @Document(collection = "entity-log-entries") -//@CompoundIndexes({ - //@CompoundIndex(name = "changes_analysisNumber", def = "{ 'changes.analysisNumber': 1 }") -// }) public class EntityLogEntryDocument { @Id diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMongoServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMongoServiceTest.java new file mode 100644 index 000000000..530cd2007 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMongoServiceTest.java @@ -0,0 +1,41 @@ +package com.iqser.red.service.persistence.server.integration.tests; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.iqser.red.service.persistence.management.v1.processor.service.mongo.EntityLogMongoService; +import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; + +import lombok.SneakyThrows; + +public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceTest { + + + @Autowired + private EntityLogMongoService entityLogMongoService; + + private final String ENTITY_LOG = "sample.ENTITY_LOG.json"; + + private static final String TEST_DOSSIER_ID = "6f2a9d4b5d4e11211fc0d7732fd45b78"; + private static final String TEST_FILE_ID = "b2cbdd4dca0aa1aa0ebbfc5cc1462df0"; + + @Test + @SneakyThrows + @Disabled + public void testInsertEntityLogDocument() { + + var file = new ClassPathResource(String.format(ENTITY_LOG)); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + + EntityLog entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class); + + entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID, entityLog); + + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/sample.ENTITY_LOG.json b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/sample.ENTITY_LOG.json new file mode 100644 index 000000000..f0cb5c8ad --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/sample.ENTITY_LOG.json @@ -0,0 +1,30537 @@ +{ + "analysisVersion": 1, + "analysisNumber": 5, + "entityLogEntry": [ + { + "id": "09a6573e608e19a22452222255d15bad", + "type": "CBI_address", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Analytik GmbH, Kupferstraße 6, 04827 Machern OT Gerichshain, Germany", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 350, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.13 Analytical method 13 - fenpropidin residues in sucrose solution ", + "section": "[350, 2, 1]: Paragraph: Report: Ruhland S. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 158.10005, + 337.3089, + 11.017679 + ], + "pageNumber": 131 + } + ], + "textBefore": "biologische und chemische, ", + "textAfter": " (Syngenta File No.", + "startOffset": 275281, + "endOffset": 275349, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "396e8a2f8ac786489e4f7ec09b53094b", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Zampakou M.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 8, + 1, + 5 + ], + "closestHeadline": "Table 5.2-1: Methods suitable for the determination of the active substances Azoxystrobin and Fenpropidin in plant protection product A23317A ", + "section": "[8, 1, 5]: Table_cell: Zampakou M., 2020", + "color": null, + "positions": [ + { + "rectangle": [ + 422.59, + 687.86, + 59.28, + 10.526819 + ], + "pageNumber": 8 + } + ], + "textBefore": "", + "textAfter": " 2020", + "startOffset": 14379, + "endOffset": 14391, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0cdc7dd2204645819844c9416a0ec02e", + "type": "published_information", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Mass Spectrometry", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 339, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[339, 1]: Paragraph: Water samples are analysed", + "color": null, + "positions": [ + { + "rectangle": [ + 423.13248, + 329.13, + 85.97949, + 11.017679 + ], + "pageNumber": 128 + } + ], + "textBefore": "(LC) coupled with ", + "textAfter": " (MS). The analytical", + "startOffset": 268499, + "endOffset": 268516, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "405091596fc965dd75118b4d28f06329", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 54 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 54]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 233.81998, + 44.461487, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "1999 Report RJ2770B ", + "textAfter": ", 2004 Report", + "startOffset": 68405, + "endOffset": 68415, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4bf591a8e8dd9a35401a84112a0e4c80", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 311, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.7 Analytical method 7 - fenpropidin residues in water ", + "section": "[311, 2, 1]: Paragraph: Report: Kirkwood A. (2018)", + "color": null, + "positions": [ + { + "rectangle": [ + 228.158, + 521.63, + 41.013626, + 11.017679 + ], + "pageNumber": 120 + } + ], + "textBefore": "02571-1037 USA (", + "textAfter": " File No. VV-469411)", + "startOffset": 250274, + "endOffset": 250282, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1009d8cb3c2b850da4ca26b245ae4222", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 39, + 0 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 39, 0]: Paragraph: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 255.41995, + 32.957703, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "RAM 305/03 Validation: ", + "textAfter": ".J., 1999 Report", + "startOffset": 71838, + "endOffset": 71846, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3a81ea1151309dcfc18b8dceb08ab60a", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 9 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 716.18, + 31.03537, + 10.44714 + ], + "pageNumber": 34 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 70998, + "endOffset": 71004, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a04ae2647970bb496a35f31ae53a7825", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 200, + 3, + 1 + ], + "closestHeadline": "A 2.1.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[200, 3, 1]: Paragraph: Report: Link T., Poperechna", + "color": null, + "positions": [ + { + "rectangle": [ + 308.58444, + 496.43, + 39.1037, + 11.017679 + ], + "pageNumber": 86 + } + ], + "textBefore": "T., Poperechna N., ", + "textAfter": "", + "startOffset": 167856, + "endOffset": 167864, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d70c9ea6b443ea579998c6129da6195b", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 7, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 53 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 106520, + "endOffset": 106526, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "01a9650e33fbcff0d19d895f1a3887b4", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Obert-Rauser", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 271, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.2 Analytical method 2 - A23317A - fenpropidin residues water ", + "section": "[271, 2, 1]: Paragraph: Report Azoxystrobin/Fenpropidin SE (A23317A)", + "color": null, + "positions": [ + { + "rectangle": [ + 230.21, + 289.14005, + 59.227676, + 11.017679 + ], + "pageNumber": 105 + } + ], + "textBefore": "under Laboratory Conditions, ", + "textAfter": " P. (2021) Report", + "startOffset": 214997, + "endOffset": 215009, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0db168824138401b8a610a79c3a901d8", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Bracknell, Berkshire", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 380, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[380, 3, 1]: Paragraph: Report: Richardson M. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 390.2252, + 156.42, + 90.52405, + 11.017679 + ], + "pageNumber": 138 + } + ], + "textBefore": "Inernational Research Centre, ", + "textAfter": ", RG42 6EY,", + "startOffset": 289890, + "endOffset": 289910, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "379772acbabe07b74ea0ea5db06757f3", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 299, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[299, 1]: Paragraph: Test facility: BioChem agrar,", + "color": null, + "positions": [ + { + "rectangle": [ + 70.824, + 296.49002, + 52.881622, + 11.017679 + ], + "pageNumber": 115 + } + ], + "textBefore": "", + "textAfter": ": BioChem agrar,", + "startOffset": 238543, + "endOffset": 238556, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "feb8bee293e71bffde709d806b3da544", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 3, + 0, + 14 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 3, 0, 14]: Table_cell: Method & Validation: Schuler", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 387.57, + 41.67267, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": ", 2020 Report", + "startOffset": 58478, + "endOffset": 58488, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c9f0425fedc77006093bed59fdc9995f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4, + 9, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4, 9, 0]: Paragraph: Method Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 632.66, + 32.957703, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "RAM 305/02 Validation ", + "textAfter": ".J., 1999 Report", + "startOffset": 31492, + "endOffset": 31500, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "32bb60a47b8f504ec1f40484ba4355b7", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 418, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[418, 2]: Paragraph: (Robinson N J, 2006)", + "color": null, + "positions": [ + { + "rectangle": [ + 447.80945, + 745.22, + 52.936768, + 11.017679 + ], + "pageNumber": 147 + } + ], + "textBefore": "(", + "textAfter": " J, 2006)", + "startOffset": 310491, + "endOffset": 310501, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4c23bd96cd22ba6bc451903c4aa924d0", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Burke S.R.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 3 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 3]: Table: #cols: 5, #rows: 8, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 658.7, + 46.641083, + 10.526819 + ], + "pageNumber": 16 + } + ], + "textBefore": "Validation: ", + "textAfter": " 1997 Report RJ2385B", + "startOffset": 29469, + "endOffset": 29480, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fc4e0e18df31e0309fd99396cffbec40", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 21]: Table_cell: Fenpropidin - Residue Method", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 218.97, + 50.09886, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "VV-124469 , CGA114900/4910 ", + "textAfter": " Syngenta - Jealott's", + "startOffset": 110253, + "endOffset": 110266, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "700928008d8de32c96876c8501c865ed", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 11, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 57 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 111834, + "endOffset": 111840, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f8ed546d079cb2bc57cd1da454e76790", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "ibacon GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 105, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[105, 1]: Paragraph: Test facility: ibacon GmbH,", + "color": null, + "positions": [ + { + "rectangle": [ + 129.5, + 424.53, + 62.08899, + 11.017679 + ], + "pageNumber": 65 + } + ], + "textBefore": "Test facility: ", + "textAfter": ", Arheilger Weg", + "startOffset": 125782, + "endOffset": 125793, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ff1d7ac06c4ac77444ab1c5364c6be6c", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 152, + 1, + 1 + ], + "closestHeadline": "Table A 11: Recovery results from method validation of azoxystrobin using the analytical method (quantification transition m/z 404 → 372) ", + "section": "[152, 1, 1]: Table: #cols: 6, #rows: 10, Matrix Fortification Level (mg/kg)", + "color": null, + "positions": [ + { + "rectangle": [ + 73.944, + 186.89993, + 28.874046, + 10.526819 + ], + "pageNumber": 77 + } + ], + "textBefore": "", + "textAfter": " muscle", + "startOffset": 150671, + "endOffset": 150677, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "df72f417a6434e5e38c18cbbb0e31fec", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta, Jealott’s Hill International Research Centre, Bracknell, Berkshire, RG42 6EY", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 409, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.6 Description of Methods for the Analysis of Air (KCP 5.2.6) ", + "section": "[409, 3, 1]: Paragraph: Report: Robinson N.J. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 417.1737, + 509.15, + 119.94556, + 11.017679 + ], + "pageNumber": 145 + }, + { + "rectangle": [ + 199.73, + 496.55, + 269.71832, + 11.017679 + ], + "pageNumber": 145 + } + ], + "textBefore": "Report Number GRM024.01A. ", + "textAfter": ", UK (Syngenta", + "startOffset": 305465, + "endOffset": 305551, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5e0ddaffd00b9ae6449ef3d97ee69a2d", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection Munchwilen AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 27]: Table_cell: Statement on Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9476, + 143.82, + 173.34409, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "VV-887260 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 101239, + "endOffset": 101277, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5cbb8c7fe2c9208d29dc94259118f1d4", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Weeren R.D.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 113, + 3, + 1 + ], + "closestHeadline": "A 2.1.2 Methods for post-authorization control and monitoring purposes (KCP 5.2) ", + "section": "[113, 3, 1]: Paragraph: Report: Validation of the", + "color": null, + "positions": [ + { + "rectangle": [ + 432.1551, + 438.93, + 57.81653, + 11.017679 + ], + "pageNumber": 68 + } + ], + "textBefore": "in Plant Materials, ", + "textAfter": ", Pelz S.,", + "startOffset": 131530, + "endOffset": 131541, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "42971847124f79431b9276f626b85987", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Gentle W", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 2, + 14 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 2, 14]: Table_cell: Method Burke S.R. and", + "color": null, + "positions": [ + { + "rectangle": [ + 463.6317, + 536.99, + 38.545258, + 10.526819 + ], + "pageNumber": 15 + } + ], + "textBefore": "Burke S.R. and ", + "textAfter": "., 1995 Report", + "startOffset": 28290, + "endOffset": 28298, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "66e1bf5d804ec56e8393b1aea489f783", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 57, + 1, + 0, + 9 + ], + "closestHeadline": "Table 5.3-7: Validated methods for soil ", + "section": "[57, 1, 0, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 420.09, + 31.03537, + 10.44714 + ], + "pageNumber": 39 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 80975, + "endOffset": 80981, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4c5808ba0a3a8dbf41c86ab008ddaa98", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 1, + 24, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 1, 24, 0]: Paragraph: Method: Burke S.R., 1996", + "color": null, + "positions": [ + { + "rectangle": [ + 449.14, + 483.71, + 40.985443, + 10.526819 + ], + "pageNumber": 14 + } + ], + "textBefore": "RJ1557B Burke S.R., ", + "textAfter": ", 1995 Report", + "startOffset": 27726, + "endOffset": 27736, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2eabb3f299377fa350e4bd01595866d4", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "hen", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 170, + 1 + ], + "closestHeadline": "Conclusion ", + "section": "[170, 1]: Paragraph: Analytical method RAM 399/01", + "color": null, + "positions": [ + { + "rectangle": [ + 492.73972, + 351.09, + 15.941742, + 11.017679 + ], + "pageNumber": 80 + } + ], + "textBefore": "and liver and ", + "textAfter": "’s egg. Results", + "startOffset": 156056, + "endOffset": 156059, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b22dccd751a100c6f62dac41c1ebd1b4", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "De Benedictis, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 13]: Table_cell: De Benedictis, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 245.60999, + 69.31164, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 99784, + "endOffset": 99801, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "29907c482345eb171ee6988f3804e776", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta - Jealott's Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 21]: Table_cell: Fenpropidin (CGA114900) - Residue", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 196.04999, + 95.422, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "CGA114900/4912 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 112919, + "endOffset": 112944, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "564f03a344136a591af087614b551a50", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 173, + 2, + 2 + ], + "closestHeadline": "A 2.1.2.2.2 Analytical method 2: DFG S19 ", + "section": "[173, 2, 2]: Paragraph: Validation of DFG Method", + "color": null, + "positions": [ + { + "rectangle": [ + 428.7014, + 579.35, + 40.89212, + 11.017679 + ], + "pageNumber": 81 + } + ], + "textBefore": "Report No. ZEN-9505V, ", + "textAfter": " File No. VV323618", + "startOffset": 157310, + "endOffset": 157318, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "062f037d60e360acf262eb7c2333817c", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 8, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 54 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 107936, + "endOffset": 107942, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "60f023a4321436271939b135ee023387", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Tilkes, M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 173, + 2, + 1 + ], + "closestHeadline": "A 2.1.2.2.2 Analytical method 2: DFG S19 ", + "section": "[173, 2, 1]: Paragraph: Report: Tilkes, M. (1997)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 623.18, + 45.551025, + 11.017679 + ], + "pageNumber": 81 + } + ], + "textBefore": "Report: ", + "textAfter": " (1997)", + "startOffset": 157103, + "endOffset": 157113, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "38ee7f774e3b5df272ae2d6a37c2b43d", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4]: Table: #cols: 5, #rows: 13, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 384.93, + 32.957703, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "RAM 305/03 Validation: ", + "textAfter": ".J., 1999 Report", + "startOffset": 31777, + "endOffset": 31785, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "84118ba615b5f710b99196363b408a8e", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 74, + 1, + 1, + 7 + ], + "closestHeadline": "Table 5.3-15: Validated methods for soil ", + "section": "[74, 1, 1, 7]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 425.11, + 582.83, + 31.03537, + 10.44714 + ], + "pageNumber": 44 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 94839, + "endOffset": 94845, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "270a94a02f6a66974064fb5b924bf374", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kleebaum K.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 321, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.8 Analytical method 8 - fenpropidin residues in royal jelly/ASS ", + "section": "[321, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 559.67, + 58.534103, + 11.017679 + ], + "pageNumber": 122 + } + ], + "textBefore": "Report: ", + "textAfter": " (2018), Fenpropidin –", + "startOffset": 254286, + "endOffset": 254297, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "871f5b50b2ecad38b3edecabde5fb3eb", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 299, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[299, 1]: Paragraph: Test facility: BioChem agrar,", + "color": null, + "positions": [ + { + "rectangle": [ + 129.5789, + 296.49002, + 67.37712, + 11.017679 + ], + "pageNumber": 115 + } + ], + "textBefore": "Test facility: ", + "textAfter": ", Labor für", + "startOffset": 238558, + "endOffset": 238571, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ad4327c1d07f692fbc5c1358929b44c7", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Kravchuk, O. Link, T.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 25]: Table_cell: Kravchuk, O. Link, T.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 178.28998, + 54.142555, + 10.526819 + ], + "pageNumber": 55 + }, + { + "rectangle": [ + 121.1, + 166.77002, + 32.539314, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 110329, + "endOffset": 110350, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "872a0bf9afd992169532475075db70be", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Clarke D.M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 0]: Table: #cols: 5, #rows: 6, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 159.41995, + 50.188416, + 10.526819 + ], + "pageNumber": 13 + } + ], + "textBefore": "RAM 243/02 Validation: ", + "textAfter": ", Sapiets A.,", + "startOffset": 25409, + "endOffset": 25420, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "124588e06ec1f60c057d3f112cf58059", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "goat", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 45, + 2, + 0 + ], + "closestHeadline": "Table 5.3-1: Relevant residue definitions for monitoring/enforcement and levels for which compliance is required ", + "section": "[45, 2, 0]: Paragraph: *The RMS, following evaluation", + "color": null, + "positions": [ + { + "rectangle": [ + 135.954, + 192.17996, + 16.046997, + 10.095 + ], + "pageNumber": 30 + } + ], + "textBefore": "‘the group of ", + "textAfter": " metabolites referred to", + "startOffset": 63718, + "endOffset": 63722, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "27f3ffdb595a249851b89c1166c71a9d", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Kleebaum, K.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 13]: Table_cell: Kleebaum, K.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 340.19, + 55.825798, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 104369, + "endOffset": 104381, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3deace17d4b9919c215c35a9582bb96b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Stahl F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 49 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 49]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 166.61996, + 31.03534, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "ZEN-0002V New data ", + "textAfter": ", 2017 Report", + "startOffset": 66574, + "endOffset": 66582, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ef9e2223e3c72058ae92eca20fc22b14", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection Munchwilen AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 15]: Table_cell: SF-1057/1 - Determination of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 305.75, + 173.34409, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "VV-889362 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 100755, + "endOffset": 100793, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "86dfb5c9e1e3832ffe8be22128facfe0", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Pelz S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 34 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 34]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 441.12848, + 364.77, + 27.69873, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "Validation: Weeren R., ", + "textAfter": ", 2001 Report", + "startOffset": 66224, + "endOffset": 66231, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fbe8e66ce35d2ff320610491fe30d4b3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Adolph, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 7]: Table_cell: Adolph, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 320.87, + 43.126793, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 99555, + "endOffset": 99565, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b6c5c986df80959b6270e243b13eacb0", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "GLP Testing Facility WMU", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 21]: Table_cell: A23317A – Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 230.48999, + 112.41699, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "VV-889304 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 100965, + "endOffset": 100989, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f4df951b8129c816a322fa152245893f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Author", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 83, + 1, + 7 + ], + "closestHeadline": "List of data relied on not submitted by the applicant but necessary for evaluation ", + "section": "[83, 1, 7]: Table_cell: Author", + "color": null, + "positions": [ + { + "rectangle": [ + 110.42, + 237.45001, + 28.366089, + 10.526819 + ], + "pageNumber": 59 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 114631, + "endOffset": 114637, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "318201ab4289280c698f993b90e077de", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 170, + 1 + ], + "closestHeadline": "Conclusion ", + "section": "[170, 1]: Paragraph: Analytical method RAM 399/01", + "color": null, + "positions": [ + { + "rectangle": [ + 234.49205, + 351.09, + 29.852188, + 11.017679 + ], + "pageNumber": 80 + } + ], + "textBefore": "animal matrices, including ", + "textAfter": " milk, fat and", + "startOffset": 155999, + "endOffset": 156005, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "880ec53d5bdcb08fc2d49bd4a5f4ef56", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "hen", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 150, + 1, + 0, + 1, + 2 + ], + "closestHeadline": "A 2.1.2.2.1.1 Method validation ", + "section": "[150, 1, 0, 1, 2]: Paragraph: and milk, lamb’s kidney", + "color": null, + "positions": [ + { + "rectangle": [ + 343.83878, + 687.62, + 15.842377, + 11.017679 + ], + "pageNumber": 77 + } + ], + "textBefore": "and liver and ", + "textAfter": "’s egg (LOQ", + "startOffset": 149254, + "endOffset": 149257, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b4ba52c50bd03c51c7e81df59cd31a60", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2]: Table: #cols: 5, #rows: 11, Component of residue definition:", + "color": null, + "positions": [ + { + "rectangle": [ + 74.29056, + 660.98, + 27.30037, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "Muscle (", + "textAfter": ")", + "startOffset": 76540, + "endOffset": 76546, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3ddda945d7b8a750e8c3e45e231604d4", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richardson", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 75, + 1, + 2, + 24 + ], + "closestHeadline": "Table 5.3-16: Validated methods for water ", + "section": "[75, 1, 2, 24]: Table_cell: GRM024.03A Richardson, 2007 Report", + "color": null, + "positions": [ + { + "rectangle": [ + 412.75, + 626.06, + 45.507324, + 10.526819 + ], + "pageNumber": 45 + } + ], + "textBefore": "GRM024.03A ", + "textAfter": ", 2007 Report", + "startOffset": 96489, + "endOffset": 96499, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "41f75c0e7c024ff283116e31b2c99535", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Fenpropidin EFSA", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 78 + ], + "closestHeadline": "5.4 References ", + "section": "[78]: Section: 5.4 References SANCO/3029/99 rev.4.", + "color": null, + "positions": [ + { + "rectangle": [ + 70.944, + 588.71, + 56.999985, + 10.929359 + ], + "pageNumber": 46 + }, + { + "rectangle": [ + 70.944, + 570.23, + 26.948631, + 11.017679 + ], + "pageNumber": 46 + } + ], + "textBefore": "EFSA, December, 2009. ", + "textAfter": ", 2007. Conclusion", + "startOffset": 98549, + "endOffset": 98565, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "948554f29f82db4bfdaf51909c67b491", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richards S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1, + 49 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1, 49]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 363.57, + 46.06775, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "New data Validation: ", + "textAfter": ", 2002 Report", + "startOffset": 75729, + "endOffset": 75740, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "47211d8d30763bc83cb90c138c3f1736", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Weeren R.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 49 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 49]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 213.17996, + 42.658722, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "Validation: ", + "textAfter": ", Pelz S.,", + "startOffset": 66523, + "endOffset": 66532, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "87e3ce7446c911250302fd0754afaa7e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 24 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 24]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 490.07, + 44.461487, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "RAM 305/03 Validation: ", + "textAfter": ", 2004 Report", + "startOffset": 71356, + "endOffset": 71366, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "043887aa60f5603ae8cf2568f3889573", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 21]: Table_cell: Fenpropidin - Chronic Toxicity", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 218.97, + 50.09886, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "VV-471136 , CGA114900_10975 ", + "textAfter": " BioChem agrar GmbH", + "startOffset": 106148, + "endOffset": 106161, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4df7c011f989b04010510f200bf47cf4", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Gasser, A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0, + 59 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0, 59]: Table_cell: Validation: Gasser, A., 2002a", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 200.1, + 41.812134, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "Gasser, A., 2002c ", + "textAfter": ", 2002d Reports:", + "startOffset": 45779, + "endOffset": 45789, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "28cde9e0533a583ada72da5020fe0b64", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2, + 27 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2, 27]: Table_cell: Zampakou M. (2020). Statement", + "color": null, + "positions": [ + { + "rectangle": [ + 241.76059, + 203.57999, + 103.52438, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "azoxystrobin/fenpropidin SE (150/280). ", + "textAfter": ", Muenchwilen AG,", + "startOffset": 17572, + "endOffset": 17596, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7527bca15c58ef7ed9a601e5bf648f09", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 5, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 51 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 103957, + "endOffset": 103963, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "bd63f0acb8d2fe2d2132261b341c5e36", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Dreßler K.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 29, + 1, + 24 + ], + "closestHeadline": "Table 5.2-9: Validated methods for the generation of pre-authorization data in support of A23317A in water and other matrices (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[29, 1, 24]: Table_cell: Method: Dreßler K., 2020", + "color": null, + "positions": [ + { + "rectangle": [ + 421.15, + 491.27, + 42.7583, + 10.526819 + ], + "pageNumber": 21 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2020 Report", + "startOffset": 41644, + "endOffset": 41654, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "866657184e3a33bbc0eec24ad05b507a", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Kleebaum, K.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 7]: Table_cell: Kleebaum, K.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 55.825798, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 104109, + "endOffset": 104121, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "85dd18214ce2f38237c875c4c5f8972e", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Bocksch, S", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 88, + 3, + 2 + ], + "closestHeadline": "A 2.1.1.5 Description of analytical methods for the determination of residues in support of residues studies (KCP1 5.1.2.5) ", + "section": "[88, 3, 2]: Paragraph: Bocksch, S (2008)", + "color": null, + "positions": [ + { + "rectangle": [ + 198.53, + 698.42, + 49.668976, + 11.017679 + ], + "pageNumber": 61 + } + ], + "textBefore": "", + "textAfter": " (2008)", + "startOffset": 116414, + "endOffset": 116424, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "09c45bcc5e6ea350478c94627c817927", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 15]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) -", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 294.23, + 61.43332, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "VV-890581 Test Facility ", + "textAfter": " GmbH GLP Unpublished", + "startOffset": 103420, + "endOffset": 103433, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b618197b1ee7abe2e33128c3e4b18cc6", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ryan J.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4]: Table: #cols: 5, #rows: 13, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 190.49997, + 29.970001, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": ", Sapiets A.", + "startOffset": 33863, + "endOffset": 33870, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "147ecf461d880cf2a2f5fd3b52bb58b8", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 5, + 2, + 1, + 3 + ], + "closestHeadline": "5.2 Methods used for the generation of pre-authorization data (KCP 5.1) ", + "section": "[5, 2, 1, 3]: Table_cell: Zampakou, M. 2021. SF-1057/1", + "color": null, + "positions": [ + { + "rectangle": [ + 200.09, + 684.62, + 37.27031, + 10.526819 + ], + "pageNumber": 7 + } + ], + "textBefore": "Issued date 04.01.2021, ", + "textAfter": " File No. VV-889362", + "startOffset": 12533, + "endOffset": 12541, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d16d287a7a550ae9cddab4e349d34e89", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4, 4]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 404.83, + 726.86, + 31.03537, + 10.44714 + ], + "pageNumber": 17 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 30914, + "endOffset": 30920, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "846f3383fd1ba13ace9a8f91e82912dd", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1, + 3 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1, 3]: Table_cell: Kettner R. (2011). Analytical", + "color": null, + "positions": [ + { + "rectangle": [ + 293.08444, + 475.55, + 121.3367, + 10.526819 + ], + "pageNumber": 11 + } + ], + "textBefore": "Formulation by HPLC. ", + "textAfter": ", Muenchwilen, Switzerland.", + "startOffset": 20787, + "endOffset": 20814, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0c36e5c9a3e41ebb9c62d5c44190f981", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 54 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 54]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 256.85995, + 32.957703, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "RAM 305/03 Validation: ", + "textAfter": ".J., 1999 Report", + "startOffset": 68372, + "endOffset": 68380, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d75327594a6c2e13013b1c1b89705bf4", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 150, + 2, + 2 + ], + "closestHeadline": "A 2.1.2.2.1.1 Method validation ", + "section": "[150, 2, 2]: Paragraph: Azoxystrobin and R230310: Validation", + "color": null, + "positions": [ + { + "rectangle": [ + 366.22427, + 566.15, + 31.773102, + 11.017679 + ], + "pageNumber": 77 + } + ], + "textBefore": "of Residues in ", + "textAfter": " Muscle, Fat and", + "startOffset": 149606, + "endOffset": 149612, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a95e3f254459330a388c178a223b8774", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta - Jealott's Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 21]: Table_cell: Residue Analytical Method for", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 196.04999, + 95.422, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "ICI5504/1651 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 108954, + "endOffset": 108979, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9ce7cf9aa4527e019a1e0fc31dad95f6", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Link T., Poperechna N., Crook S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 7]: Table_cell: Link T., Poperechna N.,", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 32.539314, + 10.526819 + ], + "pageNumber": 56 + }, + { + "rectangle": [ + 121.1, + 415.46, + 61.34365, + 10.526819 + ], + "pageNumber": 56 + }, + { + "rectangle": [ + 121.1, + 403.91, + 35.577126, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 110794, + "endOffset": 110826, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "39abb1af62421bb08f8b52f0ff271627", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Niefern-Öschelbronn", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 273, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[273, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 467.17142, + 720.74, + 71.785736, + 11.017679 + ], + "pageNumber": 106 + }, + { + "rectangle": [ + 70.824, + 707.9, + 25.789429, + 11.017679 + ], + "pageNumber": 106 + } + ], + "textBefore": "Strasse 24, 75223 ", + "textAfter": ", Germany", + "startOffset": 215990, + "endOffset": 216009, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "92455c46b2729a205f03cb7961c04dc9", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "SGS Institut Fresenius GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 27]: Table_cell: Azoxystrobin - Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 132.29999, + 119.769135, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "ICI5504_12486 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 110583, + "endOffset": 110610, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "df542e3e7001bfc3b917962471447f37", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5, + 16 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5, 16]: Table_cell: Milk (bovine)", + "color": null, + "positions": [ + { + "rectangle": [ + 156.36656, + 530.75, + 27.300354, + 10.526819 + ], + "pageNumber": 18 + } + ], + "textBefore": "Milk (", + "textAfter": ")", + "startOffset": 35102, + "endOffset": 35108, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fdc65152c0570966b39d0d83e9f7d259", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kovacevic E.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 333, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.10 Analytical method 10 – ECO_029_03A ", + "section": "[333, 2, 1]: Paragraph: Report: Kovacevic E. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 214.62001, + 59.74852, + 11.017679 + ], + "pageNumber": 125 + } + ], + "textBefore": "Report: ", + "textAfter": " (2018), Fenpropidin –", + "startOffset": 262219, + "endOffset": 262231, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7298ba0c6d703659deac45c4c651098d", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "livestock", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 3, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 3, 0]: Paragraph: (a): Residue definition for", + "color": null, + "positions": [ + { + "rectangle": [ + 249.60306, + 308.73, + 31.642944, + 10.095 + ], + "pageNumber": 18 + } + ], + "textBefore": "potentially fed to ", + "textAfter": " as assessed in", + "startOffset": 37034, + "endOffset": 37043, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d930d8ac10a64f3d0c42e124df2b850d", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Richards, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 25]: Table_cell: Richards, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 155.37, + 48.545036, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 109016, + "endOffset": 109028, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ef5b4d1886bc140d15388b840e0722cc", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Crawford, N.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 25]: Table_cell: Crawford, N.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 155.37, + 53.046944, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 112981, + "endOffset": 112993, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "200a913baa9b8285cd86a0775e19e7c7", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richards S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2, + 29 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2, 29]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 399.33, + 46.06775, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "New data Validation: ", + "textAfter": ", 2002 Report", + "startOffset": 76951, + "endOffset": 76962, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1b6d0a9b7d7b1b3acd7497bc44b19008", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4]: Table: #cols: 5, #rows: 13, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 422.49, + 44.461487, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "Method: ", + "textAfter": " et al., 2004", + "startOffset": 31723, + "endOffset": 31733, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b7b2dddd5617615f55c6adce72364ab9", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 9 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 623.78, + 31.03537, + 10.44714 + ], + "pageNumber": 31 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 65496, + "endOffset": 65502, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "12ecbefcaacc5a95dc8201ada19b7d93", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5]: Table: #cols: 5, #rows: 9, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 530.75, + 35.609985, + 10.526819 + ], + "pageNumber": 18 + } + ], + "textBefore": "Method: ", + "textAfter": " 2002 Report RAM", + "startOffset": 35138, + "endOffset": 35146, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6de0f491ae7d315b5b684cb4c97bc034", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 21]: Table_cell: Residue Analytical Method for", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 196.04999, + 50.09886, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "VV-124385 , ICI5504/1651 ", + "textAfter": " Syngenta - Jealott's", + "startOffset": 108940, + "endOffset": 108953, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "063ce0a25fac74ff428ec0376a6fcfff", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kang J.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 14 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 14]: Table_cell: ILV: Kang J., 2003", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 660.98, + 30.547363, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "ILV: ", + "textAfter": ", 2003 Report", + "startOffset": 71068, + "endOffset": 71075, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ce1ec20466d9b93675b7ae09b23d66c6", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 163, + 1 + ], + "closestHeadline": "Table A 12: Recovery results from independent laboratory validation of azoxystrobin using the analytical method ", + "section": "[163, 1]: Table: #cols: 6, #rows: 8, Matrix Fortification Level (mg/kg)", + "color": null, + "positions": [ + { + "rectangle": [ + 73.944, + 188.81998, + 28.874046, + 10.526819 + ], + "pageNumber": 79 + } + ], + "textBefore": "", + "textAfter": " milk", + "startOffset": 154327, + "endOffset": 154333, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "49e97431989725daa28b0a0ed362d340", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Schuler, L.", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 7, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 13]: Table_cell: Schuler, L.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 328.67, + 44.249977, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 106982, + "endOffset": 106993, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ef0c20de5db9f1d8c977fc7641376d66", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "D-04827 Gerichshain", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 92, + 2 + ], + "closestHeadline": "A3. Test Facilities ", + "section": "[92, 2]: Paragraph: BioChem agrar GmbH, Kupferstr.", + "color": null, + "positions": [ + { + "rectangle": [ + 395.51294, + 532.91, + 95.10358, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "GmbH, Kupferstr. 6, ", + "textAfter": ", Germany Field", + "startOffset": 119050, + "endOffset": 119069, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "376214d20da348e880c03c88edad3a7b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Atkinson, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 13]: Table_cell: Atkinson, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 340.19, + 49.730278, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 108407, + "endOffset": 108419, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c77de07fa6646fde040969a22c36de6a", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Hargreaves, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 19]: Table_cell: Hargreaves, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 253.53, + 58.604652, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 110078, + "endOffset": 110092, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d26a0be2e59135960cdeb36b815a1c2e", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 27]: Table_cell: Azoxystrobin : Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 109.26002, + 50.09886, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "VV-321041 , ICI5504/0011 ", + "textAfter": " Syngenta - Jealott's", + "startOffset": 113167, + "endOffset": 113180, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "32bae9c945b7f74aebef40e10f1516cb", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Tillkes M", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1, + 29 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1, 29]: Table_cell: Validation: Tillkes M., 1997", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 555.83, + 39.053223, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "Validation: ", + "textAfter": "., 1997 Report", + "startOffset": 75309, + "endOffset": 75318, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e0427583e5173aca28873c4b72d81cee", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Dieterle, R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0]: Table: #cols: 5, #rows: 14, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 319.28998, + 46.320007, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "REM 164.04 Validation: ", + "textAfter": ", 1993 Report:", + "startOffset": 45076, + "endOffset": 45088, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0a79f477fbf1b072364a2945190ce198", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Wydra V.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 14 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 14]: Table_cell: Method & Validation: Pupp", + "color": null, + "positions": [ + { + "rectangle": [ + 459.958, + 584.15, + 39.282288, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "Validation: Pupp A., ", + "textAfter": ", 2008 Report", + "startOffset": 56922, + "endOffset": 56930, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3e8d9ebb051589ae2a7bbbf5160baed2", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2]: Table: #cols: 5, #rows: 11, Component of residue definition:", + "color": null, + "positions": [ + { + "rectangle": [ + 74.29056, + 457.31, + 27.30037, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "Fat (", + "textAfter": ")", + "startOffset": 76854, + "endOffset": 76860, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6a5bafe4bd2183bdde560a4ab5f6f3c3", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0, + 9 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 407.59, + 567.95, + 31.0542, + 10.44714 + ], + "pageNumber": 22 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 44019, + "endOffset": 44025, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7b480426478a87a09e483f5431bda19e", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Dieterle R .", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 32, + 1, + 1 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 1]: Table: #cols: 5, #rows: 4, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 657.98, + 46.26422, + 10.526819 + ], + "pageNumber": 23 + } + ], + "textBefore": "", + "textAfter": ", 1992 Report:", + "startOffset": 46622, + "endOffset": 46634, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4e6c1203b4700ef76d800e1344cdd9c0", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eutinger Str. 24, 75223 Niefern-Öschelbronn", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 291, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[291, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 337.0299, + 460.31, + 199.07892, + 11.017679 + ], + "pageNumber": 112 + } + ], + "textBefore": "Services Ecotox GmbH, ", + "textAfter": ", Germany", + "startOffset": 230918, + "endOffset": 230961, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3a59f22391440a7f7782435f2e8fa6cc", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 15]: Table_cell: SF-1057/1 - Determination of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 305.75, + 50.09886, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "Document No. VV-889362 ", + "textAfter": " Syngenta Crop Protection", + "startOffset": 100741, + "endOffset": 100754, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e64a2aac127dc82bedea517c826ce05d", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N.J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 39, + 0 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 39, 0]: Paragraph: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 315.92996, + 56.91153, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "Method: ", + "textAfter": " et al., 1999", + "startOffset": 71739, + "endOffset": 71752, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "78482f19179c5f2cf566e92a2448d855", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 4, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 50 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 102758, + "endOffset": 102764, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4ed5e3bcc9b09c6201698b47fad21df4", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 38, + 1 + ], + "closestHeadline": "Table 5.2-15: Validated methods for the generation of pre-authorization data for CGA289267 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[38, 1]: Table: #cols: 5, #rows: 6, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 421.27, + 615.14, + 43.23645, + 10.526819 + ], + "pageNumber": 25 + } + ], + "textBefore": "Method: ", + "textAfter": " 2005 Report: REM", + "startOffset": 53533, + "endOffset": 53545, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5c450d7136d72ba7f74abc003e89a4e7", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 70, + 1, + 9 + ], + "closestHeadline": "Table 5.3-13: Validated methods for fenpropidin in food of animal origin ", + "section": "[70, 1, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 443.11, + 710.42, + 31.03537, + 10.44714 + ], + "pageNumber": 43 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 90548, + "endOffset": 90554, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1a67c3ba1bd870d8d068a0b36d169079", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2, + 15 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2, 15]: Table_cell: De Benedictis S. (2011).", + "color": null, + "positions": [ + { + "rectangle": [ + 482.4445, + 399.45, + 37.160736, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "Issued date 24.11.2011, ", + "textAfter": " File No. VV-400661", + "startOffset": 17275, + "endOffset": 17283, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "24b977c0317d07eeb9bd9229dd601440", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 409, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.6 Description of Methods for the Analysis of Air (KCP 5.2.6) ", + "section": "[409, 3, 1]: Paragraph: Report: Robinson N.J. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 495.99957, + 496.55, + 40.89215, + 11.017679 + ], + "pageNumber": 145 + } + ], + "textBefore": "6EY, UK (", + "textAfter": " File No. VV-125646)", + "startOffset": 305557, + "endOffset": 305565, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3c62ac08110298d4a6af753a7780a040", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richardson", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 75, + 1, + 1, + 14 + ], + "closestHeadline": "Table 5.3-16: Validated methods for water ", + "section": "[75, 1, 1, 14]: Table_cell: GRM024.03A Richardson, 2007 Report", + "color": null, + "positions": [ + { + "rectangle": [ + 412.75, + 237.17996, + 45.507324, + 10.526819 + ], + "pageNumber": 44 + } + ], + "textBefore": "GRM024.03A ", + "textAfter": ", 2007 Report", + "startOffset": 95653, + "endOffset": 95663, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f04edc6ddfcfe250b98f124c7964d088", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1, + 27 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1, 27]: Table_cell: Zampakou M. (2020). Statement", + "color": null, + "positions": [ + { + "rectangle": [ + 199.85, + 75.75999, + 118.91113, + 10.526819 + ], + "pageNumber": 11 + } + ], + "textBefore": "(azoxystrobin/fenpropidin SE (150/280)). ", + "textAfter": ", Muenchwilen, Switzerland,", + "startOffset": 21493, + "endOffset": 21520, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9060203917597f361ca31e1739a759ee", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2, + 29 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2, 29]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 457.31, + 35.610016, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "Method: ", + "textAfter": " 2002 Report RAM", + "startOffset": 76898, + "endOffset": 76906, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5c3505ce74ac84d55745cd48b9b5d647", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 14, + 1, + 2 + ], + "closestHeadline": "Table 5.2-2: Methods suitable for the determination of Toluene in plant protection product (PPP) A23317A ", + "section": "[14, 1, 2]: Table_cell: Author(s), year", + "color": null, + "positions": [ + { + "rectangle": [ + 74.064, + 479.75, + 31.035362, + 10.44714 + ], + "pageNumber": 10 + } + ], + "textBefore": "", + "textAfter": "(s), year", + "startOffset": 18755, + "endOffset": 18761, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "41f7254dbd3c4e05709f3d1436eb09e5", + "type": "published_information", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Mass Spectrometry", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 306, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[306, 1]: Paragraph: Water samples are analysed", + "color": null, + "positions": [ + { + "rectangle": [ + 423.13248, + 279.78, + 85.97949, + 11.017679 + ], + "pageNumber": 118 + } + ], + "textBefore": "(LC) coupled with ", + "textAfter": " (MS). The analytical", + "startOffset": 246121, + "endOffset": 246138, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4dea593cc607c62da03bb433cae517fa", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "livestock", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 45, + 2, + 0 + ], + "closestHeadline": "Table 5.3-1: Relevant residue definitions for monitoring/enforcement and levels for which compliance is required ", + "section": "[45, 2, 0]: Paragraph: *The RMS, following evaluation", + "color": null, + "positions": [ + { + "rectangle": [ + 235.89603, + 150.77994, + 31.669952, + 10.095 + ], + "pageNumber": 30 + } + ], + "textBefore": "potentially fed to ", + "textAfter": " as assessed in", + "startOffset": 64255, + "endOffset": 64264, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4b7dce18e6165de5274113dfd2f80481", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Pupp A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 344, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.12 Analytical method 12 - fenpropidin residues in water ", + "section": "[344, 2, 1]: Paragraph: Report: Pupp A., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 100.00002, + 35.515686, + 11.017679 + ], + "pageNumber": 129 + } + ], + "textBefore": "Report: ", + "textAfter": ", Wydra V.", + "startOffset": 271489, + "endOffset": 271496, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "96eacccd68b32c1433620e442332b0d0", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta - Jealott's Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 27]: Table_cell: Azoxystrobin : Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 109.26002, + 95.422, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "ICI5504/0011 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 113181, + "endOffset": 113206, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7d6d112b238ded7b80b1e05babe82af9", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 149, + 1, + 3 + ], + "closestHeadline": "A 2.1.2.2.1 Analytical method 1: RAM 399/01 ", + "section": "[149, 1, 3]: Paragraph: Residue Analytical Method for", + "color": null, + "positions": [ + { + "rectangle": [ + 339.33075, + 373.17, + 31.773102, + 11.017679 + ], + "pageNumber": 76 + } + ], + "textBefore": "and R230310 in ", + "textAfter": " Muscle Tissue, Fat", + "startOffset": 148761, + "endOffset": 148767, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b638a01980faf798da8a3bef48001ba8", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Gasser, A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0, + 59 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0, 59]: Table_cell: Validation: Gasser, A., 2002a", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 223.13998, + 41.880005, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "Gasser, A., 2002a ", + "textAfter": ", 2002b Gasser,", + "startOffset": 45743, + "endOffset": 45753, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f7065a12bbffa9fed01105a1b0aa4072", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Report Zampakou, M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 5, + 2, + 1 + ], + "closestHeadline": "5.2 Methods used for the generation of pre-authorization data (KCP 5.1) ", + "section": "[5, 2, 1]: Table: #cols: 2, #rows: 12, Reference: KCP 5.1.1 Report", + "color": null, + "positions": [ + { + "rectangle": [ + 76.824, + 719.18, + 27.22068, + 10.526819 + ], + "pageNumber": 7 + }, + { + "rectangle": [ + 200.09, + 719.18, + 59.25, + 10.526819 + ], + "pageNumber": 7 + } + ], + "textBefore": "Reference: KCP 5.1.1 ", + "textAfter": " 2021. SF-1057/1 –", + "startOffset": 12308, + "endOffset": 12327, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5c2f2afd3f63f7c6ac545bcba113a816", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Purity:", + "reason": "hint only", + "matchedRule": "ETC.0.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 90, + 4 + ], + "closestHeadline": "I. MATERIAL AND METHODS ", + "section": "[90, 4]: Paragraph: Content 252 g/L Source:", + "color": null, + "positions": [ + { + "rectangle": [ + 76.224, + 707.42, + 30.06192, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "Reference: ASJ10008-03 (Batch) ", + "textAfter": " 99.7% Storage Conditions:", + "startOffset": 118647, + "endOffset": 118654, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ccfd1e22dbf15a1f4d291782ff918a00", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Gizler A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 24 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 24]: Table_cell: ILV: Lakaschus S., Gizler", + "color": null, + "positions": [ + { + "rectangle": [ + 451.19806, + 452.15, + 37.14087, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "ILV: Lakaschus S., ", + "textAfter": ", 2017 Report", + "startOffset": 65990, + "endOffset": 65999, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "16e3abc1b2408b0fcfd79825f33b1fb5", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Zampakou M.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 8, + 1, + 4 + ], + "closestHeadline": "Table 5.2-1: Methods suitable for the determination of the active substances Azoxystrobin and Fenpropidin in plant protection product A23317A ", + "section": "[8, 1, 4]: Table_cell: Zampakou M., 2020", + "color": null, + "positions": [ + { + "rectangle": [ + 272.33, + 687.86, + 59.26999, + 10.526819 + ], + "pageNumber": 8 + } + ], + "textBefore": "", + "textAfter": " 2020", + "startOffset": 14361, + "endOffset": 14373, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6728cef6d434b3eb1e5ca0d0a29998a7", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Hargreaves", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 74, + 1, + 1, + 11 + ], + "closestHeadline": "Table 5.3-15: Validated methods for soil ", + "section": "[74, 1, 1, 11]: Table_cell: Method: GRM024.02A Hargreaves, 2007", + "color": null, + "positions": [ + { + "rectangle": [ + 423.07, + 527.63, + 45.567047, + 10.526819 + ], + "pageNumber": 44 + } + ], + "textBefore": "Method: GRM024.02A ", + "textAfter": ", 2007 Report", + "startOffset": 94912, + "endOffset": 94922, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ead84b9d658cc56e17cc596eabc08a5e", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 168, + 1 + ], + "closestHeadline": "Limit of Quantification ", + "section": "[168, 1]: Paragraph: The limit of quantification", + "color": null, + "positions": [ + { + "rectangle": [ + 276.38882, + 466.79, + 29.852142, + 11.017679 + ], + "pageNumber": 80 + } + ], + "textBefore": "for azoxystrobin in ", + "textAfter": " milk and muscle", + "startOffset": 155617, + "endOffset": 155623, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "45006b76cb062aa9a7482de3a1669705", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Amic, S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 70, + 1 + ], + "closestHeadline": "Table 5.3-13: Validated methods for fenpropidin in food of animal origin ", + "section": "[70, 1]: Table: #cols: 5, #rows: 16, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 423.91, + 616.34, + 35.238464, + 10.526819 + ], + "pageNumber": 43 + } + ], + "textBefore": "Report: RJ3636B ILV: ", + "textAfter": " (2006) Report: SYN/FEN/05001", + "startOffset": 90702, + "endOffset": 90710, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0ef53d695dd5322deafed61751610168", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "livestock", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 37, + 1, + 5, + 1 + ], + "closestHeadline": "Table 5.2-14: Statement on extraction efficiency ", + "section": "[37, 1, 5, 1]: Paragraph: Due to differences in", + "color": null, + "positions": [ + { + "rectangle": [ + 355.18127, + 244.37997, + 36.01544, + 10.526819 + ], + "pageNumber": 24 + } + ], + "textBefore": "systems used between ", + "textAfter": " metabolism studies and", + "startOffset": 52055, + "endOffset": 52064, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "bf9dc8b5876574a2f4c60c029231fd73", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 27]: Table_cell: Azoxystrobin/fenpropidin SE (A23317A) –", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 132.29999, + 61.43332, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "VV-891648 Test Facility ", + "textAfter": " GmbH GLP Unpublished", + "startOffset": 106468, + "endOffset": 106481, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a6ad03ccd66aa5f946a475afc9dd4a9c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N.J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 44, + 0 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 44, 0]: Paragraph: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 254.69998, + 56.91153, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "Method: ", + "textAfter": " et al., 1999", + "startOffset": 70457, + "endOffset": 70470, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e029fa4718f76224cef648f39d956167", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 44, + 0 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 44, 0]: Paragraph: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 231.77994, + 44.461487, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "Report RAM 305/02 ", + "textAfter": " et al., 2004", + "startOffset": 70502, + "endOffset": 70512, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2234c245e2939815431456ec7f971455", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 2, + 9 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 2, 9]: Table_cell: Method: Burke S.R., 1997", + "color": null, + "positions": [ + { + "rectangle": [ + 449.14, + 606.71, + 40.985443, + 10.526819 + ], + "pageNumber": 15 + } + ], + "textBefore": "RJ1557B Burke S.R., ", + "textAfter": ", 1995 /Report", + "startOffset": 28130, + "endOffset": 28140, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f456fb4491b4476fa10d98ba5530892a", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Walser, M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 39, + 1 + ], + "closestHeadline": "Table 5.2-16: Validated methods for the generation of pre-authorization data for CGA289268 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[39, 1]: Table: #cols: 5, #rows: 6, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 405.67, + 430.41, + 44.561066, + 10.526819 + ], + "pageNumber": 26 + } + ], + "textBefore": "REM 164.06 Validation: ", + "textAfter": " (1999d) Report: 201/99", + "startOffset": 55767, + "endOffset": 55777, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9865e3ed079273bb50edfb3a811e0338", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 226, + 2, + 1 + ], + "closestHeadline": "A 2.1.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[226, 2, 1]: Paragraph: Report: Azoxystrobin - Residue", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 309.57004, + 41.013626, + 11.017679 + ], + "pageNumber": 93 + } + ], + "textBefore": "Report No. GRM057.01A, ", + "textAfter": " File No. ICI5504_11505", + "startOffset": 182642, + "endOffset": 182650, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3baf1f3625f152cb08e898ca2b885785", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Jealott’s Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 360, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[360, 3, 1]: Paragraph: Report: Hargreaves S. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 232.11032, + 623.3, + 59.538696, + 11.017679 + ], + "pageNumber": 134 + } + ], + "textBefore": "Number GRM024.02A. Syngenta, ", + "textAfter": " Inernational Research Centre,", + "startOffset": 280133, + "endOffset": 280147, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "95110ec2384f392f7c5b0c5452012827", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eutinger Str. 24", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 92, + 1 + ], + "closestHeadline": "A3. Test Facilities ", + "section": "[92, 1]: Paragraph: Field Phase Eurofins-GAB GmbH,", + "color": null, + "positions": [ + { + "rectangle": [ + 334.15, + 558.23, + 69.92737, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "Phase Eurofins-GAB GmbH, ", + "textAfter": ", 75223 Niefern", + "startOffset": 118915, + "endOffset": 118931, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "35bf322b10ca0161db638bb6980f3e04", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schmidt, K.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 297, + 2, + 0 + ], + "closestHeadline": "A 2.2.1.6.5 Analytical method 5 - A23317A - fenpropidin residues in bee larval diet ", + "section": "[297, 2, 0]: Paragraph: Reference: KCP 5.1.2.6 Report", + "color": null, + "positions": [ + { + "rectangle": [ + 415.15, + 548.87, + 53.13553, + 11.017679 + ], + "pageNumber": 115 + } + ], + "textBefore": "- Final Report. ", + "textAfter": " (2021) Report no.", + "startOffset": 238107, + "endOffset": 238118, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "21282bac387116ed770e5474c8de275c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kirkwood A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 311, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.7 Analytical method 7 - fenpropidin residues in water ", + "section": "[311, 2, 1]: Paragraph: Report: Kirkwood A. (2018)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 559.67, + 58.158737, + 11.017679 + ], + "pageNumber": 120 + } + ], + "textBefore": "Report: ", + "textAfter": " (2018) Fenpropidin -", + "startOffset": 250061, + "endOffset": 250072, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3e4792d8af1d179776fa4b81df005481", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services Ecotox GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 282, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[282, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 131.18, + 593.51, + 205.34402, + 11.017679 + ], + "pageNumber": 109 + } + ], + "textBefore": "Test facility: ", + "textAfter": ", Eutinger Strasse", + "startOffset": 223238, + "endOffset": 223279, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "cee3ac4b98c07e4284bae89fad3d4b5d", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 9]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) –", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 380.87, + 50.09886, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "Document No VV-899655 ", + "textAfter": " Eurofins Agroscience Services", + "startOffset": 105605, + "endOffset": 105618, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "070738305a36595048e10168c7adffde", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta - Jealott's Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 21]: Table_cell: Residue Analytical Method for", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 196.04999, + 95.422, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "ICI5504/1651 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 102364, + "endOffset": 102389, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "25f0f11bb803112de06b22720bd6531b", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richards S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 3, + 14 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 3, 14]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 602.99, + 46.035156, + 10.526819 + ], + "pageNumber": 38 + } + ], + "textBefore": "New data Validation: ", + "textAfter": ", 2002 Report", + "startOffset": 77827, + "endOffset": 77838, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "414abd4bdc44fa9031aa20d2adb01012", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 321, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.8 Analytical method 8 - fenpropidin residues in royal jelly/ASS ", + "section": "[321, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 516.1824, + 521.75, + 20.71112, + 11.017679 + ], + "pageNumber": 122 + }, + { + "rectangle": [ + 199.73, + 508.91, + 23.967865, + 11.017679 + ], + "pageNumber": 122 + } + ], + "textBefore": "Gerichshain, Germany (", + "textAfter": " File No. VV-471037)", + "startOffset": 254558, + "endOffset": 254566, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "36b0378d1343a078579f1501cd41a58b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Author", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 82, + 1, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and not relied on ", + "section": "[82, 1, 7]: Table_cell: Author", + "color": null, + "positions": [ + { + "rectangle": [ + 110.42, + 66.66398, + 28.366089, + 10.526819 + ], + "pageNumber": 58 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 114141, + "endOffset": 114147, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "11d9d712871dff3d276f35d90330135c", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Gasser, A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0, + 59 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0, 59]: Table_cell: Validation: Gasser, A., 2002a", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 234.65994, + 41.880005, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "Validation: ", + "textAfter": ", 2002a Gasser,", + "startOffset": 45725, + "endOffset": 45735, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1a5abbe274962d5621868166c75e3fc0", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 200, + 3, + 4 + ], + "closestHeadline": "A 2.1.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[200, 3, 4]: Paragraph: Syngenta File No. ICI5504_12487", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 427.77, + 41.013626, + 11.017679 + ], + "pageNumber": 86 + } + ], + "textBefore": "", + "textAfter": " File No. ICI5504_12487", + "startOffset": 168017, + "endOffset": 168025, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2f94e93e3fc43a097e93ba13c877768a", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richardson M", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 393, + 3 + ], + "closestHeadline": "Conclusion ", + "section": "[393, 3]: Paragraph: (Richardson M, 2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 445.01944, + 136.96004, + 62.696136, + 11.017679 + ], + "pageNumber": 140 + } + ], + "textBefore": "(", + "textAfter": ", 2007)", + "startOffset": 294823, + "endOffset": 294835, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "611bcc200d2ad6da40010ee810fed380", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Marini J.P.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 9 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 9]: Table_cell: Method & Validation: Marini", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 647.9, + 44.092896, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": ", 2016 Report", + "startOffset": 56803, + "endOffset": 56814, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c30af97d61b1ff98061a7be9459ee18a", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 27]: Table_cell: Azoxystrobin/fenpropidin SE (A23317A) –", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 132.29999, + 50.09886, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "Document No. VV-891648 ", + "textAfter": " BioChem agrar GmbH", + "startOffset": 106454, + "endOffset": 106467, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c50c50cd397df6f531966a61a1da14df", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 5, + 2, + 1, + 15 + ], + "closestHeadline": "5.2 Methods used for the generation of pre-authorization data (KCP 5.1) ", + "section": "[5, 2, 1, 15]: Table_cell: Zampakou, M. 2020. Azoxystrobin/", + "color": null, + "positions": [ + { + "rectangle": [ + 325.1403, + 495.47, + 120.227325, + 10.526819 + ], + "pageNumber": 7 + } + ], + "textBefore": "Analytical Method SF-1057/1. ", + "textAfter": ", Muenchwilen, Switzerland.", + "startOffset": 12750, + "endOffset": 12777, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6da624d4a745b307a25ba1aec333080b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Amic S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 59, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.3-8: Validated methods for water ", + "section": "[59, 1, 0, 19]: Table_cell: Method: Amic S., 2012", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 544.07, + 32.728546, + 10.526819 + ], + "pageNumber": 40 + } + ], + "textBefore": "New data Validation: ", + "textAfter": ", 2012a /", + "startOffset": 82474, + "endOffset": 82481, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "21eeaf4f2c82be9325f6c5c792d9b0d3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 14 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 14]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 637.94, + 44.461487, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "Report RAM 305/02 ", + "textAfter": " et al., 2004", + "startOffset": 69410, + "endOffset": 69420, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8ce903fd2e0ef0a12524bb133b7c49a3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Tillkes M", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1, + 14 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1, 14]: Table_cell: Validation: Tillkes M., 1997", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 660.98, + 39.053223, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "Validation: ", + "textAfter": "., 1997 Report", + "startOffset": 75127, + "endOffset": 75136, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2cbc529c50d82034f9663c9c0220900e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services Ecotox GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 273, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[273, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 131.18, + 720.74, + 205.34402, + 11.017679 + ], + "pageNumber": 106 + } + ], + "textBefore": "Test facility: ", + "textAfter": ", Eutinger Strasse", + "startOffset": 215920, + "endOffset": 215961, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "07ca4382be0ee499f5a0c239c7501941", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kettner R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1, + 3 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1, 3]: Table_cell: Kettner R. (2011). Analytical", + "color": null, + "positions": [ + { + "rectangle": [ + 197.09, + 487.07, + 42.539154, + 10.526819 + ], + "pageNumber": 11 + } + ], + "textBefore": "", + "textAfter": " (2011). Analytical Method", + "startOffset": 20689, + "endOffset": 20699, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a59ed7c6442de4c21ba4b14362d5b6ec", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Royer, A.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 13]: Table_cell: Royer, A.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 340.19, + 39.152763, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 111047, + "endOffset": 111056, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b1e23aa86fbe5120bd46a1efd8eb4dcc", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 29 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 29]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 371.37, + 44.461487, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "1999 Report RJ2770B ", + "textAfter": ", 2004 Report", + "startOffset": 70034, + "endOffset": 70044, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6af93c14d4608d0a2f3cb485ddf8e471", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 70, + 1 + ], + "closestHeadline": "Table 5.3-13: Validated methods for fenpropidin in food of animal origin ", + "section": "[70, 1]: Table: #cols: 5, #rows: 16, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 423.91, + 662.3, + 43.23645, + 10.526819 + ], + "pageNumber": 43 + } + ], + "textBefore": "REM 164.10 Validation: ", + "textAfter": " 2005 Report: RJ3636B", + "startOffset": 90663, + "endOffset": 90675, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "22764425acf8d86ca4d66548b5614375", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta - Jealott's Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 21]: Table_cell: Fenpropidin - Residue Method", + "color": null, + "positions": [ + { + "rectangle": [ + 304.97, + 218.97, + 95.390594, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "CGA114900/4910 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 110267, + "endOffset": 110292, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d09154ed22574db93f765b1f0635d98c", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 2, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 48 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 100231, + "endOffset": 100237, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "bca6d3cb15af0492f89f613148c039a5", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "hen", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5, + 21 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5, 21]: Table_cell: Eggs (hen)", + "color": null, + "positions": [ + { + "rectangle": [ + 156.36656, + 501.59, + 14.432037, + 10.526819 + ], + "pageNumber": 18 + } + ], + "textBefore": "Eggs (", + "textAfter": ")", + "startOffset": 35317, + "endOffset": 35320, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "732e8c3491e6831bdf1181de08e13246", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Ehmke A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 111, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[111, 2]: Paragraph: (Ehmke A., 2015)", + "color": null, + "positions": [ + { + "rectangle": [ + 463.06, + 462.95, + 44.667847, + 11.017679 + ], + "pageNumber": 67 + } + ], + "textBefore": "(", + "textAfter": ", 2015)", + "startOffset": 129771, + "endOffset": 129779, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0b38ccc09694165d6cf9ad810fee42da", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 344, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.12 Analytical method 12 - fenpropidin residues in water ", + "section": "[344, 2, 1]: Paragraph: Report: Pupp A., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 475.07864, + 74.680016, + 40.89212, + 11.017679 + ], + "pageNumber": 129 + } + ], + "textBefore": "Rossdorf Germany (", + "textAfter": " File", + "startOffset": 271687, + "endOffset": 271695, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f451668d0e04c6b880d68d6577fe174b", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 27]: Table_cell: Validation of the DFG", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 109.26002, + 50.09886, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "VV-327232 , ICI5504/1368 ", + "textAfter": " Dr. Specht &", + "startOffset": 107844, + "endOffset": 107857, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "306efc30c69af5bfab1a6b1d5ef9236f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Amic, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 25]: Table_cell: Amic, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 166.77002, + 35.238503, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 111557, + "endOffset": 111565, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "40d33cfcab2c4982cc6d36fe4ac47b84", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Croucher A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 59 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 59]: Table_cell: ILV: Kang J., 2003", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 141.17996, + 49.461426, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "2003 Report CEMR-1708 ", + "textAfter": ", 2002 Report", + "startOffset": 68651, + "endOffset": 68662, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f45af46acefca2f3df633b98b0c0dfef", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Burke S.R.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 1, + 24, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 1, 24, 0]: Paragraph: Method: Burke S.R., 1996", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 550.19, + 46.679993, + 10.526819 + ], + "pageNumber": 14 + } + ], + "textBefore": "Method: ", + "textAfter": " 1996 Report No.", + "startOffset": 27618, + "endOffset": 27629, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2b17a7e36a4ef0fdfcfbf27eba522404", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "CEM Analytical Services", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 15]: Table_cell: Fenpropidin (CGA114900) - Independent", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 282.71, + 102.17975, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "CGA114900_10695 Test Facility ", + "textAfter": ", Ltd. GLP", + "startOffset": 112609, + "endOffset": 112632, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "474697a4892ada35eed43b2cf1f66340", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 15]: Table_cell: Fenpropidin - Repeated Exposure", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 294.23, + 50.09886, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "VV-470837 , CGA114900_10971 ", + "textAfter": " BioChem agrar GmbH", + "startOffset": 104595, + "endOffset": 104608, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c377f17356dc00553ca3b6bafe3c54fe", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Royer A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 374, + 2, + 1 + ], + "closestHeadline": "A 1.1.1.1.1.2 Independent laboratory validation ", + "section": "[374, 2, 1]: Paragraph: Report: Royer A. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 485.51, + 41.13504, + 11.017679 + ], + "pageNumber": 136 + } + ], + "textBefore": "Report: ", + "textAfter": " (2007) Validation of", + "startOffset": 285440, + "endOffset": 285448, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "74703ef7a6753a3c94c7f30e11ec5243", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Brown D", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 241, + 2, + 1 + ], + "closestHeadline": "A 2.1.2.5.1.2 Independent laboratory validation ", + "section": "[241, 2, 1]: Paragraph: Report: Brown D (2019).", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 172.26003, + 40.71553, + 11.017679 + ], + "pageNumber": 97 + } + ], + "textBefore": "Report: ", + "textAfter": " (2019).", + "startOffset": 191965, + "endOffset": 191972, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "be30293aa0b0a211489400dc44912b5c", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schmidt K.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 304, + 1, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[304, 1, 2]: Paragraph: (Schmidt K., 2021)", + "color": null, + "positions": [ + { + "rectangle": [ + 457.52945, + 91.36001, + 50.13266, + 11.017679 + ], + "pageNumber": 117 + } + ], + "textBefore": "(", + "textAfter": ", 2021)", + "startOffset": 242451, + "endOffset": 242461, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "febc0d1ec6fe9ec13530c1f2cc73e270", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 122, + 3, + 1 + ], + "closestHeadline": "Conclusion ", + "section": "[122, 3, 1]: Paragraph: Report Analytical Method Development", + "color": null, + "positions": [ + { + "rectangle": [ + 476.38, + 436.05, + 40.89209, + 11.017679 + ], + "pageNumber": 70 + } + ], + "textBefore": "Report No. IF-04/00192716, ", + "textAfter": " File No. VV-379800", + "startOffset": 135762, + "endOffset": 135770, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2004e448ef8625ee33a9fc0806bbdbf5", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 149, + 1, + 5 + ], + "closestHeadline": "A 2.1.2.2.1 Analytical method 1: RAM 399/01 ", + "section": "[149, 1, 5]: Paragraph: Syngenta File No. VV-124385", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 323.13, + 41.013626, + 11.017679 + ], + "pageNumber": 76 + } + ], + "textBefore": "", + "textAfter": " File No. VV-124385", + "startOffset": 148865, + "endOffset": 148873, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ac4411313763140f46da321139a825fc", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kravchuk O.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 200, + 3, + 12 + ], + "closestHeadline": "A 2.1.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[200, 3, 12]: Paragraph: Report: Link T., Kravchuk", + "color": null, + "positions": [ + { + "rectangle": [ + 238.36998, + 164.46004, + 56.734573, + 11.017679 + ], + "pageNumber": 86 + } + ], + "textBefore": "Report: Link T., ", + "textAfter": "", + "startOffset": 168669, + "endOffset": 168680, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6a2d558bb4227af436232f27474dbc41", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 35, + 2, + 9 + ], + "closestHeadline": "Table 5.2-13: Validated methods for the generation of pre-authorization data for Fenpropidin in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[35, 2, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 407.59, + 691.7, + 31.03537, + 10.44714 + ], + "pageNumber": 24 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 50701, + "endOffset": 50707, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "425f1b1fdcb893ca55b29b3c8aeb99ea", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "De Benedictis S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 14, + 1, + 3 + ], + "closestHeadline": "Table 5.2-2: Methods suitable for the determination of Toluene in plant protection product (PPP) A23317A ", + "section": "[14, 1, 3]: Table_cell: Adolph S. (2011), De", + "color": null, + "positions": [ + { + "rectangle": [ + 359.43988, + 479.75, + 66.68228, + 10.526819 + ], + "pageNumber": 10 + } + ], + "textBefore": "Adolph S. (2011), ", + "textAfter": " (2011), Zampakou M.", + "startOffset": 18789, + "endOffset": 18805, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d1694c21c1290ae455c6bba1254ac916", + "type": "CBI_address", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kupferstraße 6, 04827 Machern OT Gerichshain, Germany", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 264, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[264, 1]: Paragraph: Test facility: BioChem agrar,", + "color": null, + "positions": [ + { + "rectangle": [ + 440.79388, + 120.04, + 97.88074, + 11.017679 + ], + "pageNumber": 102 + }, + { + "rectangle": [ + 70.824, + 107.200035, + 158.92084, + 11.017679 + ], + "pageNumber": 102 + } + ], + "textBefore": "chemische Analytik GmbH, ", + "textAfter": "", + "startOffset": 208180, + "endOffset": 208233, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "30f3fbba230b4f89a877eed18ed536c5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Gemrot F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 55, + 1, + 0, + 14 + ], + "closestHeadline": "Table 5.3-6: Methods for body fluids and tissues ", + "section": "[55, 1, 0, 14]: Table_cell: Method and validation: Gemrot", + "color": null, + "positions": [ + { + "rectangle": [ + 400.15, + 648.38, + 41.130005, + 10.526819 + ], + "pageNumber": 39 + } + ], + "textBefore": "Method and validation: ", + "textAfter": ", 2011 Report", + "startOffset": 80150, + "endOffset": 80159, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6bef1f3bffca2a8a4962764e18c43130", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Brown D", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 59, + 1, + 0, + 24 + ], + "closestHeadline": "Table 5.3-8: Validated methods for water ", + "section": "[59, 1, 0, 24]: Table_cell: Brown D (2019). Syngenta", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 491.87, + 36.911804, + 10.526819 + ], + "pageNumber": 40 + } + ], + "textBefore": "", + "textAfter": " (2019). Syngenta File", + "startOffset": 82588, + "endOffset": 82595, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b802cd24386df34cb2d92ca5a23ecf57", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 3 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 3]: Table: #cols: 5, #rows: 8, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 518.03, + 32.957703, + 10.526819 + ], + "pageNumber": 16 + } + ], + "textBefore": "RAM 305/01 Validation ", + "textAfter": ".J., 1999 Report", + "startOffset": 29841, + "endOffset": 29849, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d57119dd51df8332540b9edb192eff78", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Hargreaves S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 360, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[360, 3, 1]: Paragraph: Report: Hargreaves S. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 648.62, + 62.61888, + 11.017679 + ], + "pageNumber": 134 + } + ], + "textBefore": "Report: ", + "textAfter": " (2007) Fenpropidin -", + "startOffset": 279989, + "endOffset": 280002, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1fb655eef3a3556be416052c747e14c7", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Pelz S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 49 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 49]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 441.12848, + 213.17996, + 27.69873, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "Validation: Weeren R., ", + "textAfter": ", 2001 Report", + "startOffset": 66534, + "endOffset": 66541, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "480d18536e48db8868763a12253297d6", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 0]: Table: #cols: 5, #rows: 6, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 455.16806, + 196.85995, + 41.10193, + 10.526819 + ], + "pageNumber": 13 + } + ], + "textBefore": "Method: Clarke D.M., ", + "textAfter": ", 1994 Report", + "startOffset": 25362, + "endOffset": 25372, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3793698c94cc37be6304d2d907b730b0", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 21]: Table_cell: ILV for the determination", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 196.04999, + 50.09886, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "VV-380727 , ICI5504/2948 ", + "textAfter": " Dr. Specht &", + "startOffset": 107541, + "endOffset": 107554, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a61d33e2e7ab117e2f5d553136c71b16", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 29, + 1, + 14 + ], + "closestHeadline": "Table 5.2-9: Validated methods for the generation of pre-authorization data in support of A23317A in water and other matrices (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[29, 1, 14]: Table_cell: Method: Schuler L., 2020", + "color": null, + "positions": [ + { + "rectangle": [ + 421.15, + 595.67, + 41.67267, + 10.526819 + ], + "pageNumber": 21 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2020 Report", + "startOffset": 41422, + "endOffset": 41432, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c1af3895e83095194a6a084f987e0c95", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kleebaum K.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 34 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 34]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 191.34, + 53.315918, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "New study Validation: ", + "textAfter": ", 2018 Report", + "startOffset": 57587, + "endOffset": 57598, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a1e463b34b33680670cedae479ac88de", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Atkinson S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2, + 19 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2, 19]: Table_cell: ILV: Atkinson S., 2003", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 544.79, + 47.22043, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "ILV: ", + "textAfter": ", 2003 Report", + "startOffset": 76724, + "endOffset": 76735, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7a14c1a712266a0f3b252375a18227b5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Pelz S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 19]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 441.12848, + 550.91, + 27.69873, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "Validation: Weeren R., ", + "textAfter": ", 2001 Report", + "startOffset": 65812, + "endOffset": 65819, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ad72ab2213d58b169bd10067dccff08e", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 39, + 1 + ], + "closestHeadline": "Table 5.2-16: Validated methods for the generation of pre-authorization data for CGA289268 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[39, 1]: Table: #cols: 5, #rows: 6, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 405.67, + 603.71, + 43.23645, + 10.526819 + ], + "pageNumber": 26 + } + ], + "textBefore": "Method: ", + "textAfter": " 2005 Report: REM", + "startOffset": 55382, + "endOffset": 55394, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "09459887994fd1e10647783dadc25c21", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kovacevic E.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 29 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 29]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 393.09, + 53.913544, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2018 Report", + "startOffset": 57311, + "endOffset": 57323, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6ddfbbeb9300921994cbbe53cd74ebcb", + "type": "published_information", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Mass Spectrometry", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 322, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[322, 1]: Paragraph: Diet (royal jelly/ASS containing", + "color": null, + "positions": [ + { + "rectangle": [ + 344.4701, + 278.46005, + 84.79822, + 11.017679 + ], + "pageNumber": 122 + } + ], + "textBefore": "(LC) coupled with ", + "textAfter": " (MS). The limit", + "startOffset": 255080, + "endOffset": 255097, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dfdf5d02ffd6f88c6b29deae5e1ecd70", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler, L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 289, + 4, + 0 + ], + "closestHeadline": "A 2.2.1.6.4 Analytical method 4 - A23317A - fenpropidin residues in water ", + "section": "[289, 4, 0]: Paragraph: Report Azoxystrobin/Fenpropidin SE (A23317A)", + "color": null, + "positions": [ + { + "rectangle": [ + 327.89093, + 718.1, + 48.266907, + 11.017679 + ], + "pageNumber": 112 + } + ], + "textBefore": "- Final Report. ", + "textAfter": " (2020) Report no.", + "startOffset": 230460, + "endOffset": 230471, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a35ef7efc015e7110a5cc62fd941a2b1", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Crawford N.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 61, + 1, + 0, + 14 + ], + "closestHeadline": "Table 5.3-9: Validated methods for air ", + "section": "[61, 1, 0, 14]: Table_cell: Method and validation: Crawford", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 202.97995, + 50.53708, + 10.526819 + ], + "pageNumber": 40 + } + ], + "textBefore": "Method and validation: ", + "textAfter": ", 2001 /", + "startOffset": 83520, + "endOffset": 83531, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c3d8c23c56bc984c47f488b8d7f2a980", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Marini J.P.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 343, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[343, 2]: Paragraph: (Marini J.P., 2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 458.98, + 296.97006, + 48.57602, + 11.017679 + ], + "pageNumber": 129 + } + ], + "textBefore": "(", + "textAfter": ", 2016)", + "startOffset": 271146, + "endOffset": 271157, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "42644afc6a41635b6212402f6d29c977", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 3, + 9 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 3, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 716.18, + 31.03537, + 10.44714 + ], + "pageNumber": 38 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 77684, + "endOffset": 77690, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "988b3d0f1b7eb615afff3c729dfc7ec1", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Amic, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 19]: Table_cell: Amic, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 253.53, + 35.238503, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 111294, + "endOffset": 111302, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c0b387aaf6f825dda6df3d9cbbe1bc28", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 151, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[151, 1]: Paragraph: Analytical method RAM 399/01", + "color": null, + "positions": [ + { + "rectangle": [ + 300.21317, + 371.97, + 29.973572, + 11.017679 + ], + "pageNumber": 77 + } + ], + "textBefore": "was validated for ", + "textAfter": " muscle, fat and", + "startOffset": 149935, + "endOffset": 149941, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3f4b6396c31ee1887fffaf54d50091fd", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 409, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.6 Description of Methods for the Analysis of Air (KCP 5.2.6) ", + "section": "[409, 3, 1]: Paragraph: Report: Robinson N.J. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 521.87, + 53.06929, + 11.017679 + ], + "pageNumber": 145 + } + ], + "textBefore": "Report: ", + "textAfter": ".J. (2007) Fenpropidin:", + "startOffset": 305349, + "endOffset": 305359, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "757f574f52001421f418e4da80d40d47", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 3, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 49 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 101315, + "endOffset": 101321, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3732aa705cdbe45c9252f6f4006a1e9a", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 21]: Table_cell: Azoxystrobin SC (A12705B) -", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 218.97, + 50.09886, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "Document No VV-414544 ", + "textAfter": " ibacon GmbH GLP", + "startOffset": 103639, + "endOffset": 103652, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ca5b475a7fc9a216133b071d91418648", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 15]: Table_cell: A16283D - Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 211.16998, + 50.09886, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "VV-400661 , A16283D_10107 ", + "textAfter": " Syngenta Crop Protection", + "startOffset": 99943, + "endOffset": 99956, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e6553fe4519d08224560df695efde237", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kleebaum K.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 332, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[332, 2]: Paragraph: (Kleebaum K., 2018)", + "color": null, + "positions": [ + { + "rectangle": [ + 449.02, + 436.89, + 58.655518, + 11.017679 + ], + "pageNumber": 125 + } + ], + "textBefore": "(", + "textAfter": ", 2018)", + "startOffset": 261773, + "endOffset": 261784, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c90321dc53219661d295be5b243771c8", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Link", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 57, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.3-7: Validated methods for soil ", + "section": "[57, 1, 0, 19]: Table_cell: Method: Link et al.", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 243.65994, + 18.874237, + 10.526819 + ], + "pageNumber": 39 + } + ], + "textBefore": "Report GRM057.06A/ICI5504_12487 Validation: ", + "textAfter": " et al. 2019", + "startOffset": 81295, + "endOffset": 81299, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ac538fa69ee8381a4a8622aaf2a19b51", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Clarke D.M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 2, + 9 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 2, 9]: Table_cell: Method: Burke S.R., 1997", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 632.66, + 50.188416, + 10.526819 + ], + "pageNumber": 15 + } + ], + "textBefore": "RAM 243/05 Validation: ", + "textAfter": ", Sapiets A.,", + "startOffset": 28073, + "endOffset": 28084, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "91a4c83edc6538f6006f6c1200dd83fc", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Link T.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 200, + 3, + 1 + ], + "closestHeadline": "A 2.1.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[200, 3, 1]: Paragraph: Report: Link T., Poperechna", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 496.43, + 33.119995, + 11.017679 + ], + "pageNumber": 86 + } + ], + "textBefore": "Report: ", + "textAfter": ", Poperechna N.,", + "startOffset": 167832, + "endOffset": 167839, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8c35bcd578a3753a0c116ca3adb50870", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 333, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.10 Analytical method 10 – ECO_029_03A ", + "section": "[333, 2, 1]: Paragraph: Report: Kovacevic E. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 230.67513, + 151.26003, + 40.892166, + 11.017679 + ], + "pageNumber": 125 + } + ], + "textBefore": "Niefern-Öschelbronn, Germany (", + "textAfter": " File No. VV-469879)", + "startOffset": 262571, + "endOffset": 262579, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4c9cf326f1c63f2ce996fb46ab669f2f", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Walser, M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 38, + 1 + ], + "closestHeadline": "Table 5.2-15: Validated methods for the generation of pre-authorization data for CGA289267 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[38, 1]: Table: #cols: 5, #rows: 6, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 421.27, + 499.43, + 44.561066, + 10.526819 + ], + "pageNumber": 25 + } + ], + "textBefore": "Method: ", + "textAfter": " (1999a) Report: REM", + "startOffset": 53868, + "endOffset": 53878, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6c35d9ef25d26ca05875bcd7707f1bf8", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Gemrot, F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 153, + 2 + ], + "closestHeadline": "Specificity ", + "section": "[153, 2]: Paragraph: Confirmatory transition can be", + "color": null, + "positions": [ + { + "rectangle": [ + 146.98895, + 422.37, + 47.84735, + 11.017679 + ], + "pageNumber": 78 + } + ], + "textBefore": "in blood (", + "textAfter": ", 2011, Report", + "startOffset": 151865, + "endOffset": 151875, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a72e7c6df910538cb3db43b0f1f16e5f", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 27]: Table_cell: Fenpropidin T.G. - Early", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 132.29999, + 50.117813, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "VV-465445 , CGA114900_10666 ", + "textAfter": " Smithers GLP Unpublished", + "startOffset": 105180, + "endOffset": 105193, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "96c385254843090207866bd7a261fcee", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 15]: Table_cell: Fenpropidin - Acute Toxicity", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 305.75, + 50.09886, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "VV-383049 , CGA114900_10396 ", + "textAfter": " Ibacon GmbH GLP", + "startOffset": 105884, + "endOffset": 105897, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4f7e8fbac74ab871a39324cd5918ec13", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 3, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 3, 4]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 404.83, + 726.86, + 31.03537, + 10.44714 + ], + "pageNumber": 16 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 29341, + "endOffset": 29347, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "83205012ebe47473222101c90b751f12", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 27]: Table_cell: Fenpropidin - Growth Inhibition", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 132.29999, + 50.09886, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "VV-469411 , CGA114900_10912 ", + "textAfter": " Smithers Viscient GLP", + "startOffset": 103892, + "endOffset": 103905, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8e76c97512cbb814899c08a58f4b7346", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kleebaum K.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 1, + 9 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 1, 9]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 610.22, + 53.315918, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "New study Validation: ", + "textAfter": ", 2018 Report", + "startOffset": 57908, + "endOffset": 57919, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a6f123ec6bdfe129a02bf995d81a4233", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Walser, M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 38, + 1 + ], + "closestHeadline": "Table 5.2-15: Validated methods for the generation of pre-authorization data for CGA289267 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[38, 1]: Table: #cols: 5, #rows: 6, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 421.27, + 453.47, + 44.561066, + 10.526819 + ], + "pageNumber": 25 + } + ], + "textBefore": "REM 164.05 Validation: ", + "textAfter": " (1999b) Report: 174/97", + "startOffset": 53918, + "endOffset": 53928, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c68129d166b5c92e380f18f84e022c8a", + "type": "published_information", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Mass Spectrometry", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 345, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[345, 1]: Paragraph: Water samples are analysed", + "color": null, + "positions": [ + { + "rectangle": [ + 423.13248, + 562.55, + 85.97949, + 11.017679 + ], + "pageNumber": 130 + } + ], + "textBefore": "(LC) coupled with ", + "textAfter": " (MS). The analytical", + "startOffset": 271953, + "endOffset": 271970, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e5ec8f6dbcc1b3753fb66efe72715aa2", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lakaschus, S", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 131, + 2, + 1 + ], + "closestHeadline": "Reproducibility ", + "section": "[131, 2, 1]: Paragraph: Report: Independent Laboratory Validation", + "color": null, + "positions": [ + { + "rectangle": [ + 427.1342, + 474.95, + 59.395203, + 11.017679 + ], + "pageNumber": 73 + } + ], + "textBefore": "Third Party Laboratory, ", + "textAfter": "., Gizler,A. 2017,", + "startOffset": 142288, + "endOffset": 142300, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "afaf2ffe2e5913d9ef9f8134020a7ca9", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 55, + 1, + 0, + 9 + ], + "closestHeadline": "Table 5.3-6: Methods for body fluids and tissues ", + "section": "[55, 1, 0, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 400.15, + 703.58, + 31.03537, + 10.44714 + ], + "pageNumber": 39 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 80020, + "endOffset": 80026, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6ec9e94814f5e97a0a463336501c6e90", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N.J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 24 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 24]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 562.07, + 56.91153, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "Method: ", + "textAfter": " et al., 1999", + "startOffset": 71264, + "endOffset": 71277, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2f7fd525e32716b14881fa6f02600a45", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Daphnia magna", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 289, + 4, + 0 + ], + "closestHeadline": "A 2.2.1.6.4 Analytical method 4 - A23317A - fenpropidin residues in water ", + "section": "[289, 4, 0]: Paragraph: Report Azoxystrobin/Fenpropidin SE (A23317A)", + "color": null, + "positions": [ + { + "rectangle": [ + 202.01, + 730.7, + 70.9099, + 11.0232 + ], + "pageNumber": 112 + } + ], + "textBefore": "the Water Flea ", + "textAfter": " Straus under Laboratory", + "startOffset": 230358, + "endOffset": 230371, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "67245344fcdbb09d31f799bd1d863057", + "type": "CBI_address", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Analytik GmbH, Kupferstraße 6, 04827 Machern OT Gerichshain, Germany", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 327, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.9 Analytical method 9 – fenpropidin residues in royal jelly/ASS ", + "section": "[327, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 322.58313, + 661.58, + 214.36365, + 11.017679 + ], + "pageNumber": 124 + }, + { + "rectangle": [ + 199.73, + 648.86, + 117.06813, + 11.017679 + ], + "pageNumber": 124 + } + ], + "textBefore": "biologische und chemische, ", + "textAfter": " (Syngenta File No.", + "startOffset": 258572, + "endOffset": 258640, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a5c1cd36694c7b2c41179b8d013320de", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 131, + 2, + 1 + ], + "closestHeadline": "Reproducibility ", + "section": "[131, 2, 1]: Paragraph: Report: Independent Laboratory Validation", + "color": null, + "positions": [ + { + "rectangle": [ + 375.41513, + 462.23, + 41.01358, + 11.017679 + ], + "pageNumber": 73 + } + ], + "textBefore": "Report No. SYN-0422V, ", + "textAfter": " File No. VV-380727", + "startOffset": 142341, + "endOffset": 142349, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "524d90d35f76df6f496ae79c3912b4e1", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 83, + 1, + 1 + ], + "closestHeadline": "List of data relied on not submitted by the applicant but necessary for evaluation ", + "section": "[83, 1, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 132.98, + 281.15, + 31.035355, + 10.44714 + ], + "pageNumber": 59 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 114484, + "endOffset": 114490, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "21c6e45dada64be8b2a2968a40ebebb1", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Ehmke, A.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 19]: Table_cell: Ehmke, A.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 253.53, + 43.096947, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 103473, + "endOffset": 103482, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4bcd9feb60c6e8a7400f40e2b558d682", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 149, + 1, + 2 + ], + "closestHeadline": "A 2.1.2.2.1 Analytical method 1: RAM 399/01 ", + "section": "[149, 1, 2]: Paragraph: Report: Crook S., 2002.", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 404.37, + 39.247208, + 11.017679 + ], + "pageNumber": 76 + } + ], + "textBefore": "Report: ", + "textAfter": ", 2002.", + "startOffset": 148654, + "endOffset": 148662, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "acc7f36292e2bd7a236df23b68ce5e3f", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Smithers Viscient, 790 Main Street, Wareham, MA 02571-1037", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 338, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.11 Analytical method 11 - fenpropidin residues in water ", + "section": "[338, 2, 1]: Paragraph: Report: Marini J.P. (2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 498.01047, + 572.27, + 39.070526, + 11.017679 + ], + "pageNumber": 128 + }, + { + "rectangle": [ + 199.73, + 559.67, + 243.73854, + 11.017679 + ], + "pageNumber": 128 + } + ], + "textBefore": "Report No: 1781.7100. ", + "textAfter": " USA (Syngenta File", + "startOffset": 268003, + "endOffset": 268061, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a30e6a849e1036ca5f1428245bcf7d01", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 27]: Table_cell: Statement on Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 143.82, + 50.117813, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "Document No. VV-887260 ", + "textAfter": " Syngenta Crop Protection", + "startOffset": 101225, + "endOffset": 101238, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b76e938ce58891ffb6cc108a33d0c8ce", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "SGS Institut Fresenius GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 9]: Table_cell: Analytical Method Development and", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 380.87, + 119.769135, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "ICI5504/2766 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 108347, + "endOffset": 108374, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "acb875b1865d53c99294fefcc3ee2e26", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Daphnia magna", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 30, + 1, + 14 + ], + "closestHeadline": "Table 5.2-10: Methods and relationship to studies presented in document Part B, Section 9 ", + "section": "[30, 1, 14]: Table_cell: Report S20-06698 (study target", + "color": null, + "positions": [ + { + "rectangle": [ + 445.9, + 265.5, + 64.77997, + 10.5318 + ], + "pageNumber": 21 + } + ], + "textBefore": "(study target organism: ", + "textAfter": ")", + "startOffset": 42292, + "endOffset": 42305, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6762176184ba7c8ba61069ec011ca9f4", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Johnson R.I.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 57, + 1, + 0, + 14 + ], + "closestHeadline": "Table 5.3-7: Validated methods for soil ", + "section": "[57, 1, 0, 14]: Table_cell: Method and validation: Johnson", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 364.89, + 50.298096, + 10.526819 + ], + "pageNumber": 39 + } + ], + "textBefore": "Method and validation: ", + "textAfter": " et al., 2000", + "startOffset": 81115, + "endOffset": 81127, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b7360d528256ad72aa1881cdad745a68", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "fish", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 296, + 2, + 0, + 17 + ], + "closestHeadline": "Table A 39: Characteristics of the analytical method used for the quantification of fenpropidin in Elendt M4 medium ", + "section": "[296, 2, 0, 17]: Table_cell: The LOQ for fenpropidin", + "color": null, + "positions": [ + { + "rectangle": [ + 304.16968, + 211.85995, + 14.810547, + 10.526819 + ], + "pageNumber": 114 + } + ], + "textBefore": "for fenpropidin in ", + "textAfter": " water was established", + "startOffset": 237212, + "endOffset": 237216, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "cbab8c0909f1e82afd4dc673e5540bae", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Adolph S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2, + 3 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2, 3]: Table_cell: Adolph S. (2011). Analytical", + "color": null, + "positions": [ + { + "rectangle": [ + 197.09, + 636.98, + 40.616867, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "", + "textAfter": " (2011). Analytical method", + "startOffset": 16717, + "endOffset": 16726, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5f7cd3c7933ff4b140d560a4269d2fd5", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 15]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) -", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 294.23, + 50.09886, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "Document No. VV-890581 ", + "textAfter": " BioChem agrar GmbH", + "startOffset": 103406, + "endOffset": 103419, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d523c122bd0bfcb64cf486bfec23ef63", + "type": "CBI_address", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "30310 Vergèze, France", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 92, + 2 + ], + "closestHeadline": "A3. Test Facilities ", + "section": "[92, 2]: Paragraph: BioChem agrar GmbH, Kupferstr.", + "color": null, + "positions": [ + { + "rectangle": [ + 231.05, + 469.67, + 102.44026, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "chemin de Sommières, ", + "textAfter": ".", + "startOffset": 119264, + "endOffset": 119285, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "23c71e1ebc2450fc9545432945c2ff77", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Obert-Rauser", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 3, + 0, + 19 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 3, 0, 19]: Table_cell: Method & Validation: Obert-Rauser", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 335.37, + 53.84897, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": " P., 2021 Report", + "startOffset": 58596, + "endOffset": 58608, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c953e4622f81a249577a3fa2584b4b24", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 226, + 2, + 8 + ], + "closestHeadline": "A 2.1.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[226, 2, 8]: Paragraph: azoxystrobin and its metabolite", + "color": null, + "positions": [ + { + "rectangle": [ + 272.57, + 729.86, + 40.904633, + 11.017679 + ], + "pageNumber": 94 + } + ], + "textBefore": "Report No. S11-03538, ", + "textAfter": " File No. ICI5504_11490", + "startOffset": 183434, + "endOffset": 183442, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "66b0b2529ac14a7b3642dfb74ee0ba08", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Richardson, M.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 19]: Table_cell: Richardson, M.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 242.01001, + 61.921318, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 112671, + "endOffset": 112685, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e07135bfff419ce85973bee91487ad75", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 0]: Table: #cols: 5, #rows: 6, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 455.16806, + 159.41995, + 41.10193, + 10.526819 + ], + "pageNumber": 13 + } + ], + "textBefore": "Validation: Clarke D.M., ", + "textAfter": ", 1994 Report", + "startOffset": 25422, + "endOffset": 25432, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "339451384c6e0b31d2fa40bb4efa82a8", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Crook, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 19]: Table_cell: Crook, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 253.53, + 38.087044, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 108655, + "endOffset": 108664, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8bce53f24fa42c5239981874c6f66d56", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 161, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[161, 1]: Paragraph: Analytical method RAM 399/01", + "color": null, + "positions": [ + { + "rectangle": [ + 429.39215, + 367.29, + 30.095001, + 11.017679 + ], + "pageNumber": 79 + } + ], + "textBefore": "independent laboratory for ", + "textAfter": " milk and muscle.", + "startOffset": 153785, + "endOffset": 153791, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9e5f82de1920c5ec174205f5c2eeb8fb", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "ResChem Analytical Limited", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 9]: Table_cell: Azoxystrobin – Independent Laboratory", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 380.87, + 117.20941, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "ICI5504_12452 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 112246, + "endOffset": 112272, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e235db91c1578eb4b876117e67107fea", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 9]: Table_cell: Fenpropidin - Toxicity to", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 380.87, + 50.09886, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "VV-468726 , CGA114900_10897 ", + "textAfter": " Ibacon GmbH GLP", + "startOffset": 103133, + "endOffset": 103146, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0a13914672d8f8ef6d790e2da00029e0", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Pupp, A. Wydra, V.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 13]: Table_cell: Pupp, A. Wydra, V.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 340.19, + 35.30819, + 10.526819 + ], + "pageNumber": 52 + }, + { + "rectangle": [ + 121.1, + 328.67, + 41.91169, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 105695, + "endOffset": 105713, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9321d894c748c2f2dcde024a6670ae71", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 21]: Table_cell: Residue Analytical Method for", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 242.01001, + 28.8741, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "and R230310 in ", + "textAfter": " Muscle Tissue, Fat", + "startOffset": 102177, + "endOffset": 102183, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0b39098cf04a5069f51da34982cd128e", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J .", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0]: Table: #cols: 5, #rows: 14, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 511.31, + 43.23645, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2004 Reports:", + "startOffset": 44136, + "endOffset": 44148, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ba56905fd4cf63ff20ef039c71ea7889", + "type": "PII", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "18 48 BLC 0026. BioChem agrar, Labor für", + "reason": "Found after \"No:\" contact keyword", + "matchedRule": "PII.4.0", + "legalBasis": "Reg (EC) No 1107/2009 Art. 63 (2e)", + "imported": false, + "containingNodeId": [ + 327, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.9 Analytical method 9 – fenpropidin residues in royal jelly/ASS ", + "section": "[327, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 329.53162, + 674.18, + 207.2981, + 11.017679 + ], + "pageNumber": 124 + } + ], + "textBefore": "22). Report No: ", + "textAfter": " biologische und chemische,", + "startOffset": 258504, + "endOffset": 258544, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4da560e3622207d61de8dd873e459af7", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 9]: Table_cell: Fenpropidin - Single Exposure", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 380.87, + 61.43332, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "CGA114900_10973 Test Facility ", + "textAfter": " GmbH GLP Unpublished", + "startOffset": 104316, + "endOffset": 104329, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b8e3ba89248689754305a3e882739c32", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Hargreaves S", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 373, + 3 + ], + "closestHeadline": "Conclusion ", + "section": "[373, 3]: Paragraph: (Hargreaves S, 2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 448.64944, + 651.38, + 59.00885, + 11.017679 + ], + "pageNumber": 136 + } + ], + "textBefore": "(", + "textAfter": ", 2007)", + "startOffset": 285123, + "endOffset": 285135, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3938bbefbe56a3d345da47411aff1a0e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1, + 29 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1, 29]: Table_cell: Syngenta File No. VV-887259", + "color": null, + "positions": [ + { + "rectangle": [ + 199.85, + 740.06, + 37.27031, + 10.526819 + ], + "pageNumber": 12 + } + ], + "textBefore": "", + "textAfter": " File No. VV-887259", + "startOffset": 21572, + "endOffset": 21580, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f1f3a5aeb2394474184430df71ca3032", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Dreβler, K.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 262, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.1 Analytical method 1 – A23317A - fenpropidin residues in adult bee diet ", + "section": "[262, 2, 1]: Paragraph: Report Azoxystrobin/Fenpropidin SE (A23317A)", + "color": null, + "positions": [ + { + "rectangle": [ + 237.17, + 377.73, + 49.551407, + 11.017679 + ], + "pageNumber": 102 + } + ], + "textBefore": "- Final Report. ", + "textAfter": " (2021) Report No.", + "startOffset": 207662, + "endOffset": 207673, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "564696a03fbcef8067a23e7976711f05", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "RG42 6EY", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 380, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[380, 3, 1]: Paragraph: Report: Richardson M. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 485.80557, + 156.42, + 48.675323, + 11.017679 + ], + "pageNumber": 138 + } + ], + "textBefore": "Centre, Bracknell, Berkshire, ", + "textAfter": ", UK (Syngenta", + "startOffset": 289912, + "endOffset": 289920, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d956ab27494a94e1d8b2429e9344509d", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 75, + 1, + 1, + 9 + ], + "closestHeadline": "Table 5.3-16: Validated methods for water ", + "section": "[75, 1, 1, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 421.39, + 289.38, + 31.03537, + 10.44714 + ], + "pageNumber": 44 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 95574, + "endOffset": 95580, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "732e07bcc9bbe1faf2e01b58920f37e2", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Burke S.R.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 2, + 14 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 2, 14]: Table_cell: Method Burke S.R. and", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 499.43, + 46.641083, + 10.526819 + ], + "pageNumber": 15 + } + ], + "textBefore": "RAM 260/01 Validation: ", + "textAfter": " 1995 Report RJ1787B", + "startOffset": 28340, + "endOffset": 28351, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "acba08f6eb8158bd5cb05f117112b48d", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schmidt K.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 29, + 1, + 29 + ], + "closestHeadline": "Table 5.2-9: Validated methods for the generation of pre-authorization data in support of A23317A in water and other matrices (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[29, 1, 29]: Table_cell: Method: Schmidt K., 2021", + "color": null, + "positions": [ + { + "rectangle": [ + 421.15, + 439.05, + 45.52716, + 10.526819 + ], + "pageNumber": 21 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2021 Report", + "startOffset": 41763, + "endOffset": 41773, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8e55963cf7e33ddca1d2b3548eeb0871", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 3, + 0, + 4 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 3, 0, 4]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 491.99, + 31.03537, + 10.44714 + ], + "pageNumber": 28 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 58232, + "endOffset": 58238, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "baf7534821ca1387420761948edccbf9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Stahl F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 19 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 19]: Table_cell: Validation: Stahl F., 2017", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 597.23, + 31.03534, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "Validation: ", + "textAfter": ", 2017 Report", + "startOffset": 67177, + "endOffset": 67185, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5d2223d4c6f85f12268582cdef0837a7", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richards S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 150, + 2, + 1 + ], + "closestHeadline": "A 2.1.2.2.1.1 Method validation ", + "section": "[150, 2, 1]: Paragraph: Report: Richards S., 2002.", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 597.35, + 50.85025, + 11.017679 + ], + "pageNumber": 77 + } + ], + "textBefore": "Report: ", + "textAfter": ", 2002.", + "startOffset": 149481, + "endOffset": 149492, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "60fb56abb0685873c06ce2e949be7119", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Weeren R.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 19]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 550.91, + 42.658722, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "Validation: ", + "textAfter": ", Pelz S.,", + "startOffset": 65801, + "endOffset": 65810, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3462b40949c59521b1112fbcb0c919ff", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Gizler A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 24 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 24]: Table_cell: ILV: Lakaschus S., Gizler", + "color": null, + "positions": [ + { + "rectangle": [ + 451.19806, + 539.03, + 37.14087, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "ILV: Lakaschus S., ", + "textAfter": " 2017 Report SYN-0422V", + "startOffset": 67320, + "endOffset": 67329, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fcb0b961940317e5a3b091c6eb793af8", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Clarke D.M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 0]: Table: #cols: 5, #rows: 6, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 196.85995, + 50.188416, + 10.526819 + ], + "pageNumber": 13 + } + ], + "textBefore": "Method: ", + "textAfter": ", Sapiets A.,", + "startOffset": 25349, + "endOffset": 25360, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5df509c44f3e129b08faca10d2988d96", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bebon R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 305, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.6 Analytical method 6 - fenpropidin residues in water ", + "section": "[305, 2, 1]: Paragraph: Report: Bebon R., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 535.67, + 43.55281, + 11.017679 + ], + "pageNumber": 118 + } + ], + "textBefore": "Report: ", + "textAfter": ", Wydra V.", + "startOffset": 245457, + "endOffset": 245465, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8c2c9fafb33c61fea59432116beee602", + "type": "PII", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "120041240. ibacon GmbH Arheilger Weg 17", + "reason": "Found after \"No:\" contact keyword", + "matchedRule": "PII.4.0", + "legalBasis": "Reg (EC) No 1107/2009 Art. 63 (2e)", + "imported": false, + "containingNodeId": [ + 305, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.6 Analytical method 6 - fenpropidin residues in water ", + "section": "[305, 2, 1]: Paragraph: Report: Bebon R., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 327.09848, + 510.34998, + 209.77097, + 11.017679 + ], + "pageNumber": 118 + } + ], + "textBefore": "Period. Report No: ", + "textAfter": " 64380 Rossdorf Germany", + "startOffset": 245625, + "endOffset": 245664, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "46902894d01e2b30e35e34dfdf8944a2", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 88, + 3, + 3 + ], + "closestHeadline": "A 2.1.1.5 Description of analytical methods for the determination of residues in support of residues studies (KCP1 5.1.2.5) ", + "section": "[88, 3, 3]: Paragraph: Report No. T011298-06-REG, Syngenta", + "color": null, + "positions": [ + { + "rectangle": [ + 335.71002, + 679.94, + 41.024597, + 11.017679 + ], + "pageNumber": 61 + } + ], + "textBefore": "Report No. T011298-06-REG, ", + "textAfter": " File No. VV-382035", + "startOffset": 116459, + "endOffset": 116467, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "95e98f11ad44f84279f983a3adbf57e7", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Bebon, R. Wydra, V.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 7]: Table_cell: Bebon, R. Wydra, V.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 40.24836, + 10.526819 + ], + "pageNumber": 50 + }, + { + "rectangle": [ + 121.1, + 415.46, + 41.91169, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 102910, + "endOffset": 102929, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e2452a7908b4074b10bdc5b3c46a463f", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 0, + 9 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 0, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 230.10004, + 31.03537, + 10.44714 + ], + "pageNumber": 35 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 74344, + "endOffset": 74350, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "951090b40ac29cfd9492177e79d36617", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1, + 49 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1, 49]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 421.53, + 35.610016, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "Method: ", + "textAfter": " 2002 Report RAM", + "startOffset": 75676, + "endOffset": 75684, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d9e4a92094579197469b825fa40d513e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 92, + 2 + ], + "closestHeadline": "A3. Test Facilities ", + "section": "[92, 2]: Paragraph: BioChem agrar GmbH, Kupferstr.", + "color": null, + "positions": [ + { + "rectangle": [ + 231.05, + 532.91, + 67.597916, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "", + "textAfter": " GmbH, Kupferstr. 6,", + "startOffset": 119016, + "endOffset": 119029, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c134af82f6511d095fb7b8d2f57da8a3", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 3, + 0, + 9 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 3, 0, 9]: Table_cell: Method & Validation: Schuler", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 439.77, + 41.67267, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": ", 2020 Report", + "startOffset": 58349, + "endOffset": 58359, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7f02cc3d1dde48e88f81e2f21dbc101e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "RG42 6EY", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 360, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[360, 3, 1]: Paragraph: Report: Hargreaves S. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 610.46, + 49.27153, + 11.017679 + ], + "pageNumber": 134 + } + ], + "textBefore": "Centre, Bracknell, Berkshire, ", + "textAfter": ", UK (Syngenta", + "startOffset": 280200, + "endOffset": 280208, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9b7a7bf72bfa3397d1dd3851f4f9f418", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 27]: Table_cell: Azoxystrobin and R230310 :", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 109.26002, + 50.09886, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "VV-331095 , ICI5504/1652 ", + "textAfter": " Syngenta - Jealott's", + "startOffset": 109273, + "endOffset": 109286, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e117cd8b22d690f23760509f0ef2d6f9", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 21]: Table_cell: Fenpropidin - Chronic Toxicity", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 218.97, + 61.43332, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "CGA114900_10975 Test Facility ", + "textAfter": " GmbH GLP Unpublished", + "startOffset": 106162, + "endOffset": 106175, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b7565190bc341f5326881b09971ccec3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 39, + 0 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 39, 0]: Paragraph: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 232.37997, + 44.461487, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "1999 Report RJ2770B ", + "textAfter": ", 2004 Report", + "startOffset": 71871, + "endOffset": 71881, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "700abff6226cd53552c2b6977bd33bc5", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Gasser, A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 35, + 2 + ], + "closestHeadline": "Table 5.2-13: Validated methods for the generation of pre-authorization data for Fenpropidin in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[35, 2]: Table: #cols: 5, #rows: 5, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 535.55, + 41.812134, + 10.526819 + ], + "pageNumber": 24 + } + ], + "textBefore": "Dieterle, R., 1992 ", + "textAfter": ", 2000 Reports:", + "startOffset": 50886, + "endOffset": 50896, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "af9d81375292daca298d842a858cc3a6", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Stahl, F.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 7]: Table_cell: Stahl, F.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 33.56521, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 108086, + "endOffset": 108095, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b23cde6017fcb2c86d3d380671f6b180", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1, + 9 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 716.18, + 31.03537, + 10.44714 + ], + "pageNumber": 36 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 75041, + "endOffset": 75047, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ff99e63fb927127669fe42911ea2f67c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Tillkes M", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 0, 19]: Table_cell: Validation: Tillkes M., 1997", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 157.25998, + 39.053223, + 10.526819 + ], + "pageNumber": 35 + } + ], + "textBefore": "Validation: ", + "textAfter": "., 1997 Report", + "startOffset": 74603, + "endOffset": 74612, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d9194d30df7c16d365743a4e6d4de637", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 44, + 1 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 44, 1]: Paragraph: Validation: Lister N.J., 1999", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 159.77994, + 44.461487, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "1999 Report RJ2770B ", + "textAfter": ", 2004 Report", + "startOffset": 70589, + "endOffset": 70599, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8cb0b389985e6d1b1739d88b83852d05", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4]: Table: #cols: 5, #rows: 13, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 359.01, + 44.461487, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "1999 Report RJ2770B ", + "textAfter": ", 2004 Report", + "startOffset": 31810, + "endOffset": 31820, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "35220ce798289bb6b1df3c72a82f8698", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Burke S.R.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 2, + 19, + 1 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 2, 19, 1]: Paragraph: Validation: Burke S.R., 1995", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 386.73, + 46.641083, + 10.526819 + ], + "pageNumber": 15 + } + ], + "textBefore": "Validation: ", + "textAfter": " 1995 Report RJ1787B", + "startOffset": 29074, + "endOffset": 29085, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d986a6b2b9ab9cd39a2bd18e84098139", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Zampakou, M.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 7]: Table_cell: Zampakou, M.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 59.152443, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 101465, + "endOffset": 101477, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d1fc1d8c3bef4a9b316cf72d216ec790", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta - Jealott's Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 12, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 12, 9]: Table_cell: Fenpropidin - Residue Method", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 392.39, + 95.422, + 10.526819 + ], + "pageNumber": 58 + } + ], + "textBefore": "CGA114900/4903 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 113565, + "endOffset": 113590, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fec03d2cfdfeea4fcb09fdf0534027b6", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Stahl F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 122, + 3, + 1 + ], + "closestHeadline": "Conclusion ", + "section": "[122, 3, 1]: Paragraph: Report Analytical Method Development", + "color": null, + "positions": [ + { + "rectangle": [ + 280.49, + 436.05, + 34.201935, + 11.017679 + ], + "pageNumber": 70 + } + ], + "textBefore": "in Plant Matrices, ", + "textAfter": ", 2017, Report", + "startOffset": 135719, + "endOffset": 135727, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2a4cb746dbd087c89f2f678b5fe50618", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "ADME - Bioanalyses", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 15]: Table_cell: Validation of residue method", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 294.23, + 86.17731, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "CGA114900_10443 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 111243, + "endOffset": 111261, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "066d1164c99584e4a9b4512d163f60c9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Pelz S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 34 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 34]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 441.12848, + 451.65, + 27.69873, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "Validation: Weeren R., ", + "textAfter": ", 2001 Report", + "startOffset": 67584, + "endOffset": 67591, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b1d4e80e04e2dcac888aec5f2ac2df39", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kovacevic E.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 337, + 1 + ], + "closestHeadline": "Conclusion ", + "section": "[337, 1]: Paragraph: The analytical method has", + "color": null, + "positions": [ + { + "rectangle": [ + 436.15, + 61.6, + 59.273773, + 11.017679 + ], + "pageNumber": 127 + } + ], + "textBefore": "0.01 mg/kg. (", + "textAfter": ", 2018)", + "startOffset": 267521, + "endOffset": 267533, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "02882c4f1b1f47a550cfd229be0c8b97", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Report Zampakou, M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 5, + 2, + 1 + ], + "closestHeadline": "5.2 Methods used for the generation of pre-authorization data (KCP 5.1) ", + "section": "[5, 2, 1]: Table: #cols: 2, #rows: 12, Reference: KCP 5.1.1 Report", + "color": null, + "positions": [ + { + "rectangle": [ + 76.824, + 506.99, + 27.22068, + 10.526819 + ], + "pageNumber": 7 + }, + { + "rectangle": [ + 200.09, + 506.99, + 59.25, + 10.526819 + ], + "pageNumber": 7 + } + ], + "textBefore": "Reference: KCP 5.1.1 ", + "textAfter": " 2020. Azoxystrobin/ Fenpropidin", + "startOffset": 12645, + "endOffset": 12664, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b520de4ebb839fe4c44a5651698ecf56", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Gemrot F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 186, + 3, + 1 + ], + "closestHeadline": "A 2.1.2.3 Description of Methods for the Analysis of Body Fluids and Tissues (KCP1 5.2.3) ", + "section": "[186, 3, 1]: Paragraph: Report: Azoxystrobin - Validation", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 395.49, + 51.09314, + 11.017679 + ], + "pageNumber": 83 + } + ], + "textBefore": "Human Whole Blood, ", + "textAfter": ", 2011, Report", + "startOffset": 161284, + "endOffset": 161293, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e7f61a768098ef8243b7c02d2bf8ef01", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 29, + 1, + 4 + ], + "closestHeadline": "Table 5.2-9: Validated methods for the generation of pre-authorization data in support of A23317A in water and other matrices (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[29, 1, 4]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 421.15, + 700.1, + 31.03537, + 10.44714 + ], + "pageNumber": 21 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 41202, + "endOffset": 41208, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fc13a99c1a5a37abc32d752cb2540f1e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 21]: Table_cell: Determination of R230310 in", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 135.9, + 103.3949, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "A17961A_10048 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 100169, + "endOffset": 100193, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f37710548432c51d98fae3cf195d8e53", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 160, + 1, + 0, + 1 + ], + "closestHeadline": "A 2.1.2.2.1.2 Independent laboratory validation ", + "section": "[160, 1, 0, 1]: Table_cell: Study acceptable Analytical method", + "color": null, + "positions": [ + { + "rectangle": [ + 293.81653, + 687.62, + 30.095001, + 11.017679 + ], + "pageNumber": 79 + } + ], + "textBefore": "independent laboratory for ", + "textAfter": " milk and muscle", + "startOffset": 153226, + "endOffset": 153232, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "71cd137997603c9058bdb7165c518f47", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bebon R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 19]: Table_cell: Method & Validation: Bebon", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 520.43, + 37.738495, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": ", Wydra V.,", + "startOffset": 57031, + "endOffset": 57039, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7f6629dc15fde98c7fd4aea7ab047dcd", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 105, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[105, 1]: Paragraph: Test facility: ibacon GmbH,", + "color": null, + "positions": [ + { + "rectangle": [ + 70.824, + 424.53, + 52.881622, + 11.017679 + ], + "pageNumber": 65 + } + ], + "textBefore": "", + "textAfter": ": ibacon GmbH,", + "startOffset": 125767, + "endOffset": 125780, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9322c2dba2ef84970eebdaf099f579bc", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ruhland S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 350, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.13 Analytical method 13 - fenpropidin residues in sucrose solution ", + "section": "[350, 2, 1]: Paragraph: Report: Ruhland S. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 196.02003, + 50.044342, + 11.017679 + ], + "pageNumber": 131 + } + ], + "textBefore": "Report: ", + "textAfter": " (2018), Fenpropidin -", + "startOffset": 275068, + "endOffset": 275078, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a9280a41abab8392442df4f888228d94", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services Ecotox GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 333, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.10 Analytical method 10 – ECO_029_03A ", + "section": "[333, 2, 1]: Paragraph: Report: Kovacevic E. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 417.8694, + 176.70003, + 119.033325, + 11.017679 + ], + "pageNumber": 125 + }, + { + "rectangle": [ + 199.73, + 164.10005, + 90.84819, + 11.017679 + ], + "pageNumber": 125 + } + ], + "textBefore": "EcoChem GmbH / ", + "textAfter": " Eutinger Str. 24,", + "startOffset": 262472, + "endOffset": 262513, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4bb8dd3c049e20b607e6a49e834fd24a", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "fish", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 287, + 0 + ], + "closestHeadline": "Table A 37: Characteristics of the analytical method used for the quantification of fenpropidin in fish water ", + "section": "[287, 0]: Headline: Table A 37: Characteristics", + "color": null, + "positions": [ + { + "rectangle": [ + 240.34067, + 161.70004, + 17.255524, + 10.929359 + ], + "pageNumber": 110 + } + ], + "textBefore": "of fenpropidin in ", + "textAfter": " water", + "startOffset": 227074, + "endOffset": 227078, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a0298936e3cb698f3c0f712fce824b91", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 27]: Table_cell: Azoxystrobin - Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 132.29999, + 50.09886, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "VV-635374 , ICI5504_12486 ", + "textAfter": " SGS Institut Fresenius", + "startOffset": 110569, + "endOffset": 110582, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8214b1c962a014bece33b8170e0713f3", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 394, + 2, + 1 + ], + "closestHeadline": "A 1.1.1.1.2.2 Independent laboratory validation ", + "section": "[394, 2, 1]: Paragraph: Report: Devine T. (2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 429.8808, + 591.35, + 40.89212, + 11.017679 + ], + "pageNumber": 141 + } + ], + "textBefore": "United Kingdom (", + "textAfter": " File No. VV465839)", + "startOffset": 295542, + "endOffset": 295550, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f872f78b5715b0ce2c967fa244004328", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Lakaschus, S. Gizler, A.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 19]: Table_cell: Lakaschus, S. Gizler, A.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 242.01001, + 55.248116, + 10.526819 + ], + "pageNumber": 53 + }, + { + "rectangle": [ + 121.1, + 230.48999, + 39.65075, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 107286, + "endOffset": 107310, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c42f3f2125dc151396bd7cbaf8123fdf", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ruhland S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 355, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[355, 2]: Paragraph: (Ruhland S., 2018)", + "color": null, + "positions": [ + { + "rectangle": [ + 458.74, + 588.23, + 48.97342, + 11.017679 + ], + "pageNumber": 133 + } + ], + "textBefore": "(", + "textAfter": ", 2018)", + "startOffset": 278701, + "endOffset": 278711, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5fa20f6a9d5b1dfa20ca0474baffa66e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N.J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 14 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 14]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 660.98, + 56.91153, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "Method: ", + "textAfter": " et al., 1999", + "startOffset": 69365, + "endOffset": 69378, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "752d585dd65557973b8e1b93a5001eaf", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 59, + 1, + 0, + 14 + ], + "closestHeadline": "Table 5.3-8: Validated methods for water ", + "section": "[59, 1, 0, 14]: Table_cell: Method and validation: Robinson", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 648.38, + 48.111115, + 10.526819 + ], + "pageNumber": 40 + } + ], + "textBefore": "Method and validation: ", + "textAfter": ".J., 2000 /", + "startOffset": 82244, + "endOffset": 82254, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "187c39b0a1f044f699cdb6eee5e5ca20", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Ehmke A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 28, + 1, + 9 + ], + "closestHeadline": "Table 5.2-8: Validated methods for the generation of pre-authorization data for Azoxystrobin in water and other matrices (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[28, 1, 9]: Table_cell: Method: Ehmke A., 2015", + "color": null, + "positions": [ + { + "rectangle": [ + 421.15, + 183.05997, + 40.587006, + 10.526819 + ], + "pageNumber": 20 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2015 Report", + "startOffset": 40887, + "endOffset": 40895, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e3805ecba395cbff449cf698df522102", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler, L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 280, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.3 Analytical method 3 - A23317A - fenpropidin residues in water ", + "section": "[280, 2, 1]: Paragraph: Report Azoxystrobin/Fenpropidin SE (A23317A)", + "color": null, + "positions": [ + { + "rectangle": [ + 300.99512, + 182.10005, + 48.73062, + 11.017679 + ], + "pageNumber": 108 + } + ], + "textBefore": "- Final Report. ", + "textAfter": " (2020) Report no.", + "startOffset": 221780, + "endOffset": 221791, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "bdc76926167675f7fd2bc15ca06f1f89", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 3, + 14 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 3, 14]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 660.98, + 35.610016, + 10.526819 + ], + "pageNumber": 38 + } + ], + "textBefore": "Method: ", + "textAfter": " 2002 Report RAM", + "startOffset": 77774, + "endOffset": 77782, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "cc23e88cb9a732c1438ea38747c0df60", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Schmidt, K.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 25]: Table_cell: Schmidt, K.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 178.28998, + 48.037086, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 106215, + "endOffset": 106226, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7373f01fb91451ad859a7a90b0183b23", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 9]: Table_cell: Fenpropidin - Single Exposure", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 380.87, + 50.09886, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "VV-471037 , CGA114900_10973 ", + "textAfter": " BioChem agrar GmbH", + "startOffset": 104302, + "endOffset": 104315, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "123aa0e2f8ef51990d8064b35d5d0de0", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "goat", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 3, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 3, 0]: Paragraph: (a): Residue definition for", + "color": null, + "positions": [ + { + "rectangle": [ + 162.19402, + 350.13, + 16.046997, + 10.095 + ], + "pageNumber": 18 + } + ], + "textBefore": "‘the group of ", + "textAfter": " metabolites referred to", + "startOffset": 36497, + "endOffset": 36501, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "90f769c4cfe40d78462415a132f52c34", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "livestock", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 72, + 1, + 5, + 1 + ], + "closestHeadline": "Table 5.3-14: Statement on extraction efficiency ", + "section": "[72, 1, 5, 1]: Paragraph: Due to differences in", + "color": null, + "positions": [ + { + "rectangle": [ + 371.6473, + 102.4, + 36.01544, + 10.526819 + ], + "pageNumber": 43 + } + ], + "textBefore": "systems used between ", + "textAfter": " metabolism studies and", + "startOffset": 93903, + "endOffset": 93912, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c3512407eda97ae5d72f38ecb36a6fa8", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 28, + 1, + 4 + ], + "closestHeadline": "Table 5.2-8: Validated methods for the generation of pre-authorization data for Azoxystrobin in water and other matrices (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[28, 1, 4]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 421.15, + 235.26001, + 31.03537, + 10.44714 + ], + "pageNumber": 20 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 40780, + "endOffset": 40786, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "259f7790600b4d3a0e47f011a553f7b9", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 305, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.6 Analytical method 6 - fenpropidin residues in water ", + "section": "[305, 2, 1]: Paragraph: Report: Bebon R., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 319.82312, + 497.63, + 41.01358, + 11.017679 + ], + "pageNumber": 118 + } + ], + "textBefore": "Rossdorf Germany (", + "textAfter": " File No. VV-468726)", + "startOffset": 245689, + "endOffset": 245697, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "80553b0f94df76d4dbb886bffeb2cd4e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Kirkwood, A.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 25]: Table_cell: Kirkwood, A.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 178.28998, + 55.32778, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 103699, + "endOffset": 103711, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f32c6ce0b9a916d00601041d898ae435", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Dreβler, K.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 270, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[270, 2]: Paragraph: (Dreβler, K., 2021)", + "color": null, + "positions": [ + { + "rectangle": [ + 450.376, + 547.07, + 54.31201, + 11.454 + ], + "pageNumber": 105 + } + ], + "textBefore": "(", + "textAfter": ", 2021)", + "startOffset": 214399, + "endOffset": 214410, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "32b74ac507754a6fd30d9219edb36d3c", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 150, + 1, + 0, + 1, + 1 + ], + "closestHeadline": "A 2.1.2.2.1.1 Method validation ", + "section": "[150, 1, 0, 1, 1]: Paragraph: Analytical method RAM 399/01", + "color": null, + "positions": [ + { + "rectangle": [ + 457.93765, + 700.46, + 29.984589, + 11.017679 + ], + "pageNumber": 77 + } + ], + "textBefore": "was validated for ", + "textAfter": " muscle, fat", + "startOffset": 149197, + "endOffset": 149203, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ba38671132b9b310e07c4d4ae19495c1", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 76, + 1, + 7 + ], + "closestHeadline": "5.3.3.7 Description of methods for the analysis of Fenpropidin in air (KCP 5.2.6) ", + "section": "[76, 1, 7]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 419.59, + 476.63, + 31.03537, + 10.44714 + ], + "pageNumber": 45 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 97002, + "endOffset": 97008, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c99edf129f1c1f07cf10b9c7c743fe49", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "ibacon GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 21]: Table_cell: Azoxystrobin SC (A12705B) -", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 218.97, + 56.44339, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "VV-414544 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 103653, + "endOffset": 103664, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8db2e08b0f91ea67b272a99ffc8d2492", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Zampakou, M.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 25]: Table_cell: Zampakou, M.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 189.81, + 59.152443, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 101022, + "endOffset": 101034, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7310114c3e1ab278f15160404d4b6baf", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 241, + 2, + 4 + ], + "closestHeadline": "A 2.1.2.5.1.2 Independent laboratory validation ", + "section": "[241, 2, 4]: Paragraph: Syngenta File No. ICI5504_12452", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 91.00002, + 41.013626, + 11.017679 + ], + "pageNumber": 97 + } + ], + "textBefore": "", + "textAfter": " File No. ICI5504_12452", + "startOffset": 192170, + "endOffset": 192178, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4b5f704e03f81f1d01130303e96e4aff", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richardson", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 75, + 1, + 1, + 29 + ], + "closestHeadline": "Table 5.3-16: Validated methods for water ", + "section": "[75, 1, 1, 29]: Table_cell: GRM024.03A Richardson, 2007 Report", + "color": null, + "positions": [ + { + "rectangle": [ + 412.75, + 92.079994, + 45.507324, + 10.526819 + ], + "pageNumber": 44 + } + ], + "textBefore": "GRM024.03A ", + "textAfter": ", 2007 Report", + "startOffset": 95918, + "endOffset": 95928, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a59bd1cd7d78da7d194e0d75168e11dd", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1, + 3 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1, 3]: Table_cell: Kettner R. (2011). Analytical", + "color": null, + "positions": [ + { + "rectangle": [ + 438.03265, + 464.03, + 37.270386, + 10.526819 + ], + "pageNumber": 11 + } + ], + "textBefore": "Issued date 08.07.2011, ", + "textAfter": " File No. VV127958", + "startOffset": 20899, + "endOffset": 20907, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fb6c3c45860cfce64bf1cbdd96959ab9", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 350, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.13 Analytical method 13 - fenpropidin residues in sucrose solution ", + "section": "[350, 2, 1]: Paragraph: Report: Ruhland S. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 203.43944, + 145.26003, + 41.013626, + 11.017679 + ], + "pageNumber": 131 + } + ], + "textBefore": "Gerichshain, Germany (", + "textAfter": " File No. VV-471136)", + "startOffset": 275351, + "endOffset": 275359, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7674b93651a62adc486f87548f8f5385", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 8, + 1, + 3 + ], + "closestHeadline": "Table 5.2-1: Methods suitable for the determination of the active substances Azoxystrobin and Fenpropidin in plant protection product A23317A ", + "section": "[8, 1, 3]: Table_cell: Author(s), year", + "color": null, + "positions": [ + { + "rectangle": [ + 74.064, + 687.86, + 31.035362, + 10.44714 + ], + "pageNumber": 8 + } + ], + "textBefore": "", + "textAfter": "(s), year", + "startOffset": 14345, + "endOffset": 14351, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d78b8bbb95c4d9a72b2b572631bae087", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 9]: Table_cell: Determination of toluene in", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 286.31, + 50.09886, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "VV-127729 , A16283D_10108 ", + "textAfter": " Syngenta Crop Protection", + "startOffset": 99709, + "endOffset": 99722, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a5f4624c0e30a87693d36f58b4f1f0aa", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kang J.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 29 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 29]: Table_cell: ILV: Kang J., 2003", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 414.81, + 30.547363, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "ILV: ", + "textAfter": ", 2003 Report", + "startOffset": 71485, + "endOffset": 71492, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "815f20112854ca7dc3b17ebbbd0b6cf5", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1]: Table: #cols: 5, #rows: 15, Component of residue definition:", + "color": null, + "positions": [ + { + "rectangle": [ + 74.29056, + 421.53, + 27.30037, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "Milk (", + "textAfter": ")", + "startOffset": 75632, + "endOffset": 75638, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9c6049d64b146e5d8fff5868fc7b2b27", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kettner R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 19, + 1, + 3 + ], + "closestHeadline": "Table 5.2-3: Methods suitable for the determination of the relevant impurities in plant protection product (PPP) A23317A ", + "section": "[19, 1, 3]: Table_cell: Kettner R. (2011), Zampakou", + "color": null, + "positions": [ + { + "rectangle": [ + 284.69, + 283.01993, + 41.58304, + 10.526819 + ], + "pageNumber": 12 + } + ], + "textBefore": "", + "textAfter": " (2011), Zampakou M.", + "startOffset": 22750, + "endOffset": 22760, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e43024589795129df7007dcf45639e76", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 15]: Table_cell: Azoxystrobin (ICI5504) and Cyproconazole", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 294.23, + 50.09886, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "VV-382035 , ICI5504_10398 ", + "textAfter": " GAB Biotechnologie GmbH", + "startOffset": 101989, + "endOffset": 102002, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "171987b08a41db0ee54dbb6024add3da", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 35, + 1, + 9 + ], + "closestHeadline": "Table 5.2-13: Validated methods for the generation of pre-authorization data for Fenpropidin in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[35, 1, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 407.59, + 182.22003, + 31.03537, + 10.44714 + ], + "pageNumber": 23 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 49383, + "endOffset": 49389, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8e030548c8f16d90a1c95d450794c995", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Brown, D.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 7]: Table_cell: Brown, D.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 41.91166, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 111984, + "endOffset": 111993, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5550c6e186fb43d4438f5656c3ea456f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lakaschus S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 24 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 24]: Table_cell: ILV: Lakaschus S., Gizler", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 452.15, + 52.73828, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "ILV: ", + "textAfter": ", Gizler A.,", + "startOffset": 65976, + "endOffset": 65988, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "54146f55b0608bde4632cfc1a00c49cf", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 29 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 29]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 434.85, + 44.461487, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "Report RAM 305/02 ", + "textAfter": " et al., 2004", + "startOffset": 69947, + "endOffset": 69957, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9bc50476af9d92d291f13921295e7df1", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richards S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5]: Table: #cols: 5, #rows: 9, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 475.79, + 46.035156, + 10.526819 + ], + "pageNumber": 18 + } + ], + "textBefore": "New data Validation: ", + "textAfter": ", 2002 Report", + "startOffset": 35191, + "endOffset": 35202, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8acd0cab0b038702508623b25512992e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 5, + 2, + 1, + 3 + ], + "closestHeadline": "5.2 Methods used for the generation of pre-authorization data (KCP 5.1) ", + "section": "[5, 2, 1, 3]: Table_cell: Zampakou, M. 2021. SF-1057/1", + "color": null, + "positions": [ + { + "rectangle": [ + 321.19, + 707.66, + 120.342255, + 10.526819 + ], + "pageNumber": 7 + } + ], + "textBefore": "by capillary GC. ", + "textAfter": ", Muenchwilen, Switzerland.", + "startOffset": 12420, + "endOffset": 12447, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0c5b29dd8a00db693e420735259aa8a2", + "type": "published_information", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Mass Spectrometry", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 334, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[334, 1]: Paragraph: Pollen, nectar, flowers, leaves", + "color": null, + "positions": [ + { + "rectangle": [ + 154.92673, + 598.55, + 85.15155, + 11.017679 + ], + "pageNumber": 126 + } + ], + "textBefore": "(LC) coupled with ", + "textAfter": " (MS). The limit", + "startOffset": 263050, + "endOffset": 263067, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b5d6add4806eb59a0c4cb11a0be17b44", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N.J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 54 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 54]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 328.89, + 56.91153, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "Method: ", + "textAfter": " et al., 1999", + "startOffset": 68273, + "endOffset": 68286, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5bcf88a10f5781a0b49555644ff1d117", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 2, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 2, 4]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 404.83, + 726.86, + 31.03537, + 10.44714 + ], + "pageNumber": 15 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 27878, + "endOffset": 27884, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9f28f1a168c1ce3d86551452d19bc1f2", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Richards, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 25]: Table_cell: Richards, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 155.37, + 48.545036, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 102428, + "endOffset": 102440, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c86223112470f78c01b5527f16935176", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kleebaum K.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 327, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.9 Analytical method 9 – fenpropidin residues in royal jelly/ASS ", + "section": "[327, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 699.5, + 59.847855, + 11.017679 + ], + "pageNumber": 124 + } + ], + "textBefore": "Report: ", + "textAfter": " (2018), Fenpropidin –", + "startOffset": 258334, + "endOffset": 258345, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "bc498278220a1002b4c5a8ce861d041c", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Daphnia magna", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 9]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) -", + "color": null, + "positions": [ + { + "rectangle": [ + 537.32776, + 426.98, + 63.15625, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "the Water Flea ", + "textAfter": " Straus under Laboratory", + "startOffset": 106762, + "endOffset": 106775, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c347542256247d8ed8382e1f85157be6", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 21]: Table_cell: Residue Analytical Method for", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 242.01001, + 28.8741, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "and R230310 in ", + "textAfter": " Muscle Tissue, Fat", + "startOffset": 108767, + "endOffset": 108773, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "112b9af21575335fa83bf14e55539b3a", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 0, + 29 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 0, 29]: Table_cell: Method: Burke S.R., Sapiets", + "color": null, + "positions": [ + { + "rectangle": [ + 449.14, + 86.319984, + 40.985443, + 10.526819 + ], + "pageNumber": 13 + } + ], + "textBefore": "Method: Burke S.R., ", + "textAfter": ", 1994", + "startOffset": 26025, + "endOffset": 26035, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "24d2cd67fac64ee00d03a305ba8ea4aa", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins - ADME Bioanalyses", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 27]: Table_cell: Azoxystrobin – Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 120.78001, + 123.10974, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "ICI5504_11490 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 111773, + "endOffset": 111800, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2e5445ac26196c750bc5725c5669d235", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Celle", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 92, + 2 + ], + "closestHeadline": "A3. Test Facilities ", + "section": "[92, 2]: Paragraph: BioChem agrar GmbH, Kupferstr.", + "color": null, + "positions": [ + { + "rectangle": [ + 261.41003, + 494.99, + 23.250244, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "(Trial G07N013B): 29221 ", + "textAfter": ", Germany Analytical", + "startOffset": 119180, + "endOffset": 119185, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e3c4a71b9858c74dc1b46152a2d5d03a", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 9 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 716.18, + 31.03537, + 10.44714 + ], + "pageNumber": 32 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 66977, + "endOffset": 66983, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b232da3b8bfe003d42842786a2446c53", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Richardson M.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 380, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[380, 3, 1]: Paragraph: Report: Richardson M. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 194.34004, + 65.94194, + 11.017679 + ], + "pageNumber": 138 + } + ], + "textBefore": "Report: ", + "textAfter": " (2007) Fenpropidin (CGA114900)", + "startOffset": 289642, + "endOffset": 289655, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8c3db2350e12f302d3ee71938849505a", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Daphnia magna", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 42, + 1, + 32 + ], + "closestHeadline": "Table 5.2-20: Methods and relationship to studies presented in document Part B, Section 9 ", + "section": "[42, 1, 32]: Table_cell: Report S20-06698 (study target", + "color": null, + "positions": [ + { + "rectangle": [ + 442.39, + 443.49, + 64.77997, + 10.5318 + ], + "pageNumber": 29 + } + ], + "textBefore": "(study target organism: ", + "textAfter": ")", + "startOffset": 60075, + "endOffset": 60088, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "af01e5e48f0d4c78aab19de5f4df76ae", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 327, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.9 Analytical method 9 – fenpropidin residues in royal jelly/ASS ", + "section": "[327, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 323.1682, + 648.86, + 41.01358, + 11.017679 + ], + "pageNumber": 124 + } + ], + "textBefore": "Gerichshain, Germany (", + "textAfter": " File No. VV-470837)", + "startOffset": 258642, + "endOffset": 258650, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "acb7569e7f0a59ccecc66e2ac456f079", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 6, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 52 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 105236, + "endOffset": 105242, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1f984b89c8208dd06fd9064ae8e781a0", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Dieterle, R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 35, + 2 + ], + "closestHeadline": "Table 5.2-13: Validated methods for the generation of pre-authorization data for Fenpropidin in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[35, 2]: Table: #cols: 5, #rows: 5, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 593.03, + 46.26422, + 10.526819 + ], + "pageNumber": 24 + } + ], + "textBefore": "Method: ", + "textAfter": ", 1992 Report:", + "startOffset": 50817, + "endOffset": 50829, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1f64a1ca2f9d2e6471479a99bda2c264", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 15]: Table_cell: Validation of residue method", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 294.23, + 50.09886, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "VV-393069 , CGA114900_10443 ", + "textAfter": " ADME - Bioanalyses", + "startOffset": 111229, + "endOffset": 111242, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d3387afb1f02a8ae645fe70349026af5", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "hen", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1]: Table: #cols: 5, #rows: 15, Component of residue definition:", + "color": null, + "positions": [ + { + "rectangle": [ + 74.29056, + 217.97995, + 14.432045, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "Eggs (", + "textAfter": ")", + "startOffset": 75943, + "endOffset": 75946, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3e2008f21661086fefd80776333f763e", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Poperechna N.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 200, + 3, + 1 + ], + "closestHeadline": "A 2.1.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[200, 3, 1]: Paragraph: Report: Link T., Poperechna", + "color": null, + "positions": [ + { + "rectangle": [ + 238.36998, + 496.43, + 64.69444, + 11.017679 + ], + "pageNumber": 86 + } + ], + "textBefore": "Report: Link T., ", + "textAfter": ", Crook S.", + "startOffset": 167841, + "endOffset": 167854, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9d59f83219b19c8f66bcc9af603fcf55", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kovacevic E.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 3, + 0, + 29 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 3, 0, 29]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 173.45999, + 53.913544, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2018 Report", + "startOffset": 58923, + "endOffset": 58935, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "92563c78d8a2b63ad7d6997314f0e5fb", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 9 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 716.18, + 31.03537, + 10.44714 + ], + "pageNumber": 33 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 69213, + "endOffset": 69219, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "40d8e797685db7696b923b2b6f04bfdf", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 10, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 56 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 110644, + "endOffset": 110650, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "87aade0041487410911a47d5c7c79bc3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Gemrot, F.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 13]: Table_cell: Gemrot, F.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 340.19, + 43.624825, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 109783, + "endOffset": 109793, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "02bcf8dcf8b22a53ad2c87ea350b75fe", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Gizler,A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 131, + 2, + 1 + ], + "closestHeadline": "Reproducibility ", + "section": "[131, 2, 1]: Paragraph: Report: Independent Laboratory Validation", + "color": null, + "positions": [ + { + "rectangle": [ + 496.09006, + 474.95, + 40.89218, + 11.017679 + ], + "pageNumber": 73 + } + ], + "textBefore": "Laboratory, Lakaschus, S., ", + "textAfter": " 2017, Report No.", + "startOffset": 142303, + "endOffset": 142312, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ba7c3e935a2007f33d42e85420c0415e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Crook, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 19]: Table_cell: Crook, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 253.53, + 38.087044, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 102065, + "endOffset": 102074, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5b36680d79f3b8f56adb9174ee134c55", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Atkinson, S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 160, + 2, + 1 + ], + "closestHeadline": "A 2.1.2.2.1.2 Independent laboratory validation ", + "section": "[160, 2, 1]: Paragraph: Report: Atkinson, S., 2003.", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 622.7, + 54.8136, + 11.017679 + ], + "pageNumber": 79 + } + ], + "textBefore": "Report: ", + "textAfter": ", 2003.", + "startOffset": 153298, + "endOffset": 153310, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0983f1ab37a06d59ee4c25fd83ee1fe7", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Ehmke, A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 103, + 3, + 1 + ], + "closestHeadline": "A 2.1.1.6 Description of analytical methods for the determination of residues in support of ecotoxicological studies (KCP 5.1.2.6) ", + "section": "[103, 3, 1]: Paragraph: Report Azoxystrobin SC (A12705B)", + "color": null, + "positions": [ + { + "rectangle": [ + 318.43, + 125.32003, + 48.600006, + 11.017679 + ], + "pageNumber": 64 + } + ], + "textBefore": "Test, Repeated Exposure, ", + "textAfter": " (2015) Report no.", + "startOffset": 125094, + "endOffset": 125103, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "90a08889801e55385a9f1633dbf7b051", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Stahl F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 34 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 34]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 318.21, + 31.03534, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "ZEN-0002V New data ", + "textAfter": ", 2017 Report", + "startOffset": 66264, + "endOffset": 66272, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "abc16ec4ef6aa951c75ae0b35c1a6dec", + "type": "published_information", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Mass Spectrometry", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 312, + 1 + ], + "closestHeadline": "Principle of the Method ", + "section": "[312, 1]: Paragraph: Water and sediment samples", + "color": null, + "positions": [ + { + "rectangle": [ + 477.08572, + 303.81003, + 51.037872, + 11.017679 + ], + "pageNumber": 120 + }, + { + "rectangle": [ + 70.824, + 291.18002, + 37.999687, + 11.017679 + ], + "pageNumber": 120 + } + ], + "textBefore": "(LC) coupled with ", + "textAfter": " (MS). The limit", + "startOffset": 250732, + "endOffset": 250749, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2e270ffd123825ac99724c70360c46a5", + "type": "CBI_address", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Wokingham, RG41 2FD, United Kingdom", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 394, + 2, + 1 + ], + "closestHeadline": "A 1.1.1.1.2.2 Independent laboratory validation ", + "section": "[394, 2, 1]: Paragraph: Report: Devine T. (2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 227.06503, + 591.35, + 194.75656, + 11.017679 + ], + "pageNumber": 141 + } + ], + "textBefore": "Centre, Oaklands Park, ", + "textAfter": " (Syngenta File No.", + "startOffset": 295505, + "endOffset": 295540, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5a842df3687cba78c032f1db6866d05e", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 82, + 2, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and not relied on ", + "section": "[82, 2, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 132.98, + 470.66, + 31.035355, + 10.44714 + ], + "pageNumber": 59 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 114180, + "endOffset": 114186, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "13378bdc7ca407f902f8b638a99fc4ce", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 360, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[360, 3, 1]: Paragraph: Report: Hargreaves S. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 516.328, + 635.9, + 20.854614, + 11.017679 + ], + "pageNumber": 134 + }, + { + "rectangle": [ + 199.73, + 623.3, + 23.967865, + 11.017679 + ], + "pageNumber": 134 + } + ], + "textBefore": "Report Number GRM024.02A. ", + "textAfter": ", Jealott’s Hill", + "startOffset": 280123, + "endOffset": 280131, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "be4a82b0a1a66c580094ffa639367ffb", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Obert-Rauser", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 29, + 1, + 19 + ], + "closestHeadline": "Table 5.2-9: Validated methods for the generation of pre-authorization data in support of A23317A in water and other matrices (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[29, 1, 19]: Table_cell: Method: Obert-Rauser P., 2021", + "color": null, + "positions": [ + { + "rectangle": [ + 421.15, + 543.47, + 53.84897, + 10.526819 + ], + "pageNumber": 21 + } + ], + "textBefore": "Method: ", + "textAfter": " P., 2021 Report", + "startOffset": 41527, + "endOffset": 41539, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6ba4a3ef9b56aa299d0fc35d74571dca", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 350, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.13 Analytical method 13 - fenpropidin residues in sucrose solution ", + "section": "[350, 2, 1]: Paragraph: Report: Ruhland S. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 286.91287, + 170.70003, + 69.38641, + 11.017679 + ], + "pageNumber": 131 + } + ], + "textBefore": "48 BAC 0019. ", + "textAfter": ", Labor für", + "startOffset": 275229, + "endOffset": 275242, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "da9a36c745daf84e82fae93a4c168446", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kovacevic E.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 1, + 1, + 9 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 1, 9]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 679.22, + 53.913544, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2018 Report", + "startOffset": 57835, + "endOffset": 57847, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "af52d138365edbede7b6f46062c1c4d6", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Marini, J.", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 5, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 25]: Table_cell: Marini, J.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 166.77002, + 38.565117, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 105004, + "endOffset": 105014, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a2ea664b29784fde8b2bbd7eb0fba513", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 1, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 364.55, + 31.035362, + 10.44714 + ], + "pageNumber": 47 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 99405, + "endOffset": 99411, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b7bddd6801bdff0bff4eb7862fba91fc", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 1, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 1, 4]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 404.83, + 726.86, + 31.03537, + 10.44714 + ], + "pageNumber": 14 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 26121, + "endOffset": 26127, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "06977429a01e87c971718f36178aa4c5", + "type": "published_information", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Mass Spectrometry", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 328, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[328, 1]: Paragraph: Diet (royal jelly/ASS containing", + "color": null, + "positions": [ + { + "rectangle": [ + 344.57608, + 418.41, + 84.79819, + 11.017679 + ], + "pageNumber": 124 + } + ], + "textBefore": "(LC) coupled with ", + "textAfter": " (MS). The limit", + "startOffset": 259164, + "endOffset": 259181, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "58ebf8fa8667731774103d2b36ed5f56", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 21]: Table_cell: A23317A – Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 230.48999, + 50.09886, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "Document No. VV-889304 ", + "textAfter": " GLP Testing Facility", + "startOffset": 100951, + "endOffset": 100964, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "121658fdb57d781ed1770ff72277b493", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "ibacon GmbH Arheilger Weg 17 64380 Rossdorf", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 344, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.12 Analytical method 12 - fenpropidin residues in water ", + "section": "[344, 2, 1]: Paragraph: Report: Pupp A., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 74.680016, + 223.14046, + 11.017679 + ], + "pageNumber": 129 + } + ], + "textBefore": "Report No: 40322210. ", + "textAfter": " Germany (Syngenta File", + "startOffset": 271634, + "endOffset": 271677, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0e9097c55a46d58d0b0d78758be8a412", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Dreßler K.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 3, + 0, + 24 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 3, 0, 24]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 225.65994, + 42.7583, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "S17-08105 (VV-469879) Validation: ", + "textAfter": ", 2020 Report", + "startOffset": 58790, + "endOffset": 58800, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "055b7b24b919a722f41d48edeca5d58d", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 12, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 12, 9]: Table_cell: Fenpropidin - Residue Method", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 392.39, + 50.09886, + 10.526819 + ], + "pageNumber": 58 + } + ], + "textBefore": "VV-125646 , CGA114900/4903 ", + "textAfter": " Syngenta - Jealott's", + "startOffset": 113551, + "endOffset": 113564, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4c7bcbcc8fe52ccf7250580b4d5d5221", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 321, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.8 Analytical method 8 - fenpropidin residues in royal jelly/ASS ", + "section": "[321, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 230.918, + 534.35, + 71.08658, + 11.017679 + ], + "pageNumber": 122 + } + ], + "textBefore": "48 BLA 0005. ", + "textAfter": ", Labor für", + "startOffset": 254436, + "endOffset": 254449, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d7fe604534eb46bb1cb549645a7238a3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4]: Table: #cols: 5, #rows: 13, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 434.95, + 190.49997, + 41.031097, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "Validation: Ryan J., ", + "textAfter": " / 1994, Report", + "startOffset": 33872, + "endOffset": 33882, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ef251525b5f0146512d790e3951f44bd", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kirkwood A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 320, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[320, 2]: Paragraph: (Kirkwood A., 2018)", + "color": null, + "positions": [ + { + "rectangle": [ + 449.62, + 74.920006, + 58.04831, + 11.017679 + ], + "pageNumber": 121 + } + ], + "textBefore": "(", + "textAfter": ", 2018)", + "startOffset": 253827, + "endOffset": 253838, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2aafa43679b570846cb39e2ebe30b372", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Report Zampakou M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1]: Table: #cols: 2, #rows: 19, Reference: KCP 5.1.1 Report", + "color": null, + "positions": [ + { + "rectangle": [ + 76.824, + 98.67997, + 27.22068, + 10.526819 + ], + "pageNumber": 11 + }, + { + "rectangle": [ + 199.85, + 98.67997, + 56.41342, + 10.526819 + ], + "pageNumber": 11 + } + ], + "textBefore": "Reference: KCP 5.1.1 ", + "textAfter": " (2020). Statement on", + "startOffset": 21328, + "endOffset": 21346, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d9e47f9044b5b36ff63a01853cff5785", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Weeren R.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 34 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 34]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 451.65, + 42.658722, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "Validation: ", + "textAfter": ", Pelz S.,", + "startOffset": 67573, + "endOffset": 67582, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "219788664bebd5f7aa7350edb4e49d94", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 264, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[264, 1]: Paragraph: Test facility: BioChem agrar,", + "color": null, + "positions": [ + { + "rectangle": [ + 128.66, + 120.04, + 67.02385, + 11.017679 + ], + "pageNumber": 102 + } + ], + "textBefore": "Test facility: ", + "textAfter": ", Labor für", + "startOffset": 208114, + "endOffset": 208127, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b4decb9902f28b781d25a7ed7d54bf47", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richards S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1, + 64 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1, 64]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 159.89993, + 46.035156, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "New data Validation: ", + "textAfter": ", 2002 Report", + "startOffset": 76037, + "endOffset": 76048, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ea9d6a393e0e1ac688b0323fe195c90c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ryan J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4, + 64 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4, 64]: Table_cell: Method & Validation: Ryan", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 119.67997, + 29.970001, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": " et al., 1995", + "startOffset": 34433, + "endOffset": 34440, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4b8aecaf6dfa3a8d3e2540573dfa5865", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 1 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 1]: Table: #cols: 5, #rows: 5, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 449.14, + 641.18, + 40.985443, + 10.526819 + ], + "pageNumber": 14 + } + ], + "textBefore": "Validation: Burke S.R., ", + "textAfter": ", 1995 Report", + "startOffset": 26273, + "endOffset": 26283, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "01a6e331b0c77b11a7af2e4ad97d9a84", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2, + 44 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2, 44]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 294.17996, + 35.610016, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "Method: ", + "textAfter": " 2002 Report RAM", + "startOffset": 77156, + "endOffset": 77164, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1a6292138f83668aa5fe0e50b7487f8f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 54 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 54]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 305.85, + 44.461487, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "Report RAM 305/02 ", + "textAfter": " et al., 2004", + "startOffset": 68318, + "endOffset": 68328, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ff4942cd0bd4b4d7bfb50148bdf2fb70", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5, + 26 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5, 26]: Table_cell: Muscle (bovine)", + "color": null, + "positions": [ + { + "rectangle": [ + 156.36656, + 472.31, + 27.300354, + 10.526819 + ], + "pageNumber": 18 + } + ], + "textBefore": "Muscle (", + "textAfter": ")", + "startOffset": 35531, + "endOffset": 35537, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c6d0fb782d0b46fe48c3cdd572accc40", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Devine T.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 394, + 2, + 1 + ], + "closestHeadline": "A 1.1.1.1.2.2 Independent laboratory validation ", + "section": "[394, 2, 1]: Paragraph: Report: Devine T. (2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 654.62, + 44.28145, + 11.017679 + ], + "pageNumber": 141 + } + ], + "textBefore": "Report: ", + "textAfter": " (2016) Fenpropidin (CGA114900)", + "startOffset": 295158, + "endOffset": 295167, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d9c925dbc46f3354445ebd5e78572ab6", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 5, + 2, + 1, + 15 + ], + "closestHeadline": "5.2 Methods used for the generation of pre-authorization data (KCP 5.1) ", + "section": "[5, 2, 1, 15]: Table_cell: Zampakou, M. 2020. Azoxystrobin/", + "color": null, + "positions": [ + { + "rectangle": [ + 200.09, + 472.43, + 37.27031, + 10.526819 + ], + "pageNumber": 7 + } + ], + "textBefore": "Issued date 26.10.2020, ", + "textAfter": " File No. VV-889304", + "startOffset": 12865, + "endOffset": 12873, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7eb4bc60a2ee046638e9f3c18bd879ff", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 0, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 0, 4]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 404.83, + 277.26, + 31.03537, + 10.44714 + ], + "pageNumber": 13 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 24812, + "endOffset": 24818, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "177a2c233eba780ee45da1755cb13379", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Clarke D.M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 1, + 24, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 1, 24, 0]: Paragraph: Method: Burke S.R., 1996", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 509.63, + 50.188416, + 10.526819 + ], + "pageNumber": 14 + } + ], + "textBefore": "RAM 243/04 Validation: ", + "textAfter": ", Sapiets A.,", + "startOffset": 27669, + "endOffset": 27680, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9e341e861b8a726ac5012042665320dd", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Celle", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 92, + 2 + ], + "closestHeadline": "A3. Test Facilities ", + "section": "[92, 2]: Paragraph: BioChem agrar GmbH, Kupferstr.", + "color": null, + "positions": [ + { + "rectangle": [ + 378.3236, + 507.59, + 23.150879, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "lnstitut tor Bienenkunde ", + "textAfter": ", Herzogin-Eleonore-Allee 5,", + "startOffset": 119122, + "endOffset": 119127, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "971f1a387497406418b30e3fc32eb031", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 66, + 1, + 9 + ], + "closestHeadline": "Table 5.3-11: Validated methods for food and feed of plant origin ", + "section": "[66, 1, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 443.23, + 687.86, + 31.03537, + 10.44714 + ], + "pageNumber": 42 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 86757, + "endOffset": 86763, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6159e9ece795b191a1436ff6fc8598fa", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 21]: Table_cell: Fenpropidin - Analytical Method", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 207.45001, + 50.09886, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "VV-469879 , CGA114900_10922 ", + "textAfter": " Eurofins Agroscience Services", + "startOffset": 104913, + "endOffset": 104926, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f217109c7e39432d9de1d6e6ec3842fa", + "type": "PII", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "18 48 BLA", + "reason": "Found after \"No:\" contact keyword", + "matchedRule": "PII.4.0", + "legalBasis": "Reg (EC) No 1107/2009 Art. 63 (2e)", + "imported": false, + "containingNodeId": [ + 321, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.8 Analytical method 8 - fenpropidin residues in royal jelly/ASS ", + "section": "[321, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 485.2965, + 546.95, + 51.656128, + 11.017679 + ], + "pageNumber": 122 + } + ], + "textBefore": "Conditions. Report No: ", + "textAfter": " 0005. BioChem agrar,", + "startOffset": 254420, + "endOffset": 254429, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5d8770b1fb32d4805515a8f9ac79f3f8", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Bracknell, Berkshire", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 360, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[360, 3, 1]: Paragraph: Report: Hargreaves S. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 440.04877, + 623.3, + 94.11603, + 11.017679 + ], + "pageNumber": 134 + } + ], + "textBefore": "Inernational Research Centre, ", + "textAfter": ", RG42 6EY,", + "startOffset": 280178, + "endOffset": 280198, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "785348b9c5802f66053a400e9774e3ff", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 59, + 1, + 0, + 9 + ], + "closestHeadline": "Table 5.3-8: Validated methods for water ", + "section": "[59, 1, 0, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 703.58, + 31.03537, + 10.44714 + ], + "pageNumber": 40 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 82130, + "endOffset": 82136, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7b79425fc972b82804916552275d0882", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Tillkes, M.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 7]: Table_cell: Tillkes, M.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 44.06304, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 109496, + "endOffset": 109507, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "74fe4f6e91fbd14417c0d8dda1541d1a", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Schuler, L.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 7]: Table_cell: Schuler, L.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 44.18255, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 106672, + "endOffset": 106683, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "267e012ed0f861a3e84915c8af1c1182", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Robinson", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 76, + 1, + 11 + ], + "closestHeadline": "5.3.3.7 Description of methods for the analysis of Fenpropidin in air (KCP 5.2.6) ", + "section": "[76, 1, 11]: Table_cell: GRM024.01A Robinson, 2006 Report:", + "color": null, + "positions": [ + { + "rectangle": [ + 419.59, + 424.41, + 38.306244, + 10.526819 + ], + "pageNumber": 45 + } + ], + "textBefore": "GRM024.01A ", + "textAfter": ", 2006 Report:", + "startOffset": 97092, + "endOffset": 97100, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "689dd9ee4dc476f0ef93c155a3c0fefb", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N.J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4, + 9, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4, 9, 0]: Paragraph: Method Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 670.22, + 56.91153, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "Method ", + "textAfter": " et al., 1999", + "startOffset": 31436, + "endOffset": 31449, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "473317137b9c38bb4fb2a5bf6831995e", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 29, + 1, + 9 + ], + "closestHeadline": "Table 5.2-9: Validated methods for the generation of pre-authorization data in support of A23317A in water and other matrices (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[29, 1, 9]: Table_cell: Method: Schuler L., 2020", + "color": null, + "positions": [ + { + "rectangle": [ + 421.15, + 647.9, + 41.67267, + 10.526819 + ], + "pageNumber": 21 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2020 Report", + "startOffset": 41306, + "endOffset": 41316, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0aef65f3b6490810e839cca2a4eca2bd", + "type": "CBI_address", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Analytik GmbH, Kupferstraße 6, 04827 Machern OT Gerichshain, Germany", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 321, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.8 Analytical method 8 - fenpropidin residues in royal jelly/ASS ", + "section": "[321, 2, 1]: Paragraph: Report: Kleebaum K. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 498.329, + 534.35, + 38.507538, + 11.017679 + ], + "pageNumber": 122 + }, + { + "rectangle": [ + 199.73, + 521.75, + 308.1944, + 11.017679 + ], + "pageNumber": 122 + } + ], + "textBefore": "biologische und chemische, ", + "textAfter": " (Syngenta File No.", + "startOffset": 254488, + "endOffset": 254556, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3e8d5eb66f30cc4f0527b884d8e68a62", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 21]: Table_cell: Residue Analytical Method for", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 196.04999, + 50.09886, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "VV-124385 , ICI5504/1651 ", + "textAfter": " Syngenta - Jealott's", + "startOffset": 102350, + "endOffset": 102363, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e76819e9b7aa6699b7bdf88423ffbd20", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 49, + 1, + 5 + ], + "closestHeadline": "Table 5.3-3: Statement on extraction efficiency ", + "section": "[49, 1, 5]: Table_cell: This is a request", + "color": null, + "positions": [ + { + "rectangle": [ + 352.15, + 416.73, + 32.957703, + 10.526819 + ], + "pageNumber": 35 + } + ], + "textBefore": "the extraction solvents. ", + "textAfter": ".J., 1999 /", + "startOffset": 73552, + "endOffset": 73560, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0a2cc9fa440a0d0e3e5e1a2032664e3c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ruhland S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 29 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 29]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 324.09003, + 44.461487, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "New study Validation: ", + "textAfter": ", 2018 Report", + "startOffset": 57384, + "endOffset": 57394, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6831803add031dfd75397393fbe71c99", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Zampakou, M.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 13]: Table_cell: Zampakou, M.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 351.71, + 59.152443, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 100594, + "endOffset": 100606, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "60983d637a7c4770226753f759c148b3", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta - Jealott's Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 27]: Table_cell: Azoxystrobin and R230310 :", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 109.26002, + 95.422, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "ICI5504/1652 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 102699, + "endOffset": 102724, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c3dabbd97b977f59540caa41426e6a6c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Pelz S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 113, + 3, + 1 + ], + "closestHeadline": "A 2.1.2 Methods for post-authorization control and monitoring purposes (KCP 5.2) ", + "section": "[113, 3, 1]: Paragraph: Report: Validation of the", + "color": null, + "positions": [ + { + "rectangle": [ + 495.49164, + 438.93, + 30.591858, + 11.017679 + ], + "pageNumber": 68 + } + ], + "textBefore": "Materials, Weeren R.D., ", + "textAfter": ", 2001, Report", + "startOffset": 131543, + "endOffset": 131550, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4bcd4318df1b84af08790614221bda39", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 27]: Table_cell: Azoxystrobin – Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 120.78001, + 50.09886, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "VV-401211 , ICI5504_11490 ", + "textAfter": " Eurofins - ADME", + "startOffset": 111759, + "endOffset": 111772, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2162af68d3a6304f731274ffba280dd7", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot, A. J.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 66, + 1 + ], + "closestHeadline": "Table 5.3-11: Validated methods for food and feed of plant origin ", + "section": "[66, 1]: Table: #cols: 5, #rows: 10, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 424.15, + 639.62, + 45.756287, + 10.526819 + ], + "pageNumber": 42 + } + ], + "textBefore": "REM 164.09 Validation: ", + "textAfter": " (2004) Report: RJ3548B", + "startOffset": 86885, + "endOffset": 86898, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a3447c57280cef51e57e96df14179c46", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 38, + 1, + 9 + ], + "closestHeadline": "Table 5.2-15: Validated methods for the generation of pre-authorization data for CGA289267 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[38, 1, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 423.07, + 666.14, + 31.03537, + 10.44714 + ], + "pageNumber": 25 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 53450, + "endOffset": 53456, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5573703da809e8378484413395560551", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 35, + 1 + ], + "closestHeadline": "Table 5.2-13: Validated methods for the generation of pre-authorization data for Fenpropidin in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[35, 1]: Table: #cols: 5, #rows: 4, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 79.47996, + 43.23645, + 10.526819 + ], + "pageNumber": 23 + } + ], + "textBefore": "REM 164.10 Validation: ", + "textAfter": " 2005 Report: RJ3636B", + "startOffset": 49515, + "endOffset": 49527, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6f30040a51068a54163de23a955125ea", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection Munchwilen AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 9]: Table_cell: Statement on Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 380.87, + 173.34409, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "VV-887259 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 101672, + "endOffset": 101710, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3ed4299688be7dbc0eef76a5d54e3087", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Tillkes M", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 173, + 2, + 2 + ], + "closestHeadline": "A 2.1.2.2.2 Analytical method 2: DFG S19 ", + "section": "[173, 2, 2]: Paragraph: Validation of DFG Method", + "color": null, + "positions": [ + { + "rectangle": [ + 225.1551, + 579.35, + 45.19774, + 11.017679 + ], + "pageNumber": 81 + } + ], + "textBefore": "Liver and Egg, ", + "textAfter": "., 1997, Report", + "startOffset": 157270, + "endOffset": 157279, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a6de758f37d5e0147d831c7ab48aa0e6", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "64380 Rossdorf", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 105, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[105, 1]: Paragraph: Test facility: ibacon GmbH,", + "color": null, + "positions": [ + { + "rectangle": [ + 281.98447, + 424.53, + 70.02667, + 11.017679 + ], + "pageNumber": 65 + } + ], + "textBefore": "Arheilger Weg 17, ", + "textAfter": ", Germany", + "startOffset": 125813, + "endOffset": 125827, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9dd625473b7ecf11ce18ad7cde06f800", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 39, + 1, + 9 + ], + "closestHeadline": "Table 5.2-16: Validated methods for the generation of pre-authorization data for CGA289268 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[39, 1, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 406.99, + 660.38, + 31.03537, + 10.44714 + ], + "pageNumber": 26 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 55299, + "endOffset": 55305, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2e2256723803f0a1ebdf5457f02b0ac1", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services Ecotox GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 291, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[291, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 129.5, + 460.31, + 202.0651, + 11.017679 + ], + "pageNumber": 112 + } + ], + "textBefore": "Test facility: ", + "textAfter": ", Eutinger Str.", + "startOffset": 230875, + "endOffset": 230916, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "de4596966f0fcc782b741c3eecc27b87", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Report Zampakou M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2]: Table: #cols: 2, #rows: 18, Reference: KCP 5.1.1 Report", + "color": null, + "positions": [ + { + "rectangle": [ + 74.064, + 226.49997, + 27.22068, + 10.526819 + ], + "pageNumber": 9 + }, + { + "rectangle": [ + 197.09, + 226.49997, + 58.564804, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "Reference: KCP 5.1.1 ", + "textAfter": " (2020). Statement on", + "startOffset": 17404, + "endOffset": 17422, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "57b27ac2a189a33a09ddff7360e701c3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Gemrot, F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 164, + 2 + ], + "closestHeadline": "Specificity ", + "section": "[164, 2]: Paragraph: Confirmatory transition can be", + "color": null, + "positions": [ + { + "rectangle": [ + 146.98895, + 669.98, + 47.84735, + 11.017679 + ], + "pageNumber": 80 + } + ], + "textBefore": "in blood (", + "textAfter": ", 2011, Report", + "startOffset": 154972, + "endOffset": 154982, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dfe47221315167c8be41811e0f4b7e41", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 39, + 1 + ], + "closestHeadline": "Table 5.2-16: Validated methods for the generation of pre-authorization data for CGA289268 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[39, 1]: Table: #cols: 5, #rows: 6, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 405.67, + 557.63, + 43.23645, + 10.526819 + ], + "pageNumber": 26 + } + ], + "textBefore": "REM 164.10 Validation: ", + "textAfter": " 2005 Report: RJ3636B", + "startOffset": 55431, + "endOffset": 55443, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5f751e9458db80355bbe308fd8eaaecc", + "type": "PII", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "1781.7100. Smithers", + "reason": "Found after \"No:\" contact keyword", + "matchedRule": "PII.4.0", + "legalBasis": "Reg (EC) No 1107/2009 Art. 63 (2e)", + "imported": false, + "containingNodeId": [ + 338, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.11 Analytical method 11 - fenpropidin residues in water ", + "section": "[338, 2, 1]: Paragraph: Report: Marini J.P. (2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 444.3782, + 572.27, + 92.70279, + 11.017679 + ], + "pageNumber": 128 + } + ], + "textBefore": "promelas). Report No: ", + "textAfter": " Viscient, 790 Main", + "startOffset": 267992, + "endOffset": 268011, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "70e6b6a5eb94a85d647570490c688d23", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 152, + 1, + 1 + ], + "closestHeadline": "Table A 11: Recovery results from method validation of azoxystrobin using the analytical method (quantification transition m/z 404 → 372) ", + "section": "[152, 1, 1]: Table: #cols: 6, #rows: 10, Matrix Fortification Level (mg/kg)", + "color": null, + "positions": [ + { + "rectangle": [ + 73.944, + 133.72, + 28.874046, + 10.526819 + ], + "pageNumber": 77 + } + ], + "textBefore": "", + "textAfter": " fat", + "startOffset": 150783, + "endOffset": 150789, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d6b4717b70e1fcf27038968eda10d11d", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bocksch S", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 4]: Table: #cols: 5, #rows: 13, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 283.98, + 42.469513, + 10.526819 + ], + "pageNumber": 17 + } + ], + "textBefore": "2009a, 2009b) Validation: ", + "textAfter": ", 2008 Report", + "startOffset": 31895, + "endOffset": 31904, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d7a17643ebacb860f864e8a30060d773", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ryan J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 53, + 1, + 5 + ], + "closestHeadline": "Table 5.3-5: Statement on extraction efficiency ", + "section": "[53, 1, 5]: Table_cell: This is a request", + "color": null, + "positions": [ + { + "rectangle": [ + 271.73, + 194.22, + 29.949768, + 10.526819 + ], + "pageNumber": 38 + } + ], + "textBefore": "R230310 were extracted. ", + "textAfter": " et al., 1996", + "startOffset": 79248, + "endOffset": 79255, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c65c787eff58259a8502e6fed28f8bf2", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services EcoChem GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 21]: Table_cell: Fenpropidin - Analytical Method", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 207.45001, + 194.88113, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "CGA114900_10922 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 104927, + "endOffset": 104969, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "484af5e51191fe004392c3eff71d35ee", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 9]: Table_cell: Azoxystrobin – Independent Laboratory", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 380.87, + 50.09886, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "VV-619234 , ICI5504_12452 ", + "textAfter": " ResChem Analytical Limited", + "startOffset": 112232, + "endOffset": 112245, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c81c154bff8508ce77ac97ab8ec3d5a6", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 75, + 1, + 2, + 9 + ], + "closestHeadline": "Table 5.3-16: Validated methods for water ", + "section": "[75, 1, 2, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 421.39, + 725.18, + 31.03537, + 10.44714 + ], + "pageNumber": 45 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 96326, + "endOffset": 96332, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9e4f7d0b0a82ff699f04b671a670136e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Dieterle, R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0]: Table: #cols: 5, #rows: 14, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 113.43998, + 46.320007, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "Method: ", + "textAfter": ", 1992 Reports:", + "startOffset": 45948, + "endOffset": 45960, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7e541d6e0815905b9e7968fbb76d8e33", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 9]: Table_cell: R230310 - Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 392.39, + 50.09886, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "VV-397754 , A17961A_10049 ", + "textAfter": " Syngenta Crop Protection", + "startOffset": 100523, + "endOffset": 100536, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7cef353861804b0c5f29b443727a1c66", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 160, + 2, + 4 + ], + "closestHeadline": "A 2.1.2.2.1.2 Independent laboratory validation ", + "section": "[160, 2, 4]: Paragraph: Syngenta File No. VV-328461", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 554.03, + 41.013626, + 11.017679 + ], + "pageNumber": 79 + } + ], + "textBefore": "", + "textAfter": " File No. VV-328461", + "startOffset": 153452, + "endOffset": 153460, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3cefc794eb0cd33ec7a225128990dfef", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 21]: Table_cell: Azoxystrobin – Residue Method", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 207.45001, + 50.09886, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "VV-128281 , ICI5504_11505 ", + "textAfter": " Eurofins - ADME", + "startOffset": 111479, + "endOffset": 111492, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1cbdf33e41717a2489a628b5666a1909", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Niefern-Öschelbronn", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 282, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[282, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 467.17142, + 593.51, + 71.785736, + 11.017679 + ], + "pageNumber": 109 + }, + { + "rectangle": [ + 70.824, + 580.79, + 25.789429, + 11.017679 + ], + "pageNumber": 109 + } + ], + "textBefore": "Strasse 24, 75223 ", + "textAfter": ", Germany", + "startOffset": 223308, + "endOffset": 223327, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7f980850aea4bafa5aa27a999a54e581", + "type": "published_information", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Mass Spectrometry", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 351, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[351, 1]: Paragraph: Sucrose solution (50% (w/v)", + "color": null, + "positions": [ + { + "rectangle": [ + 369.16452, + 598.67, + 85.372284, + 11.017679 + ], + "pageNumber": 132 + } + ], + "textBefore": "(LC) coupled with ", + "textAfter": " (MS). The limit", + "startOffset": 275874, + "endOffset": 275891, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "691614a1e8e0fa88c8c0c5a1bfe35dff", + "type": "CBI_address", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kupferstraße 6 04827 Machern OT Gerichshain, Germany", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 299, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[299, 1]: Paragraph: Test facility: BioChem agrar,", + "color": null, + "positions": [ + { + "rectangle": [ + 442.66214, + 296.49002, + 95.970795, + 11.017679 + ], + "pageNumber": 115 + }, + { + "rectangle": [ + 70.824, + 283.74002, + 158.92084, + 11.017679 + ], + "pageNumber": 115 + } + ], + "textBefore": "chemische Analytik GmbH ", + "textAfter": "", + "startOffset": 238623, + "endOffset": 238675, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "58e7869c95a11207c6e263e8899c9b80", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 380, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[380, 3, 1]: Paragraph: Report: Richardson M. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 222.03079, + 143.70003, + 41.01361, + 11.017679 + ], + "pageNumber": 138 + } + ], + "textBefore": "6EY, UK (", + "textAfter": " File No. VV-124541)", + "startOffset": 289926, + "endOffset": 289934, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "43e62d999ca97fbdbb8a4f2cb6c439cc", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services EcoChem GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 333, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.10 Analytical method 10 – ECO_029_03A ", + "section": "[333, 2, 1]: Paragraph: Report: Kovacevic E. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 521.3656, + 189.42, + 15.798279, + 11.017679 + ], + "pageNumber": 125 + }, + { + "rectangle": [ + 199.73, + 176.70003, + 207.17665, + 11.017679 + ], + "pageNumber": 125 + } + ], + "textBefore": "Report No: S17-08105. ", + "textAfter": " / Eurofins Agroscience", + "startOffset": 262427, + "endOffset": 262469, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "371b79b4b33f78a07f20c91430bd8f0b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Devine, T.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 13]: Table_cell: Devine, T.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 340.19, + 42.519234, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 112305, + "endOffset": 112315, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b7bb28b30e21086fa0d780f40faadbcb", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Jealott’s Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 380, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[380, 3, 1]: Paragraph: Report: Richardson M. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 156.42, + 56.072174, + 11.017679 + ], + "pageNumber": 138 + } + ], + "textBefore": "Number GRM024.03A. Syngenta, ", + "textAfter": " Inernational Research Centre,", + "startOffset": 289845, + "endOffset": 289859, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "54b5f6812c396693cb0ed9b6c6578c6e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 29 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 29]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 394.29, + 32.957703, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "RAM 305/03 Validation: ", + "textAfter": ".J., 1999 Report", + "startOffset": 70001, + "endOffset": 70009, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b50f4df5321c46f1e0d366a622e18e6c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Gemrot, F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 150, + 1, + 0, + 1, + 4 + ], + "closestHeadline": "A 2.1.2.2.1.1 Method validation ", + "section": "[150, 1, 0, 1, 4]: Paragraph: dated for method RAM", + "color": null, + "positions": [ + { + "rectangle": [ + 355.75085, + 656.3, + 47.880524, + 11.017679 + ], + "pageNumber": 77 + } + ], + "textBefore": "in blood (", + "textAfter": ", 2011, Report", + "startOffset": 149402, + "endOffset": 149412, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f200b9743e3d93232ad0a4be335403d9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "De Benedictis S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2, + 15 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2, 15]: Table_cell: De Benedictis S. (2011).", + "color": null, + "positions": [ + { + "rectangle": [ + 197.09, + 422.37, + 66.8017, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "", + "textAfter": " (2011). A16283D -", + "startOffset": 17066, + "endOffset": 17082, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2c4721ba5faaed8e621d9f09345ebdf9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 44, + 1 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 44, 1]: Paragraph: Validation: Lister N.J., 1999", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 182.69998, + 32.957703, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "Validation: ", + "textAfter": ".J., 1999 Report", + "startOffset": 70556, + "endOffset": 70564, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ea050b3e380fe883c587e650ee7636e5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Marini J.P.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 338, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.11 Analytical method 11 - fenpropidin residues in water ", + "section": "[338, 2, 1]: Paragraph: Report: Marini J.P. (2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 584.99, + 49.525436, + 11.017679 + ], + "pageNumber": 128 + } + ], + "textBefore": "Report: ", + "textAfter": " (2016) Fenpropidin T.G.", + "startOffset": 267869, + "endOffset": 267880, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5358b3e03090d71db359924abbdcc447", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins - ADME Bioanalyses", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 10, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 10, 21]: Table_cell: Azoxystrobin – Residue Method", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 207.45001, + 123.10974, + 10.526819 + ], + "pageNumber": 56 + } + ], + "textBefore": "ICI5504_11505 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 111493, + "endOffset": 111520, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e44d552224af79ef9c7bef482a86aa65", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kirkwood, A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 24 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 24]: Table_cell: Method & Validation: Kirkwood,", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 456.71, + 55.32788, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": ", 2018 Report", + "startOffset": 57185, + "endOffset": 57197, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "18efc18e08afabe43f76831d69fefcd4", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Zampakou M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 14, + 1, + 3 + ], + "closestHeadline": "Table 5.2-2: Methods suitable for the determination of Toluene in plant protection product (PPP) A23317A ", + "section": "[14, 1, 3]: Table_cell: Adolph S. (2011), De", + "color": null, + "positions": [ + { + "rectangle": [ + 460.3647, + 479.75, + 56.64258, + 10.526819 + ], + "pageNumber": 10 + } + ], + "textBefore": "Benedictis S. (2011), ", + "textAfter": " (2020)", + "startOffset": 18814, + "endOffset": 18825, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0db00a08d3b421d6104f40159079c1b5", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 9]: Table_cell: Validation of DFG Method", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 380.87, + 50.09886, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "VV-323618 , ICI5504/0276 ", + "textAfter": " N/A GLP Unpublished", + "startOffset": 109733, + "endOffset": 109746, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "be6515ca1f260c9078b582037e85eb60", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 288, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[288, 2]: Paragraph: (Schuler L., 2020)", + "color": null, + "positions": [ + { + "rectangle": [ + 461.84946, + 263.22006, + 45.8602, + 11.017679 + ], + "pageNumber": 111 + } + ], + "textBefore": "(", + "textAfter": ", 2020)", + "startOffset": 227773, + "endOffset": 227783, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c7c574cf875cfb72ac3e3ee637f8ddd3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Dressler, K.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 13]: Table_cell: Dressler, K.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 340.19, + 47.91755, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 103193, + "endOffset": 103205, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9c30d56288271884644a5fe0b8f16fc0", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 9, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 55 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 109346, + "endOffset": 109352, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8a9efe4ca6cf09efb6ca1812e8a8c719", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Amic S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 226, + 2, + 8 + ], + "closestHeadline": "A 2.1.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[226, 2, 8]: Paragraph: azoxystrobin and its metabolite", + "color": null, + "positions": [ + { + "rectangle": [ + 424.65894, + 742.46, + 36.001465, + 11.017679 + ], + "pageNumber": 94 + } + ], + "textBefore": "R234886 in water, ", + "textAfter": ", 2012a, Report", + "startOffset": 183396, + "endOffset": 183403, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "84aad5860ed13742ec382c6548337762", + "type": "CBI_address", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "30310 Vergeze, France", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 374, + 2, + 1 + ], + "closestHeadline": "A 1.1.1.1.1.2 Independent laboratory validation ", + "section": "[374, 2, 1]: Paragraph: Report: Royer A. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 435.08072, + 460.31, + 101.799835, + 11.017679 + ], + "pageNumber": 136 + } + ], + "textBefore": "chemin de Sommieres, ", + "textAfter": " (Syngenta File No.", + "startOffset": 285624, + "endOffset": 285645, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "624a4e6fbb7c36bd6dc0e4e830c88f6e", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "hen", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 151, + 1 + ], + "closestHeadline": "Materials and methods ", + "section": "[151, 1]: Paragraph: Analytical method RAM 399/01", + "color": null, + "positions": [ + { + "rectangle": [ + 89.42639, + 359.37, + 15.842392, + 11.017679 + ], + "pageNumber": 77 + } + ], + "textBefore": "and liver and ", + "textAfter": "’s egg. Residues", + "startOffset": 149992, + "endOffset": 149995, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "acc5ec5a7404cfd25064b988299682e5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1, + 64 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1, 64]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 217.97995, + 35.610016, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "Method: ", + "textAfter": " 2002 Report RAM", + "startOffset": 75984, + "endOffset": 75992, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2e2db3ff5b97a993dbffa4d394de7ff6", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N.J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 29 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 29]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 457.91, + 56.91153, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "Method: ", + "textAfter": " et al., 1999", + "startOffset": 69902, + "endOffset": 69915, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4cfd6429f41f31bc19e88aee8b414481", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 81, + 1, + 1 + ], + "closestHeadline": "List of data submitted or referred to by the applicant and relied on, but already evaluated at EU peer review ", + "section": "[81, 1, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 132.98, + 287.87, + 31.035355, + 10.44714 + ], + "pageNumber": 58 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 113738, + "endOffset": 113744, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fa2e26522253a57462676e893a25083e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 338, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.11 Analytical method 11 - fenpropidin residues in water ", + "section": "[338, 2, 1]: Paragraph: Report: Marini J.P. (2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 475.82678, + 559.67, + 40.89209, + 11.017679 + ], + "pageNumber": 128 + } + ], + "textBefore": "02571-1037 USA (", + "textAfter": " File No. VV-465445)", + "startOffset": 268067, + "endOffset": 268075, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f611cbc51fd5997c95e90c5776588e2b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lakaschus S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 24 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 24]: Table_cell: ILV: Lakaschus S., Gizler", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 539.03, + 52.73828, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "ILV: ", + "textAfter": ", Gizler A.", + "startOffset": 67306, + "endOffset": 67318, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1e4405ab46a9846e958a436e56f76f8d", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 32, + 1, + 1, + 9 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 1, 9]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 407.59, + 703.22, + 31.0542, + 10.44714 + ], + "pageNumber": 23 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 46555, + "endOffset": 46561, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7f8498c588263322dbb51cf9f85e1a7d", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services EcoTox GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 9]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) -", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 369.47, + 187.08893, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "VV-884202 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 106906, + "endOffset": 106947, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fc93766976ad33b750ef7693a32cc85c", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2, + 15 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2, 15]: Table_cell: De Benedictis S. (2011).", + "color": null, + "positions": [ + { + "rectangle": [ + 294.52908, + 410.85, + 120.492065, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "Toluene in A16283D. ", + "textAfter": ", Muenchwilen, Switzerland.", + "startOffset": 17165, + "endOffset": 17192, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f0a2fecea7711e2521e6c66f260d4db5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Wydra V.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 349, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[349, 2]: Paragraph: (Pupp A. and Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 464.38, + 418.29, + 43.464478, + 11.017679 + ], + "pageNumber": 131 + } + ], + "textBefore": "(Pupp A. and ", + "textAfter": ", 2008)", + "startOffset": 274603, + "endOffset": 274611, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "089d7c6c98237404adab16bfe51584f0", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 15]: Table_cell: Fenpropidin (CGA114900) - Independent", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 282.71, + 50.09886, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "VV-465839 , CGA114900_10695 ", + "textAfter": " CEM Analytical Services,", + "startOffset": 112595, + "endOffset": 112608, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dfbe6d907bbf11bc44b1f3b956d7fa51", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 360, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[360, 3, 1]: Paragraph: Report: Hargreaves S. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 276.74503, + 610.46, + 41.01358, + 11.017679 + ], + "pageNumber": 134 + } + ], + "textBefore": "6EY, UK (", + "textAfter": " File No. VV-124469)", + "startOffset": 280214, + "endOffset": 280222, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "70eda0a36ec44489bced03a000f5469f", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1, + 15 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1, 15]: Table_cell: Kettner R. (2011). R230310", + "color": null, + "positions": [ + { + "rectangle": [ + 294.2698, + 268.13998, + 37.04129, + 10.526819 + ], + "pageNumber": 11 + } + ], + "textBefore": "Issued date 11.07.2011, ", + "textAfter": " File No. VV-397754", + "startOffset": 21199, + "endOffset": 21207, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "00468fe5b1a9d3f66cdac85647cd37c1", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 296, + 1, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[296, 1, 2]: Paragraph: (Schuler L., 2020)", + "color": null, + "positions": [ + { + "rectangle": [ + 461.84946, + 63.04, + 45.8602, + 11.017679 + ], + "pageNumber": 114 + } + ], + "textBefore": "(", + "textAfter": ", 2020)", + "startOffset": 235048, + "endOffset": 235058, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "57a5eb81a3426021afdf0f0915ae89a1", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection AG", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2, + 3 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2, 3]: Table_cell: Adolph S. (2011). Analytical", + "color": null, + "positions": [ + { + "rectangle": [ + 389.18866, + 625.46, + 120.54248, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "headspace gas chromatography. ", + "textAfter": ", Muenchwilen, Switzerland.", + "startOffset": 16835, + "endOffset": 16862, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e13643624e1d75f22bb9c6d436813407", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Croucher A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 44, + 1 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 44, 1]: Paragraph: Validation: Lister N.J., 1999", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 136.72, + 49.461426, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "2004 Report RJ3552B ", + "textAfter": ", 2002 Report", + "startOffset": 70621, + "endOffset": 70632, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "698195a25c506f1d86cdacb978e235a5", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 59, + 1, + 0, + 24 + ], + "closestHeadline": "Table 5.3-8: Validated methods for water ", + "section": "[59, 1, 0, 24]: Table_cell: Brown D (2019). Syngenta", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 480.47, + 37.270386, + 10.526819 + ], + "pageNumber": 40 + } + ], + "textBefore": "Brown D (2019). ", + "textAfter": " File No. ICI5504_12452", + "startOffset": 82604, + "endOffset": 82612, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ba3ac14c8e6baa91c29efbb49d66780f", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 282, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[282, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 70.824, + 593.51, + 53.72065, + 11.017679 + ], + "pageNumber": 109 + } + ], + "textBefore": "", + "textAfter": ": Eurofins Agroscience", + "startOffset": 223223, + "endOffset": 223236, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "95c02b2857664c411746a0afa612a201", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Dieterle, R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0]: Table: #cols: 5, #rows: 14, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 365.25, + 46.26422, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "Method: ", + "textAfter": ", 1993 Report:", + "startOffset": 45026, + "endOffset": 45038, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "01be5534d48b460ed229a23a9b288707", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 14 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 14]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 597.47, + 32.957703, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "RAM 305/03 Validation: ", + "textAfter": ".J., 1999 Report", + "startOffset": 69464, + "endOffset": 69472, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2dfad4a39344e12776765db52721d529", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 82, + 1, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and not relied on ", + "section": "[82, 1, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 132.98, + 110.34, + 31.035355, + 10.44714 + ], + "pageNumber": 58 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 113994, + "endOffset": 114000, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0fbc37ee1ebc4bb6785647c86eab38d5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Wydra V.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 305, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.6 Analytical method 6 - fenpropidin residues in water ", + "section": "[305, 2, 1]: Paragraph: Report: Bebon R., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 250.71272, + 535.67, + 45.341293, + 11.017679 + ], + "pageNumber": 118 + } + ], + "textBefore": "Report: Bebon R., ", + "textAfter": " (2017) Fenpropidin -", + "startOffset": 245467, + "endOffset": 245475, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b3d4d89c44724a96dae80f33433f7354", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 9]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) -", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 369.47, + 50.09886, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "Document No. VV-884202 ", + "textAfter": " Eurofins Agroscience Services", + "startOffset": 106892, + "endOffset": 106905, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0bceba0adf4812b4d3277cfbbc8e76ea", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kettner R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1, + 15 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1, 15]: Table_cell: Kettner R. (2011). R230310", + "color": null, + "positions": [ + { + "rectangle": [ + 197.09, + 291.17996, + 41.234406, + 10.526819 + ], + "pageNumber": 11 + } + ], + "textBefore": "", + "textAfter": " (2011). R230310 -", + "startOffset": 21017, + "endOffset": 21027, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "71e72610032f2e505c8a16ba9ef2796c", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5, + 31 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5, 31]: Table_cell: Fat (bovine)", + "color": null, + "positions": [ + { + "rectangle": [ + 156.36656, + 443.13, + 27.300354, + 10.526819 + ], + "pageNumber": 18 + } + ], + "textBefore": "Fat (", + "textAfter": ")", + "startOffset": 35745, + "endOffset": 35751, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b900a7979ad664da8e1619c2492086df", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Smithers Viscient, 790 Main Street, Wareham, MA 02571-1037", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 311, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.7 Analytical method 7 - fenpropidin residues in water ", + "section": "[311, 2, 1]: Paragraph: Report: Kirkwood A. (2018)", + "color": null, + "positions": [ + { + "rectangle": [ + 252.40186, + 534.35, + 284.69824, + 11.017679 + ], + "pageNumber": 120 + } + ], + "textBefore": "Report No: 1781.7202. ", + "textAfter": " USA (Syngenta File", + "startOffset": 250210, + "endOffset": 250268, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ba8f4b3dcd30af09a9103e82a2683a4f", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kovacevic E.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 34 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 34]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 260.34, + 53.913544, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2018 Report", + "startOffset": 57514, + "endOffset": 57526, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "18c7f764566e35defee3ac0b4c5f34a1", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 2, + 9 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 2, 9]: Table_cell: Method: Burke S.R., 1997", + "color": null, + "positions": [ + { + "rectangle": [ + 455.16806, + 632.66, + 40.985443, + 10.526819 + ], + "pageNumber": 15 + } + ], + "textBefore": "Validation: Clarke D.M., ", + "textAfter": ", 1994 Report", + "startOffset": 28086, + "endOffset": 28096, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b23f4ebf57906df847e60d89aa6ad6f2", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Amic S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 59, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.3-8: Validated methods for water ", + "section": "[59, 1, 0, 19]: Table_cell: Method: Amic S., 2012", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 593.15, + 32.728546, + 10.526819 + ], + "pageNumber": 40 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2012 /", + "startOffset": 82397, + "endOffset": 82404, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "10eaa5c7ea899d3ae532a0f80148a12a", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2, + 27 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2, 27]: Table_cell: Zampakou M. (2020). Statement", + "color": null, + "positions": [ + { + "rectangle": [ + 247.14896, + 192.05997, + 37.160828, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "Issued date 17.11.2020, ", + "textAfter": " File No. VV-887260", + "startOffset": 17651, + "endOffset": 17659, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "283caa190164b1d80ea3be7375865097", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 39, + 0 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 39, 0]: Paragraph: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 292.98, + 44.461487, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "Report RAM 305/02 ", + "textAfter": " et al., 2004", + "startOffset": 71784, + "endOffset": 71794, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5471da4d948559a155bdd50eb6defb12", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 27]: Table_cell: Azoxystrobin and R230310 :", + "color": null, + "positions": [ + { + "rectangle": [ + 301.08414, + 143.82, + 28.874084, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "of Residues in ", + "textAfter": " Muscle, Fat and", + "startOffset": 109147, + "endOffset": 109153, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2f2c63d7e604924854cd0806f169e44f", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 15]: Table_cell: Azoxystrobin – Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 294.23, + 50.09886, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "VV-398250 , ICI5504_11467 ", + "textAfter": " Eurofins - ADME", + "startOffset": 110004, + "endOffset": 110017, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0a67aac96409fac3769bbff1d37cdb21", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 35, + 1 + ], + "closestHeadline": "Table 5.2-13: Validated methods for the generation of pre-authorization data for Fenpropidin in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[35, 1]: Table: #cols: 5, #rows: 4, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 125.559975, + 43.23645, + 10.526819 + ], + "pageNumber": 23 + } + ], + "textBefore": "Method: ", + "textAfter": " 2005 Report: REM", + "startOffset": 49466, + "endOffset": 49478, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "df11b5a7648611c928acf0383b0d88ec", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Adolph S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 14, + 1, + 3 + ], + "closestHeadline": "Table 5.2-2: Methods suitable for the determination of Toluene in plant protection product (PPP) A23317A ", + "section": "[14, 1, 3]: Table_cell: Adolph S. (2011), De", + "color": null, + "positions": [ + { + "rectangle": [ + 284.69, + 479.75, + 40.616913, + 10.526819 + ], + "pageNumber": 10 + } + ], + "textBefore": "", + "textAfter": " (2011), De Benedictis", + "startOffset": 18771, + "endOffset": 18780, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2178a09bd84e9ec4bc9a5af191c9a610", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services Ecotox GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 9]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) –", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 380.87, + 183.74234, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "VV-899655 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 105619, + "endOffset": 105660, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "afa526b783b34e565dde937658e40e31", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 291, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[291, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 70.824, + 460.31, + 52.892647, + 11.017679 + ], + "pageNumber": 112 + } + ], + "textBefore": "", + "textAfter": ": Eurofins Agroscience", + "startOffset": 230860, + "endOffset": 230873, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c2adb20c3738c99327295b3940e90c50", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Walser, M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 39, + 1 + ], + "closestHeadline": "Table 5.2-16: Validated methods for the generation of pre-authorization data for CGA289268 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[39, 1]: Table: #cols: 5, #rows: 6, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 405.67, + 487.91, + 44.561066, + 10.526819 + ], + "pageNumber": 26 + } + ], + "textBefore": "Method: ", + "textAfter": " (1999c) Report: REM", + "startOffset": 55717, + "endOffset": 55727, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dfa2d1e50a7030b878f3033a871c2886", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 150, + 2, + 4 + ], + "closestHeadline": "A 2.1.2.2.1.1 Method validation ", + "section": "[150, 2, 4]: Paragraph: Syngenta File No. VV-331095", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 516.11, + 41.013626, + 11.017679 + ], + "pageNumber": 77 + } + ], + "textBefore": "", + "textAfter": " File No. VV-331095", + "startOffset": 149693, + "endOffset": 149701, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0cceee2fedc1c7d59d509dc85a9db395", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Pelz, S. Weeren, R.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 25 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 25]: Table_cell: Pelz, S. Weeren, R.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 155.37, + 30.208687, + 10.526819 + ], + "pageNumber": 53 + }, + { + "rectangle": [ + 121.1, + 143.82, + 45.168602, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 107632, + "endOffset": 107651, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dba6c78398f6d4f0477fbe2b3383cb07", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Benazeraf, L.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 66, + 1 + ], + "closestHeadline": "Table 5.3-11: Validated methods for food and feed of plant origin ", + "section": "[66, 1]: Table: #cols: 5, #rows: 10, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 424.15, + 593.63, + 54.14261, + 10.526819 + ], + "pageNumber": 42 + } + ], + "textBefore": "Report: RJ3548B ILV: ", + "textAfter": " (2005) Report: SYN/FEN/04111", + "startOffset": 86927, + "endOffset": 86940, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "81355e95f9b56e28356457e46c6a7f41", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Amic S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 226, + 2, + 1 + ], + "closestHeadline": "A 2.1.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[226, 2, 1]: Paragraph: Report: Azoxystrobin - Residue", + "color": null, + "positions": [ + { + "rectangle": [ + 346.44055, + 322.16998, + 36.111847, + 11.017679 + ], + "pageNumber": 93 + } + ], + "textBefore": "R234886 in water, ", + "textAfter": ", 2012, Report", + "startOffset": 182604, + "endOffset": 182611, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3e86cc2f4fdfb0d200d4b9c67a7091ff", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Weeren R.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 34 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 34]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 364.77, + 42.658722, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "Validation: ", + "textAfter": ", Pelz S.,", + "startOffset": 66213, + "endOffset": 66222, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "44e988707b86d4637722e4b8c3b1635b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Obert-Rauser, P.", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 6, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 7]: Table_cell: Obert-Rauser, P.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 66.91633, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 105388, + "endOffset": 105404, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "907171827156fa3ec62725e2aaddbbe4", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Stahl F.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 0, 19]: Table_cell: Validation: Weeren R., Pelz", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 504.35, + 31.03534, + 10.526819 + ], + "pageNumber": 31 + } + ], + "textBefore": "ZEN-0002V New data ", + "textAfter": ", 2017 Report", + "startOffset": 65852, + "endOffset": 65860, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "298ee0d279ebbc127a67b9c65008f6fd", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Ruhland, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 19]: Table_cell: Ruhland, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 265.05, + 46.97135, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 105944, + "endOffset": 105955, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "37e9c7cc2fa474fcfb1ff8d4c09be823", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Devine, T", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 408, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[408, 2]: Paragraph: (Devine, T 2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 466.40945, + 155.82002, + 44.027557, + 11.017679 + ], + "pageNumber": 144 + } + ], + "textBefore": "(", + "textAfter": " 2016)", + "startOffset": 304826, + "endOffset": 304835, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e27e066d155437f3f44a34f6666540eb", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 1, + 4 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 1, 4]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 731.42, + 31.03537, + 10.44714 + ], + "pageNumber": 28 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 57731, + "endOffset": 57737, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "760b9def65b76700fee695575f10e9be", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins - ADME Bioanalyses", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 9, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 9, 15]: Table_cell: Azoxystrobin – Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 294.23, + 123.10974, + 10.526819 + ], + "pageNumber": 55 + } + ], + "textBefore": "ICI5504_11467 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 110018, + "endOffset": 110045, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9866502240a34cb2e38d23d68f934ef7", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Kovacevic E.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 3, + 0, + 24 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 3, 0, 24]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 283.13998, + 53.913544, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "Method: ", + "textAfter": ", 2018 Report", + "startOffset": 58727, + "endOffset": 58739, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3cbd850ba551623b744ff5ef647925db", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 24 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 24]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 539.03, + 44.461487, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "Report RAM 305/02 ", + "textAfter": ", 2004 Report", + "startOffset": 71309, + "endOffset": 71319, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a9fa3268d23cd216b5c893658f56153c", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta - Jealott's Hill", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 27]: Table_cell: Azoxystrobin and R230310 :", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 109.26002, + 95.422, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "ICI5504/1652 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 109287, + "endOffset": 109312, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "51c22aeae809c7bdb82b02fa907385aa", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 15]: Table_cell: Independent Laboratory Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 294.23, + 50.09886, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "VV-328461 , ICI5504/1921 ", + "textAfter": " CEMAS GLP Unpublished", + "startOffset": 108603, + "endOffset": 108616, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "234975aef9411f24615a14d57caf8d16", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "bees", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 15]: Table_cell: Azoxystrobin (ICI5504) and Cyproconazole", + "color": null, + "positions": [ + { + "rectangle": [ + 644.9745, + 340.19, + 17.778625, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "following exposure of ", + "textAfter": " to treated winter", + "startOffset": 101864, + "endOffset": 101868, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6baa0794c5480a5b99c6790b38a1205d", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Zampakou, M.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 19]: Table_cell: Zampakou, M.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 265.05, + 59.152443, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 100830, + "endOffset": 100842, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fbc1ae059c9636f05bc5bacd157fbc86", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Bocksch, S.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 13 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 13]: Table_cell: Bocksch, S.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 340.19, + 47.469353, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 101749, + "endOffset": 101760, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0f57a9958505872cb31ae3d65a323be5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Link T.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 200, + 3, + 12 + ], + "closestHeadline": "A 2.1.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[200, 3, 12]: Paragraph: Report: Link T., Kravchuk", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 164.46004, + 33.119995, + 11.017679 + ], + "pageNumber": 86 + } + ], + "textBefore": "Report: ", + "textAfter": ", Kravchuk O.", + "startOffset": 168660, + "endOffset": 168667, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "674d8bf19a9ed1fe343121e57a7d99e2", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 113, + 3, + 1 + ], + "closestHeadline": "A 2.1.2 Methods for post-authorization control and monitoring purposes (KCP 5.2) ", + "section": "[113, 3, 1]: Paragraph: Report: Validation of the", + "color": null, + "positions": [ + { + "rectangle": [ + 339.43002, + 426.33, + 41.01358, + 11.017679 + ], + "pageNumber": 68 + } + ], + "textBefore": "Report No. ZEN-0002V, ", + "textAfter": " File No. VV-327232", + "startOffset": 131580, + "endOffset": 131588, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "482e39b6aa951d9269321d3627529cb3", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eutinger Str. 24", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 333, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.10 Analytical method 10 – ECO_029_03A ", + "section": "[333, 2, 1]: Paragraph: Report: Kovacevic E. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 293.98956, + 164.10005, + 71.461975, + 11.017679 + ], + "pageNumber": 125 + } + ], + "textBefore": "Services Ecotox GmbH ", + "textAfter": ", D-75223, Niefern-Öschelbronn,", + "startOffset": 262514, + "endOffset": 262530, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "acccecf587342c5ab08bcc73d4787a98", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Smithers Viscient", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 27]: Table_cell: Fenpropidin - Growth Inhibition", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 132.29999, + 71.47305, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "CGA114900_10912 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 103906, + "endOffset": 103923, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "240681a68a07c7b3e36095b9a1198673", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Ibacon GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 6, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 6, 15]: Table_cell: Fenpropidin - Acute Toxicity", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 305.75, + 57.031036, + 10.526819 + ], + "pageNumber": 52 + } + ], + "textBefore": "CGA114900_10396 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 105898, + "endOffset": 105909, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5ac364fd993cc3ba31b2518046d24b90", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 90, + 4 + ], + "closestHeadline": "I. MATERIAL AND METHODS ", + "section": "[90, 4]: Paragraph: Content 252 g/L Source:", + "color": null, + "positions": [ + { + "rectangle": [ + 228.77, + 732.74, + 41.013626, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "252 g/L Source: ", + "textAfter": " Standard Reference: ASJ10008-03", + "startOffset": 118598, + "endOffset": 118606, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ed12599584c5db59423af3b333e080c5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Lister N", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 24, + 2, + 1 + ], + "closestHeadline": "Table 5.2-5: Statement on extraction efficiency ", + "section": "[24, 2, 1]: Table_cell: However, it should be", + "color": null, + "positions": [ + { + "rectangle": [ + 352.15, + 627.14, + 32.957703, + 10.526819 + ], + "pageNumber": 19 + } + ], + "textBefore": "the extraction solvents. ", + "textAfter": ".J., 1999 /", + "startOffset": 38769, + "endOffset": 38777, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f985ec8e0b7db430f049d101aa7f3b21", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Chaggar S.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 2, + 14 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 2, 14]: Table_cell: Method: Robinson N.J. et", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 574.43, + 44.461487, + 10.526819 + ], + "pageNumber": 33 + } + ], + "textBefore": "1999 Report RJ2770B ", + "textAfter": " et al., 2004", + "startOffset": 69497, + "endOffset": 69507, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "20803093b60f0843217af8fe0575354d", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 27]: Table_cell: Azoxystrobin and R230310 :", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 109.26002, + 50.09886, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "VV-331095 , ICI5504/1652 ", + "textAfter": " Syngenta - Jealott's", + "startOffset": 102685, + "endOffset": 102698, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "83c34fc83adbd501b4843415c2609b45", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 61, + 1, + 0, + 9 + ], + "closestHeadline": "Table 5.3-9: Validated methods for air ", + "section": "[61, 1, 0, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 258.18, + 31.03537, + 10.44714 + ], + "pageNumber": 40 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 83409, + "endOffset": 83415, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "74f0b33fcb4b261ecb4ad10a8670d143", + "type": "PII", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "40322210.", + "reason": "Found after \"No:\" contact keyword", + "matchedRule": "PII.4.0", + "legalBasis": "Reg (EC) No 1107/2009 Art. 63 (2e)", + "imported": false, + "containingNodeId": [ + 344, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.12 Analytical method 12 - fenpropidin residues in water ", + "section": "[344, 2, 1]: Paragraph: Report: Pupp A., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 490.2389, + 87.40005, + 46.677185, + 11.017679 + ], + "pageNumber": 129 + } + ], + "textBefore": "Test. Report No: ", + "textAfter": " ibacon GmbH Arheilger", + "startOffset": 271624, + "endOffset": 271633, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8268201d955cbe8c625a104b952c8104", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ryan J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5, + 9 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5, 9]: Table_cell: Method & Validation: Ryan", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 670.22, + 29.970001, + 10.526819 + ], + "pageNumber": 18 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": " et al., 1996", + "startOffset": 34742, + "endOffset": 34749, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c05eaee5a3d9220ea2b1a94265a2c914", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Robinson, N.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 12, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 12, 7]: Table_cell: Robinson, N.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 53.056908, + 10.526819 + ], + "pageNumber": 58 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 113394, + "endOffset": 113406, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "03448c53ea3f4c764c2aeea7bc5beb69", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 186, + 3, + 1 + ], + "closestHeadline": "A 2.1.2.3 Description of Methods for the Analysis of Body Fluids and Tissues (KCP1 5.2.3) ", + "section": "[186, 3, 1]: Paragraph: Report: Azoxystrobin - Validation", + "color": null, + "positions": [ + { + "rectangle": [ + 417.90186, + 395.49, + 41.002533, + 11.017679 + ], + "pageNumber": 83 + } + ], + "textBefore": "Report No. S10-03815, ", + "textAfter": " File No. VV398250", + "startOffset": 161323, + "endOffset": 161331, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6717494be2d9f4e6dde845d8be813088", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 80, + 12, + 1 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 12, 1]: Table_cell: Author(s)", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 470.66, + 31.035362, + 10.44714 + ], + "pageNumber": 58 + } + ], + "textBefore": "", + "textAfter": "(s)", + "startOffset": 113244, + "endOffset": 113250, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6d49d4b89f99845281c1436847804724", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 15]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) -", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 282.71, + 50.09886, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "Document No. VV-884284 ", + "textAfter": " Eurofins Agroscience Services", + "startOffset": 107198, + "endOffset": 107211, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7f9d981c7df99b2a7ee316c51eb521b9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kang J.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 1, + 59 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 1, 59]: Table_cell: ILV: Kang J., 2003", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 164.1, + 30.547363, + 10.526819 + ], + "pageNumber": 32 + } + ], + "textBefore": "ILV: ", + "textAfter": ", 2003 Report", + "startOffset": 68620, + "endOffset": 68627, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3439ebc772ea930ab720c875b130d2d0", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ryan J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5, + 14 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5, 14]: Table_cell: Method & Validation: Ryan", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 600.47, + 29.970001, + 10.526819 + ], + "pageNumber": 18 + } + ], + "textBefore": "Method & Validation: ", + "textAfter": " et al., 1997", + "startOffset": 34938, + "endOffset": 34945, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fcca83fba663b14c88c9f139b1a675b4", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 8, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 8, 9]: Table_cell: Analytical Method Development and", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 380.87, + 50.09886, + 10.526819 + ], + "pageNumber": 54 + } + ], + "textBefore": "VV-379800 , ICI5504/2766 ", + "textAfter": " SGS Institut Fresenius", + "startOffset": 108333, + "endOffset": 108346, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b758de229b86028a5e5a5a4685d5ea6b", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 264, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[264, 1]: Paragraph: Test facility: BioChem agrar,", + "color": null, + "positions": [ + { + "rectangle": [ + 70.824, + 120.04, + 52.528336, + 11.017679 + ], + "pageNumber": 102 + } + ], + "textBefore": "", + "textAfter": ": BioChem agrar,", + "startOffset": 208099, + "endOffset": 208112, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ee6078695a04ff7f544a4186856fa9e1", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schmidt K.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 41, + 3, + 0, + 29 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 3, 0, 29]: Table_cell: Method: Kovacevic E., 2018", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 115.96, + 45.52716, + 10.526819 + ], + "pageNumber": 28 + } + ], + "textBefore": "S17-08105 (VV-469879) Validation: ", + "textAfter": ", 2021 Report", + "startOffset": 58986, + "endOffset": 58996, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "94b0349470b98564f0d73fca169ec7cf", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "BioChem agrar", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 15]: Table_cell: Fenpropidin - Repeated Exposure", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 294.23, + 61.43332, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "CGA114900_10971 Test Facility ", + "textAfter": " GmbH GLP Unpublished", + "startOffset": 104609, + "endOffset": 104622, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "717f8afb7bcf46eaff15f2d12cf24756", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 200, + 3, + 15 + ], + "closestHeadline": "A 2.1.2.4 Description of Methods for the Analysis of Soil (KCP 5.2.4) ", + "section": "[200, 3, 15]: Paragraph: Syngenta File No. ICI5504_12486", + "color": null, + "positions": [ + { + "rectangle": [ + 199.73, + 83.200035, + 41.013626, + 11.017679 + ], + "pageNumber": 86 + } + ], + "textBefore": "", + "textAfter": " File No. ICI5504_12486", + "startOffset": 168849, + "endOffset": 168857, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e2e4aa8a64532a3428ae158134f3b12a", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 374, + 2, + 1 + ], + "closestHeadline": "A 1.1.1.1.1.2 Independent laboratory validation ", + "section": "[374, 2, 1]: Paragraph: Report: Royer A. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 203.43944, + 447.45, + 41.013626, + 11.017679 + ], + "pageNumber": 136 + } + ], + "textBefore": "Vergeze, France (", + "textAfter": " File No. VV-393069)", + "startOffset": 285647, + "endOffset": 285655, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c802a1aca90d67b5ba6158cf3475a057", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Pupp A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 349, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[349, 2]: Paragraph: (Pupp A. and Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 406.87, + 418.29, + 36.122864, + 11.017679 + ], + "pageNumber": 131 + } + ], + "textBefore": "(", + "textAfter": " and Wydra V.,", + "startOffset": 274591, + "endOffset": 274598, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a3f46c076eb5d279597be6099d6dc105", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J .", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0]: Table: #cols: 5, #rows: 14, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 465.23, + 43.23645, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "REM 164.09 Validation: ", + "textAfter": ", 2004 Report", + "startOffset": 44187, + "endOffset": 44199, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1db4437bb8ce0531a202062dab62ce71", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 27 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 27]: Table_cell: Azoxystrobin and R230310 :", + "color": null, + "positions": [ + { + "rectangle": [ + 301.08414, + 143.82, + 28.874084, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "of Residues in ", + "textAfter": " Muscle, Fat and", + "startOffset": 102559, + "endOffset": 102565, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6524b81dc83f773a189c4735a3162b66", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Niefern-Öschelbronn", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 333, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.10 Analytical method 10 – ECO_029_03A ", + "section": "[333, 2, 1]: Paragraph: Report: Kovacevic E. (2018),", + "color": null, + "positions": [ + { + "rectangle": [ + 417.17654, + 164.10005, + 93.503265, + 11.017679 + ], + "pageNumber": 125 + } + ], + "textBefore": "Str. 24, D-75223, ", + "textAfter": ", Germany (Syngenta", + "startOffset": 262541, + "endOffset": 262560, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d67b260c508263873af5df53aa051b56", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 15]: Table_cell: A16283D - Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 211.16998, + 103.3949, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "A16283D_10107 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 99957, + "endOffset": 99981, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "79b7dae61d31a63a3264f56724512baa", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Crook S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2, + 14 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2, 14]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 660.98, + 35.610016, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "Method: ", + "textAfter": " 2002 Report RAM", + "startOffset": 76584, + "endOffset": 76592, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1b3c3081ccaed2554b0dca76656c0e3f", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Gasser, A.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 32, + 1, + 0, + 59 + ], + "closestHeadline": "Table 5.2-11: Validated methods for the generation of pre-authorization data for Fenpropidin in plants (KCP 5.1.2.5 in support of residues studies) ", + "section": "[32, 1, 0, 59]: Table_cell: Validation: Gasser, A., 2002a", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 211.61996, + 41.812134, + 10.526819 + ], + "pageNumber": 22 + } + ], + "textBefore": "Gasser, A., 2002b ", + "textAfter": ", 2002c Gasser,", + "startOffset": 45761, + "endOffset": 45771, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8179472dd1590f6fbad5c6cc2655a488", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 152, + 1, + 1 + ], + "closestHeadline": "Table A 11: Recovery results from method validation of azoxystrobin using the analytical method (quantification transition m/z 404 → 372) ", + "section": "[152, 1, 1]: Table: #cols: 6, #rows: 10, Matrix Fortification Level (mg/kg)", + "color": null, + "positions": [ + { + "rectangle": [ + 73.944, + 80.67997, + 28.874046, + 10.526819 + ], + "pageNumber": 77 + } + ], + "textBefore": "", + "textAfter": " milk", + "startOffset": 150888, + "endOffset": 150894, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1f38e3aaa6ebab882fe3d5168e8fbe70", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Ibacon GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 4, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 4, 9]: Table_cell: Fenpropidin - Toxicity to", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 380.87, + 57.031036, + 10.526819 + ], + "pageNumber": 50 + } + ], + "textBefore": "CGA114900_10897 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 103147, + "endOffset": 103158, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "68e2f19a97ac7faf7771b19867fb278c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Dieterle, R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 35, + 2 + ], + "closestHeadline": "Table 5.2-13: Validated methods for the generation of pre-authorization data for Fenpropidin in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[35, 2]: Table: #cols: 5, #rows: 5, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 406.75, + 546.95, + 46.26422, + 10.526819 + ], + "pageNumber": 24 + } + ], + "textBefore": "REM 164.02 Validation: ", + "textAfter": ", 1992 Gasser,", + "startOffset": 50867, + "endOffset": 50879, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c17537855746737ca2cc7c2353268888", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 11, + 2, + 2, + 3 + ], + "closestHeadline": "Toluene ", + "section": "[11, 2, 2, 3]: Table_cell: Adolph S. (2011). Analytical", + "color": null, + "positions": [ + { + "rectangle": [ + 247.25, + 602.39, + 37.160828, + 10.526819 + ], + "pageNumber": 9 + } + ], + "textBefore": "Issued date 30.11.2011, ", + "textAfter": " File No. VV-127729", + "startOffset": 16947, + "endOffset": 16955, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "52bfc801c74e895e3a2073a8243a8176", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Kleebaum K.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 326, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[326, 2]: Paragraph: (Kleebaum K., 2018)", + "color": null, + "positions": [ + { + "rectangle": [ + 449.02, + 234.3, + 58.655518, + 11.017679 + ], + "pageNumber": 123 + } + ], + "textBefore": "(", + "textAfter": ", 2018)", + "startOffset": 257886, + "endOffset": 257897, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "81e0c431c9804e7cdd1a9c026d2a36b3", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 19, + 1, + 2 + ], + "closestHeadline": "Table 5.2-3: Methods suitable for the determination of the relevant impurities in plant protection product (PPP) A23317A ", + "section": "[19, 1, 2]: Table_cell: Author(s), year", + "color": null, + "positions": [ + { + "rectangle": [ + 74.064, + 283.01996, + 31.035362, + 10.44714 + ], + "pageNumber": 12 + } + ], + "textBefore": "", + "textAfter": "(s), year", + "startOffset": 22734, + "endOffset": 22740, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dd8b1dcfadbb8910c9d99cf8a1af80e0", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 273, + 1 + ], + "closestHeadline": "Study Design and Methods ", + "section": "[273, 1]: Paragraph: Test facility: Eurofins Agroscience", + "color": null, + "positions": [ + { + "rectangle": [ + 70.824, + 720.74, + 53.72065, + 11.017679 + ], + "pageNumber": 106 + } + ], + "textBefore": "", + "textAfter": ": Eurofins Agroscience", + "startOffset": 215905, + "endOffset": 215918, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f193a24e44a0ccc5f760c7a496096bd4", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 21]: Table_cell: Determination of R230310 in", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 135.9, + 50.09886, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "VV-127958 , A17961A_10048 ", + "textAfter": " Syngenta Crop Protection", + "startOffset": 100155, + "endOffset": 100168, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "50b2c15bccab3b088b6b5004e4ce3984", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 9]: Table_cell: R230310 - Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 392.39, + 103.3949, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "A17961A_10049 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 100537, + "endOffset": 100561, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "51e5fb59f3600931588e9d10f017575f", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "ibacon GmbH Arheilger Weg 17 64380 Rossdorf", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 305, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.6 Analytical method 6 - fenpropidin residues in water ", + "section": "[305, 2, 1]: Paragraph: Report: Bebon R., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 384.20834, + 510.34998, + 152.6611, + 11.017679 + ], + "pageNumber": 118 + }, + { + "rectangle": [ + 199.73, + 497.63, + 70.02672, + 11.017679 + ], + "pageNumber": 118 + } + ], + "textBefore": "Report No: 120041240. ", + "textAfter": " Germany (Syngenta File", + "startOffset": 245636, + "endOffset": 245679, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5bb0cb87c39f255cf3ee95565e6c5a9e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Link", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 57, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.3-7: Validated methods for soil ", + "section": "[57, 1, 0, 19]: Table_cell: Method: Link et al.", + "color": null, + "positions": [ + { + "rectangle": [ + 398.95, + 312.68997, + 18.874237, + 10.526819 + ], + "pageNumber": 39 + } + ], + "textBefore": "Method: ", + "textAfter": " et al. 2019", + "startOffset": 81234, + "endOffset": 81238, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "53693856ef8db224d10b9d969008ea1a", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Elliot A.J.,", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 38, + 1 + ], + "closestHeadline": "Table 5.2-15: Validated methods for the generation of pre-authorization data for CGA289267 in animal products (KCP 5.1.2.5 in support of residues studies) ", + "section": "[38, 1]: Table: #cols: 5, #rows: 6, Component of residue definition", + "color": null, + "positions": [ + { + "rectangle": [ + 421.27, + 569.15, + 43.23645, + 10.526819 + ], + "pageNumber": 25 + } + ], + "textBefore": "REM 164.10 Validation: ", + "textAfter": " 2005 Report: RJ3636B", + "startOffset": 53582, + "endOffset": 53594, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "471bf2acd3207542240fb2d7c48088fa", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Wydra V.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 310, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[310, 2]: Paragraph: (Bebon R. and Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 464.38, + 88.48, + 43.354095, + 11.017679 + ], + "pageNumber": 119 + } + ], + "textBefore": "(Bebon R. and ", + "textAfter": ", 2017)", + "startOffset": 249594, + "endOffset": 249602, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1ece1a5a5aed2dfedebc0816a202a676", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richards S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2, + 44 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2, 44]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 236.22, + 46.035156, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "New data Validation: ", + "textAfter": ", 2002 Report", + "startOffset": 77224, + "endOffset": 77235, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "49c606bde86be4a10958e9de0bf78a93", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 9]: Table_cell: Determination of toluene in", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 286.31, + 103.3949, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "A16283D_10108 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 99723, + "endOffset": 99747, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7cb55374d8c480c82a52bcd7be7c8ff8", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Atkinson S.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 1, + 54 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 1, 54]: Table_cell: ILV: Atkinson S., 2003", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 305.36996, + 47.22043, + 10.526819 + ], + "pageNumber": 36 + } + ], + "textBefore": "ILV: ", + "textAfter": ", 2003 Report", + "startOffset": 75814, + "endOffset": 75825, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "78df3a537430c0c96ed50de20648c699", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 0, + 0, + 0, + 13 + ], + "closestHeadline": "Version history ", + "section": "[0, 0, 0, 13]: Paragraph: Applicant: Syngenta", + "color": null, + "positions": [ + { + "rectangle": [ + 317.59, + 141.66, + 66.906006, + 14.181 + ], + "pageNumber": 1 + } + ], + "textBefore": "Applicant: ", + "textAfter": "", + "startOffset": 328, + "endOffset": 336, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c6d2c50e608dac0d9285ce86d3265950", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2, + 9 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2, 9]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 716.18, + 31.03537, + 10.44714 + ], + "pageNumber": 37 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 76491, + "endOffset": 76497, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "aed962b998c6c2d006a975d28c25ac71", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bocksch S", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 47, + 1, + 3, + 39, + 2 + ], + "closestHeadline": "Table 5.3-2: Validated methods for food and feed of plant origin ", + "section": "[47, 1, 3, 39, 2]: Paragraph: Validation: Bocksch S, 2008", + "color": null, + "positions": [ + { + "rectangle": [ + 393.43, + 157.37997, + 42.469513, + 10.526819 + ], + "pageNumber": 34 + } + ], + "textBefore": "Validation: ", + "textAfter": ", 2008 Report", + "startOffset": 71949, + "endOffset": 71958, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "94f2465df54cc9bfcf093f2e1659df45", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Robinson N.J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 3 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 3]: Table: #cols: 5, #rows: 8, Method type Matrix type", + "color": null, + "positions": [ + { + "rectangle": [ + 399.91, + 564.11, + 56.91153, + 10.526819 + ], + "pageNumber": 16 + } + ], + "textBefore": "Method ", + "textAfter": " et al., 1999", + "startOffset": 29785, + "endOffset": 29798, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d24206a04c373d5ca06f7505bc7c05c9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ryan J.", + "reason": "Author found by \"et al\" regex", + "matchedRule": "CBI.16.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 26, + 1, + 5 + ], + "closestHeadline": "Table 5.2-6: Statement on extraction efficiency ", + "section": "[26, 1, 5]: Table_cell: This is a request", + "color": null, + "positions": [ + { + "rectangle": [ + 271.73, + 291.17996, + 29.949768, + 10.526819 + ], + "pageNumber": 19 + } + ], + "textBefore": "R230310 were extracted. ", + "textAfter": " et al., 1996", + "startOffset": 39920, + "endOffset": 39927, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "54ca76a60128567bd2824a7415dba990", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Zampakou M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 19, + 1, + 3 + ], + "closestHeadline": "Table 5.2-3: Methods suitable for the determination of the relevant impurities in plant protection product (PPP) A23317A ", + "section": "[19, 1, 3]: Table_cell: Kettner R. (2011), Zampakou", + "color": null, + "positions": [ + { + "rectangle": [ + 360.67, + 283.01993, + 56.423462, + 10.526819 + ], + "pageNumber": 12 + } + ], + "textBefore": "Kettner R. (2011), ", + "textAfter": " (2020)", + "startOffset": 22769, + "endOffset": 22780, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8307f15a0367fee746e354e257db762f", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Richards S.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 51, + 1, + 2, + 14 + ], + "closestHeadline": "Table 5.3-4: Validated methods for food and feed of animal origin ", + "section": "[51, 1, 2, 14]: Table_cell: Method: Crook S. 2002", + "color": null, + "positions": [ + { + "rectangle": [ + 389.83, + 602.99, + 46.035156, + 10.526819 + ], + "pageNumber": 37 + } + ], + "textBefore": "New data Validation: ", + "textAfter": ", 2002 Report", + "startOffset": 76637, + "endOffset": 76648, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3df4c0b0f27d754aa5423cb67a7dfabf", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Schuler, L.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 279, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[279, 2]: Paragraph: (Schuler, L., 2020)", + "color": null, + "positions": [ + { + "rectangle": [ + 459.08945, + 421.17, + 48.62021, + 11.017679 + ], + "pageNumber": 108 + } + ], + "textBefore": "(", + "textAfter": ", 2020)", + "startOffset": 221120, + "endOffset": 221131, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a28832954030518c18d00eb08755a478", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 9 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 9]: Table_cell: Statement on Validation of", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 380.87, + 50.09886, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "Document No. VV-887259 ", + "textAfter": " Syngenta Crop Protection", + "startOffset": 101658, + "endOffset": 101671, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f020eb7a1256676a60418055216a62d5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Kovacevic, E.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 5, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 5, 19]: Table_cell: Kovacevic, E.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 253.53, + 56.423378, + 10.526819 + ], + "pageNumber": 51 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 104662, + "endOffset": 104675, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9d19704d3b3ecffba5f98a986ab33270", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Sapiets A.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 1, + 24, + 0 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 1, 24, 0]: Paragraph: Method: Burke S.R., 1996", + "color": null, + "positions": [ + { + "rectangle": [ + 455.16806, + 509.63, + 40.985443, + 10.526819 + ], + "pageNumber": 14 + } + ], + "textBefore": "Validation: Clarke D.M., ", + "textAfter": ", 1994 Report", + "startOffset": 27682, + "endOffset": 27692, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a033966852edea2f13747bea44ee412b", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 4 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 4]: Table_cell: Author(s), year / missing", + "color": null, + "positions": [ + { + "rectangle": [ + 422.11, + 700.1, + 31.03537, + 10.44714 + ], + "pageNumber": 27 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 56709, + "endOffset": 56715, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "17987a6be6279a592f36cddc780a7f59", + "type": "vertebrate", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Bovine", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 163, + 1 + ], + "closestHeadline": "Table A 12: Recovery results from independent laboratory validation of azoxystrobin using the analytical method ", + "section": "[163, 1]: Table: #cols: 6, #rows: 8, Matrix Fortification Level (mg/kg)", + "color": null, + "positions": [ + { + "rectangle": [ + 73.944, + 135.75998, + 28.874046, + 10.526819 + ], + "pageNumber": 79 + } + ], + "textBefore": "", + "textAfter": " muscle", + "startOffset": 154435, + "endOffset": 154441, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5776541032f5cf6bb3c9b95f81dc9723", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "CEM Analytical Services Limited (CEMAS)", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 394, + 2, + 1 + ], + "closestHeadline": "A 1.1.1.1.2.2 Independent laboratory validation ", + "section": "[394, 2, 1]: Paragraph: Report: Devine T. (2016)", + "color": null, + "positions": [ + { + "rectangle": [ + 419.21756, + 616.58, + 117.81955, + 11.017679 + ], + "pageNumber": 141 + }, + { + "rectangle": [ + 199.73, + 603.95, + 84.64372, + 11.017679 + ], + "pageNumber": 141 + } + ], + "textBefore": "Report Number CEMR-7706. ", + "textAfter": ", Imperial House,", + "startOffset": 295407, + "endOffset": 295446, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6b8e06894a3b4675a5dd640290f9fce9", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "75 chemin de Sommières", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 92, + 2 + ], + "closestHeadline": "A3. Test Facilities ", + "section": "[92, 2]: Paragraph: BioChem agrar GmbH, Kupferstr.", + "color": null, + "positions": [ + { + "rectangle": [ + 389.05457, + 482.27, + 111.548096, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "Phase: Eurofins/ADME BIOANALYSES, ", + "textAfter": ", 30310 Vergèze,", + "startOffset": 119240, + "endOffset": 119262, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "eca022443a2f7152729ecdd0412e94a4", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Kettner, R.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 2, + 7 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 2, 7]: Table_cell: Kettner, R.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 426.98, + 44.09292, + 10.526819 + ], + "pageNumber": 48 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 100381, + "endOffset": 100392, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4f50fef869ad1f4a0d68f0b9f1be6f29", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins-GAB GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 92, + 1 + ], + "closestHeadline": "A3. Test Facilities ", + "section": "[92, 1]: Paragraph: Field Phase Eurofins-GAB GmbH,", + "color": null, + "positions": [ + { + "rectangle": [ + 231.05, + 558.23, + 97.59071, + 11.017679 + ], + "pageNumber": 62 + } + ], + "textBefore": "Field Phase ", + "textAfter": ", Eutinger Str.", + "startOffset": 118896, + "endOffset": 118913, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2d6095a050fe77a5dd926608f49a2fc0", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta Crop Protection", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 16, + 2, + 1, + 15 + ], + "closestHeadline": "Azoxystrobin Z-isomer (R230310) ", + "section": "[16, 2, 1, 15]: Table_cell: Kettner R. (2011). R230310", + "color": null, + "positions": [ + { + "rectangle": [ + 493.12967, + 291.17996, + 37.14084, + 10.526819 + ], + "pageNumber": 11 + }, + { + "rectangle": [ + 197.09, + 279.65994, + 63.843597, + 10.526819 + ], + "pageNumber": 11 + } + ], + "textBefore": "analytical method SD-1464/1, ", + "textAfter": ", Muenchwilen AG,", + "startOffset": 21089, + "endOffset": 21113, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1bb693d0712211a3c260b4b69c184380", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Syngenta", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 380, + 3, + 1 + ], + "closestHeadline": "A 2.2.2.5 Description of Methods for the Analysis of Water (KCP 5.2.5) ", + "section": "[380, 3, 1]: Paragraph: Report: Richardson M. (2007)", + "color": null, + "positions": [ + { + "rectangle": [ + 493.52994, + 169.02003, + 40.89212, + 11.017679 + ], + "pageNumber": 138 + } + ], + "textBefore": "Report Number GRM024.03A. ", + "textAfter": ", Jealott’s Hill", + "startOffset": 289835, + "endOffset": 289843, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0eca6b08ad12ad89bc79cff6df584eb8", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "GAB Biotechnologie GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 3, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 3, 15]: Table_cell: Azoxystrobin (ICI5504) and Cyproconazole", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 294.23, + 114.49036, + 10.526819 + ], + "pageNumber": 49 + } + ], + "textBefore": "ICI5504_10398 Test Facility ", + "textAfter": " Not GLP Unpublished", + "startOffset": 102003, + "endOffset": 102026, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "496a6b9126242fa28278cbbaa69fece8", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Wydra V.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 41, + 1, + 0, + 19 + ], + "closestHeadline": "Table 5.2-18: Validated methods for the generation of pre-authorization data for Fenpropidin in soil, water (KCP 5.1.2.6 in support of ecotoxicological studies) ", + "section": "[41, 1, 0, 19]: Table_cell: Method & Validation: Bebon", + "color": null, + "positions": [ + { + "rectangle": [ + 464.88824, + 520.43, + 39.401794, + 10.526819 + ], + "pageNumber": 27 + } + ], + "textBefore": "Validation: Bebon R., ", + "textAfter": ", 2017 Report", + "startOffset": 57041, + "endOffset": 57049, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0314baa023c242916b98f424aefce33d", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Author", + "reason": "Redacted because it's row belongs to a vertebrate study", + "matchedRule": "CBI.12.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 22, + 2, + 5, + 4 + ], + "closestHeadline": "5.2.2 Methods for the determination of residues of Azoxystrobin (KCP1 5.1.2) ", + "section": "[22, 2, 5, 4]: Table_cell: Author(s), year / Report", + "color": null, + "positions": [ + { + "rectangle": [ + 404.83, + 726.86, + 31.03537, + 10.44714 + ], + "pageNumber": 18 + } + ], + "textBefore": "", + "textAfter": "(s), year /", + "startOffset": 34592, + "endOffset": 34598, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9fb557a1b3b05b4ee911d9c21a5bf637", + "type": "hint_only", + "entryType": "HINT", + "state": "SKIPPED", + "value": "Test Facility", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 11, + 21 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 11, 21]: Table_cell: Fenpropidin (CGA114900) - Residue", + "color": null, + "positions": [ + { + "rectangle": [ + 252.29, + 196.04999, + 50.09886, + 10.526819 + ], + "pageNumber": 57 + } + ], + "textBefore": "VV-124541 , CGA114900/4912 ", + "textAfter": " Syngenta - Jealott's", + "startOffset": 112905, + "endOffset": 112918, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b2018164b779c2150155578578e93aa3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Wydra V.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 344, + 2, + 1 + ], + "closestHeadline": "A 2.2.1.6.12 Analytical method 12 - fenpropidin residues in water ", + "section": "[344, 2, 1]: Paragraph: Report: Pupp A., Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 240.16951, + 100.00002, + 42.71376, + 11.017679 + ], + "pageNumber": 129 + } + ], + "textBefore": "Report: Pupp A., ", + "textAfter": " (2008) Fenpropidin -", + "startOffset": 271498, + "endOffset": 271506, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "72b25e250fcaf3f6092edd6cab1c1ef0", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Kettner, R.", + "reason": "Not redacted because it's row does not belong to a vertebrate study", + "matchedRule": "CBI.12.2", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 1, + 19 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 1, 19]: Table_cell: Kettner, R.", + "color": null, + "positions": [ + { + "rectangle": [ + 121.1, + 170.48999, + 44.09292, + 10.526819 + ], + "pageNumber": 47 + } + ], + "textBefore": "", + "textAfter": "", + "startOffset": 100014, + "endOffset": 100025, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "NER", + "RULE" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8a573240c3e785f6977a522e5bc82cef", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "SKIPPED", + "value": "Eurofins Agroscience Services EcoTox GmbH", + "reason": "Address found for Non Vertebrate Study", + "matchedRule": "CBI.1.0", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 80, + 7, + 15 + ], + "closestHeadline": "List of data submitted by the applicant and relied on ", + "section": "[80, 7, 15]: Table_cell: Azoxystrobin/Fenpropidin SE (A23317A) -", + "color": null, + "positions": [ + { + "rectangle": [ + 304.9386, + 282.71, + 187.32214, + 10.526819 + ], + "pageNumber": 53 + } + ], + "textBefore": "VV-884284 Test Facility ", + "textAfter": " GLP Unpublished", + "startOffset": 107212, + "endOffset": 107253, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6828315270ef11b7f30e6b05dc6a41c3", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bebon R.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 310, + 2 + ], + "closestHeadline": "Conclusion ", + "section": "[310, 2]: Paragraph: (Bebon R. and Wydra", + "color": null, + "positions": [ + { + "rectangle": [ + 401.35, + 88.48, + 41.664948, + 11.017679 + ], + "pageNumber": 119 + } + ], + "textBefore": "(", + "textAfter": " and Wydra V.,", + "startOffset": 249581, + "endOffset": 249589, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-08T11:23:04.067051365Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + } + ], + "legalBasis": [ + { + "name": "1.1 personal data (incl. geolocation); Article 39(e)(3)", + "description": "(Regulations (EU) 2016/679 and (EU) 2018/1725 shall apply to the processing of personal data carried out pursuant to this Regulation. Any personal data made public pursuant to Article 38 of this Regulation and this Article shall only be used to ensure the transparency of the risk assessment under this Regulation and shall not be further processed in a manner that is incompatible with these purposes, in accordance with point (b) of Article 5(1) of Regulation (EU) 2016/679 and point (b) of Article 4(1) of Regulation (EU) 2018/1725, as the case may be)", + "reason": "Article 39(e)(3) of Regulation (EC) No 178/2002" + }, + { + "name": "1.2 vertebrate study related personal data (incl. geolocation); Article 39(e)(2)", + "description": "personal data (names and addresses) of individuals involved in testing on vertebrate studies or in obtaining toxicological information", + "reason": "Article 39(e)(2) of Regulation (EC) No 178/2002" + }, + { + "name": "2. manufacturing or production process", + "description": "the manufacturing or production process, including the method and innovative aspects thereof, as well as other technical and industrial specifications inherent to that process or method, except for information which is relevant to the assessment of safety", + "reason": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)" + }, + { + "name": "3. links between a producer and applicant", + "description": "commercial links between a producer or importer and the applicant or the authorisation holder, where applicable", + "reason": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)" + }, + { + "name": "4. commercial information", + "description": "commercial information revealing sourcing, market shares or business strategy of the applicant", + "reason": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)" + }, + { + "name": "5. quantitative composition", + "description": "quantitative composition of the subject matter of the request, except for information which is relevant to the assessment of safety", + "reason": "Article 63(2)(a) of Regulation (EC) No 1107/2009 (making reference to Article 39 of Regulation EC No 178/2002)" + }, + { + "name": "6. specification of impurity", + "description": "the specification of impurity of the active substance and the related methods of analysis for impurities in the active substance as manufactured, except for the impurities that are considered to be toxicologically, ecotoxicologically or environmentally relevant and the related methods of analysis for such impurities", + "reason": "Article 63(2)(b) of Regulation (EC) No 1107/2009" + }, + { + "name": "7. results of production batches", + "description": "results of production batches of the active substance including impurities", + "reason": "Article 63(2)(c) of Regulation (EC) No 1107/2009" + }, + { + "name": "8. composition of a plant protection product", + "description": "information on the complete composition of a plant protection product", + "reason": "Article 63(2)(d) of Regulation (EC) No 1107/2009" + } + ], + "dictionaryVersion": 21, + "dossierDictionaryVersion": 1, + "rulesVersion": 1, + "legalBasisVersion": 2 +} \ No newline at end of file From 9852520e5ed74feabf15c8e92ca575fd6eb3f748 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 09:59:54 +0100 Subject: [PATCH 31/32] Revert "RED-8702: Explore document databases to store entityLog * refactoring" This reverts commit 67f7d8a7 --- .../v1}/server/Application.java | 2 +- .../server/SpringDocRedirectController.java | 2 +- .../client/ApplicationConfigClient.java | 2 +- .../integration/client/AuditClient.java | 2 +- .../client/CustomPermissionClient.java | 2 +- .../integration/client/DictionaryClient.java | 2 +- .../client/DigitalSignatureClient.java | 2 +- .../client/DossierAttributeClient.java | 2 +- .../client/DossierAttributeConfigClient.java | 2 +- .../integration/client/DossierClient.java | 2 +- .../client/DossierStatsClient.java | 2 +- .../client/DossierStatusClient.java | 2 +- .../client/DossierTemplateClient.java | 2 +- .../client/DossierTemplateStatsClient.java | 2 +- .../integration/client/DownloadClient.java | 2 +- .../integration/client/EntityLogClient.java | 2 +- .../client/FeignSupportConfig.java | 2 +- .../client/FileAttributeClient.java | 2 +- .../client/FileAttributeConfigClient.java | 2 +- .../server/integration/client/FileClient.java | 2 +- .../client/FileManagementClient.java | 2 +- .../client/FileProcessingClient.java | 2 +- .../client/IndexInformationClient.java | 2 +- .../client/InternalDictionaryClient.java | 2 +- .../integration/client/LegalBasisClient.java | 2 +- .../client/LicenseReportClient.java | 2 +- .../client/ManualRedactionClient.java | 2 +- .../client/NotificationClient.java | 2 +- .../client/NotificationPreferencesClient.java | 2 +- .../integration/client/ReanalysisClient.java | 2 +- .../client/RedactionLogClient.java | 2 +- .../client/ReportTemplateClient.java | 2 +- .../integration/client/RulesClient.java | 2 +- .../integration/client/UploadClient.java | 2 +- .../integration/client/VersionClient.java | 2 +- .../integration/client/ViewedPagesClient.java | 2 +- .../integration/client/WatermarkClient.java | 2 +- .../DossierTemplateTesterAndProvider.java | 10 +++--- .../service/DossierTesterAndProvider.java | 4 +-- .../service/FileTesterAndProvider.java | 6 ++-- .../service/ReportTemplateProvider.java | 4 +-- .../integration/service/TypeProvider.java | 4 +-- .../integration/service/UserProvider.java | 2 +- .../tests/ApplicationConfigTest.java | 6 ++-- .../server/integration/tests/AuditTest.java | 8 ++--- .../tests/CustomPermissionTest.java | 15 ++++++-- .../integration/tests/DictionaryTest.java | 14 ++++---- .../tests/DigitalSignatureTest.java | 7 ++-- .../tests/DossierAttributeTest.java | 10 +++--- .../integration/tests/DossierStatsTest.java | 16 ++++----- .../integration/tests/DossierStatusTest.java | 12 +++---- ...eCloneAndExportWithDuplicateRanksTest.java | 2 +- .../tests/DossierTemplateImportTest.java | 6 ++-- .../tests/DossierTemplateStatsTest.java | 30 ++++++++-------- .../tests/DossierTemplateTest.java | 28 +++++++-------- .../server/integration/tests/DossierTest.java | 20 +++++------ .../tests/DownloadPreparationTest.java | 18 +++++----- .../integration/tests/DownloadTest.java | 15 ++++---- .../integration/tests/EntityLogMergeTest.java | 2 +- .../tests/EntityLogMongoServiceTest.java | 0 .../integration/tests/FileAttributeTest.java | 18 +++++----- .../integration/tests/FileProcessingTest.java | 20 +++++------ .../server/integration/tests/FileTest.java | 34 +++++++++---------- .../tests/IndexInformationTest.java | 6 ++-- .../integration/tests/LegalBasisTest.java | 10 +++--- .../integration/tests/LicenseReportTest.java | 12 +++---- .../tests/ManualRedactionTest.java | 28 ++++++++------- .../NotificationPreferencesServiceTest.java | 6 ++-- .../tests/NotificationPreferencesTest.java | 6 ++-- .../integration/tests/NotificationTest.java | 12 +++---- .../integration/tests/ReanalysisTest.java | 12 +++---- .../tests/ReduceFileSizeMigrationTest.java | 4 +-- .../integration/tests/ReportTemplateTest.java | 10 +++--- .../server/integration/tests/RulesTest.java | 10 +++--- .../tests/StringCleaningUtilityTest.java | 2 +- .../server/integration/tests/TypeTest.java | 13 +++---- .../integration/tests/ViewedPagesTest.java | 15 ++++---- .../integration/tests/WatermarkTest.java | 12 +++---- .../performance/EntityPerformanceTest.java | 12 +++---- .../performance/FilePerformanceTest.java | 10 +++--- .../performance/PerformanceTestService.java | 10 +++--- .../AbstractPersistenceServerServiceTest.java | 10 +++--- .../utils/FeignRequestInterceptor.java | 2 +- .../utils/KneconRedisTestContainer.java | 2 +- .../KneconSpringPostgreSQLTestContainer.java | 2 +- .../utils/MetricValidationUtils.java | 2 +- .../utils/MongoDBTestContainer.java | 2 +- .../utils/MultithreadedTestRunner.java | 2 +- .../integration/utils/RedisTestContainer.java | 2 +- .../utils/SpringPostgreSQLTestContainer.java | 2 +- .../integration/utils/TokenService.java | 2 +- .../utils/FileSystemBackArchiverTest.java | 2 +- .../server/utils/MetricsPrinterService.java | 2 +- 93 files changed, 312 insertions(+), 295 deletions(-) rename persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/{persistence => peristence/v1}/server/Application.java (99%) rename persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/{persistence => peristence/v1}/server/SpringDocRedirectController.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/ApplicationConfigClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/AuditClient.java (79%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/CustomPermissionClient.java (85%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DictionaryClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DigitalSignatureClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DossierAttributeClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DossierAttributeConfigClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DossierClient.java (79%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DossierStatsClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DossierStatusClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DossierTemplateClient.java (83%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DossierTemplateStatsClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/DownloadClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/EntityLogClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/FeignSupportConfig.java (89%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/FileAttributeClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/FileAttributeConfigClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/FileClient.java (79%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/FileManagementClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/FileProcessingClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/IndexInformationClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/InternalDictionaryClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/LegalBasisClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/LicenseReportClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/ManualRedactionClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/NotificationClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/NotificationPreferencesClient.java (83%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/ReanalysisClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/RedactionLogClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/ReportTemplateClient.java (83%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/RulesClient.java (79%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/UploadClient.java (82%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/VersionClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/ViewedPagesClient.java (81%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/client/WatermarkClient.java (80%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/service/DossierTemplateTesterAndProvider.java (87%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/service/DossierTesterAndProvider.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/service/FileTesterAndProvider.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/service/ReportTemplateProvider.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/service/TypeProvider.java (93%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/service/UserProvider.java (88%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/ApplicationConfigTest.java (89%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/AuditTest.java (88%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/CustomPermissionTest.java (76%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DictionaryTest.java (98%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DigitalSignatureTest.java (94%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DossierAttributeTest.java (97%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DossierStatsTest.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DossierStatusTest.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java (99%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DossierTemplateImportTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DossierTemplateStatsTest.java (92%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DossierTemplateTest.java (97%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DossierTest.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DownloadPreparationTest.java (93%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/DownloadTest.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/EntityLogMergeTest.java (99%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/EntityLogMongoServiceTest.java (100%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/FileAttributeTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/FileProcessingTest.java (92%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/FileTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/IndexInformationTest.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/LegalBasisTest.java (87%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/LicenseReportTest.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/ManualRedactionTest.java (98%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/NotificationPreferencesServiceTest.java (86%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/NotificationPreferencesTest.java (93%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/NotificationTest.java (92%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/ReanalysisTest.java (87%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/ReduceFileSizeMigrationTest.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/ReportTemplateTest.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/RulesTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/StringCleaningUtilityTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/TypeTest.java (88%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/ViewedPagesTest.java (73%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/WatermarkTest.java (95%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/performance/EntityPerformanceTest.java (91%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/performance/FilePerformanceTest.java (83%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/tests/performance/PerformanceTestService.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/AbstractPersistenceServerServiceTest.java (98%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/FeignRequestInterceptor.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/KneconRedisTestContainer.java (90%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/KneconSpringPostgreSQLTestContainer.java (97%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/MetricValidationUtils.java (94%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/MongoDBTestContainer.java (93%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/MultithreadedTestRunner.java (96%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/RedisTestContainer.java (89%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/SpringPostgreSQLTestContainer.java (89%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/integration/utils/TokenService.java (86%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/utils/FileSystemBackArchiverTest.java (97%) rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/{persistence => peristence/v1}/server/utils/MetricsPrinterService.java (98%) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java similarity index 99% rename from persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java rename to persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java index 89cb8ac92..acfeca435 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server; +package com.iqser.red.service.peristence.v1.server; import java.util.Map; import java.util.Optional; diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/SpringDocRedirectController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/SpringDocRedirectController.java rename to persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java index 09cfbd64e..132397d52 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/persistence/server/SpringDocRedirectController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/SpringDocRedirectController.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server; +package com.iqser.red.service.peristence.v1.server; import com.knecon.fforesight.swaggercommons.SpringDocProperties; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ApplicationConfigClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ApplicationConfigClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ApplicationConfigClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ApplicationConfigClient.java index 144d9463a..a2e26efd8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ApplicationConfigClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ApplicationConfigClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/AuditClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/AuditClient.java similarity index 79% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/AuditClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/AuditClient.java index ce3f89bca..040693e4a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/AuditClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/AuditClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/CustomPermissionClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java similarity index 85% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/CustomPermissionClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java index d1a5446dc..e94a11325 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/CustomPermissionClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/CustomPermissionClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DictionaryClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DictionaryClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java index c39d3d32f..5a9935a25 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DictionaryClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DictionaryClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DigitalSignatureClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DigitalSignatureClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java index 4dd9ec7f8..47f203f62 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DigitalSignatureClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java index 491a506a9..035e44773 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeConfigClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeConfigClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java index 16ef26889..8cccd891e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierAttributeConfigClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierClient.java similarity index 79% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierClient.java index 19bc26fee..20126e3a5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatsClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatsClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatsClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatsClient.java index 31cfd0e93..eaac5c99d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatsClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatsClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatusClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatusClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java index 9f0d80b35..0fb5533ef 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierStatusClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateClient.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateClient.java index 6d162fdbe..b9d794dcf 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateStatsClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateStatsClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateStatsClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateStatsClient.java index 81541b09c..fdd3a3151 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DossierTemplateStatsClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierTemplateStatsClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DownloadClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DownloadClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java index 5bbe74c54..b9244a32f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/DownloadClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/EntityLogClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/EntityLogClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/EntityLogClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/EntityLogClient.java index 9a3a6fd48..daa7d305d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/EntityLogClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/EntityLogClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FeignSupportConfig.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java similarity index 89% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FeignSupportConfig.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java index c1fabd824..e158bf918 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FeignSupportConfig.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FeignSupportConfig.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import java.util.Collections; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java index cfd534271..a93e88e8e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeConfigClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeConfigClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java index 49554dd1c..9599c078c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileAttributeConfigClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileClient.java similarity index 79% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileClient.java index 11a10ddce..603071855 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileManagementClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileManagementClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileManagementClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileManagementClient.java index d55e0607f..9bf188cb2 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileManagementClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileManagementClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileProcessingClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileProcessingClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java index 03a5cba5e..275523808 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/FileProcessingClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/IndexInformationClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/IndexInformationClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/IndexInformationClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/IndexInformationClient.java index 16f7df303..fece04d58 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/IndexInformationClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/IndexInformationClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/InternalDictionaryClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/InternalDictionaryClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/InternalDictionaryClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/InternalDictionaryClient.java index e2c29aa24..5f362f75d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/InternalDictionaryClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/InternalDictionaryClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LegalBasisClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LegalBasisClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java index 97e5804af..cb0bfedd3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LegalBasisClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LicenseReportClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LicenseReportClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java index 47c8585f7..cfba25cd1 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/LicenseReportClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ManualRedactionClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ManualRedactionClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ManualRedactionClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ManualRedactionClient.java index 9cc71e400..a0ec87514 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ManualRedactionClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ManualRedactionClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationClient.java index 99441bbe8..efa7f4090 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationPreferencesClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationPreferencesClient.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationPreferencesClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationPreferencesClient.java index 7e6b5d6fa..fb39bbacb 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/NotificationPreferencesClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/NotificationPreferencesClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReanalysisClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReanalysisClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java index 083be0340..a2b406e06 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReanalysisClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RedactionLogClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RedactionLogClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java index 4c6c3628d..3f3abbf38 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RedactionLogClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReportTemplateClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReportTemplateClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java index dd853983a..6e6de9328 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ReportTemplateClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RulesClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java similarity index 79% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RulesClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java index 5a0042e7e..ca7db745e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/RulesClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/UploadClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/UploadClient.java similarity index 82% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/UploadClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/UploadClient.java index ad4c1ebbc..7b467cd7c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/UploadClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/UploadClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/VersionClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/VersionClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/VersionClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/VersionClient.java index b4adea390..908b76d05 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/VersionClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/VersionClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ViewedPagesClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ViewedPagesClient.java similarity index 81% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ViewedPagesClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ViewedPagesClient.java index 9c95f944e..3921b5bb1 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/ViewedPagesClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ViewedPagesClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/WatermarkClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java similarity index 80% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/WatermarkClient.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java index 35bd7d485..00ab23125 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/client/WatermarkClient.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.client; +package com.iqser.red.service.peristence.v1.server.integration.client; import org.springframework.cloud.openfeign.FeignClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTemplateTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java similarity index 87% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTemplateTesterAndProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java index ced233b3b..91e5e20b4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTemplateTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.service; +package com.iqser.red.service.peristence.v1.server.integration.service; import static org.assertj.core.api.Assertions.assertThat; @@ -10,10 +10,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.common.collect.Sets; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; -import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.persistence.server.integration.client.LegalBasisClient; -import com.iqser.red.service.persistence.server.integration.client.RulesClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; +import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTesterAndProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java index 3abf51e14..a0ef0809a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/DossierTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.service; +package com.iqser.red.service.peristence.v1.server.integration.service; import static org.assertj.core.api.Assertions.assertThat; @@ -10,7 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.common.collect.Sets; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/FileTesterAndProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index 7fe7c8c66..d702fb1c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.service; +package com.iqser.red.service.peristence.v1.server.integration.service; import static org.assertj.core.api.Assertions.assertThat; @@ -12,8 +12,8 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.UploadClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/ReportTemplateProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/ReportTemplateProvider.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/ReportTemplateProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/ReportTemplateProvider.java index 8d628effc..37fc8f5d4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/ReportTemplateProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/ReportTemplateProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.service; +package com.iqser.red.service.peristence.v1.server.integration.service; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; @@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ReportTemplate; @Service diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/TypeProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java similarity index 93% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/TypeProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java index 8e61445bd..047cf00ff 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/TypeProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java @@ -1,11 +1,11 @@ -package com.iqser.red.service.persistence.server.integration.service; +package com.iqser.red.service.peristence.v1.server.integration.service; import static org.assertj.core.api.Assertions.assertThat; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.TypeValue; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/UserProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/UserProvider.java similarity index 88% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/UserProvider.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/UserProvider.java index 04464511b..bda4151cb 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/service/UserProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/UserProvider.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.service; +package com.iqser.red.service.peristence.v1.server.integration.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ApplicationConfigTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java similarity index 89% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ApplicationConfigTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java index 791581fb8..79b6ff16c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ApplicationConfigTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ApplicationConfigTest.java @@ -1,12 +1,12 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.ApplicationConfigClient; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.ApplicationConfig; public class ApplicationConfigTest extends AbstractPersistenceServerServiceTest { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/AuditTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java similarity index 88% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/AuditTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java index 3f5a3e475..9946b3966 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/AuditTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/AuditTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -7,9 +7,9 @@ import java.util.Map; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.AuditClient; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.AuditClient; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/CustomPermissionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java similarity index 76% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/CustomPermissionTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java index 58454fbc5..38f5d7d97 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/CustomPermissionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/CustomPermissionTest.java @@ -1,13 +1,22 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.MANAGE_ACL_PERMISSIONS; +import static com.iqser.red.service.persistence.service.v1.api.external.resource.CustomPermissionMappingResource.PERMISSION_REST_PATH; +import static com.iqser.red.service.persistence.service.v1.api.external.resource.CustomPermissionMappingResource.TARGET_OBJECT_VARIABLE; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; -import com.iqser.red.service.persistence.server.integration.client.CustomPermissionClient; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.CustomPermissionClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.acl.RedPermission; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.constants.CustomPermissionConstants; import com.iqser.red.service.persistence.service.v1.api.shared.model.permission.CustomPermissionMappingModel; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DictionaryTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java similarity index 98% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DictionaryTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java index c09b8de60..b016ba95d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DictionaryTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -13,12 +13,12 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; -import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.TypeProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryService; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.Dictionary; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DigitalSignatureTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java similarity index 94% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DigitalSignatureTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java index 55651b048..d5394986a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DigitalSignatureTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java @@ -1,7 +1,8 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import org.junit.jupiter.api.Test; @@ -9,8 +10,8 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; -import com.iqser.red.service.persistence.server.integration.client.DigitalSignatureClient; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DigitalSignatureClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureKms; import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureViewModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignature; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java similarity index 97% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierAttributeTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java index 24a4132d2..49014a429 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierAttributeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -12,10 +12,10 @@ import org.assertj.core.util.Lists; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.DossierAttributeClient; -import com.iqser.red.service.persistence.server.integration.client.DossierAttributeConfigClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributes; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributesConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierAttributeConfig; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatsTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java index c939e6404..7df03e79d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -12,13 +12,13 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DossierStatsClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatsClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStats; 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.ProcessingStatus; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatusTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatusTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java index 5532348e8..ebb424117 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierStatusTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -6,11 +6,11 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DossierStatusClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java similarity index 99% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java index 265d6c817..ec5c1ba81 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; import static org.mockito.ArgumentMatchers.eq; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateImportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateImportTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java index f9f9bf7dd..232d8cc6d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateImportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -19,8 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.mock.web.MockMultipartFile; -import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java similarity index 92% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateStatsTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java index 5f70de0af..fb7674c77 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -13,20 +13,20 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import com.google.common.collect.Sets; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DossierStatusClient; -import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.persistence.server.integration.client.DossierTemplateStatsClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.FileManagementClient; -import com.iqser.red.service.persistence.server.integration.client.ReanalysisClient; -import com.iqser.red.service.persistence.server.integration.client.UploadClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateStatsClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; +import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java similarity index 97% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index fb013023d..4109b40a6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -36,19 +36,19 @@ import org.springframework.mock.web.MockMultipartFile; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Sets; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; -import com.iqser.red.service.persistence.server.integration.client.DossierAttributeConfigClient; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DossierStatusClient; -import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.persistence.server.integration.client.DownloadClient; -import com.iqser.red.service.persistence.server.integration.client.FileAttributeConfigClient; -import com.iqser.red.service.persistence.server.integration.client.LegalBasisClient; -import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.persistence.server.integration.client.WatermarkClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.model.DownloadJob; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java index e0bd06aa2..f87d39a54 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DossierTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -15,15 +15,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; import com.google.common.collect.Sets; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DossierStatusClient; -import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.persistence.server.integration.client.WatermarkClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.TypeProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadPreparationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java similarity index 93% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadPreparationTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java index 82fd5769d..fe9391237 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadPreparationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -16,14 +16,14 @@ import org.springframework.mock.web.MockMultipartFile; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DownloadClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.model.DownloadJob; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadCompressionMessageReceiver; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadReportMessageReceiver; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java index d6f6eb4fa..42f473d6e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/DownloadTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,12 +9,6 @@ import java.util.Set; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionType; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadRedactionFileStatusRepository; -import com.iqser.red.service.persistence.server.integration.client.DownloadClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import org.junit.jupiter.api.Disabled; @@ -23,9 +17,16 @@ import org.springframework.beans.factory.annotation.Autowired; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; +import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.model.DownloadJob; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadMessageReceiver; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadPreparationService; +import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadWithOptionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.RemoveDownloadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMergeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java similarity index 99% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMergeTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java index 98de30465..7a041bc58 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMergeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMergeTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMongoServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java similarity index 100% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/EntityLogMongoServiceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileAttributeTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java index 6cc0857c0..98437df2b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileAttributeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static com.iqser.red.service.persistence.management.v1.processor.service.FileAttributesManagementService.ASCII_ENCODING; import static com.iqser.red.service.persistence.management.v1.processor.service.FileAttributesManagementService.UTF_ENCODING; @@ -19,14 +19,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.mock.web.MockMultipartFile; -import com.iqser.red.service.persistence.server.integration.client.FileAttributeClient; -import com.iqser.red.service.persistence.server.integration.client.FileAttributeConfigClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.FileManagementClient; -import com.iqser.red.service.persistence.server.integration.client.UploadClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; +import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributes; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributesConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileProcessingTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java similarity index 92% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileProcessingTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java index aba741f88..008235811 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileProcessingTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,15 +9,15 @@ import java.util.List; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.FileManagementClient; -import com.iqser.red.service.persistence.server.integration.client.FileProcessingClient; -import com.iqser.red.service.persistence.server.integration.client.ReanalysisClient; -import com.iqser.red.service.persistence.server.integration.client.UploadClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileProcessingClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; +import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult; import com.iqser.red.service.persistence.service.v1.api.shared.model.MessageType; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index 7af0b87e7..fe831f9d0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -22,22 +22,22 @@ import org.springframework.mock.web.MockMultipartFile; import com.google.common.collect.Sets; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.persistence.server.integration.client.FileAttributeClient; -import com.iqser.red.service.persistence.server.integration.client.FileAttributeConfigClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.FileManagementClient; -import com.iqser.red.service.persistence.server.integration.client.ManualRedactionClient; -import com.iqser.red.service.persistence.server.integration.client.ReanalysisClient; -import com.iqser.red.service.persistence.server.integration.client.UploadClient; -import com.iqser.red.service.persistence.server.integration.client.ViewedPagesClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.TypeProvider; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; +import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ViewedPagesClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/IndexInformationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/IndexInformationTest.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/IndexInformationTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/IndexInformationTest.java index 6bae46aca..e61e6c0fe 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/IndexInformationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/IndexInformationTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -8,8 +8,8 @@ import java.time.temporal.ChronoUnit; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.IndexInformationClient; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.IndexInformationClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.IndexInformationRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.index.IndexInformation; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LegalBasisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java similarity index 87% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LegalBasisTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java index baf23c436..0fbb86efe 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LegalBasisTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,10 +9,10 @@ import org.assertj.core.util.Lists; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.LegalBasisClient; -import com.iqser.red.service.persistence.server.integration.client.VersionClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; +import com.iqser.red.service.peristence.v1.server.integration.client.VersionClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis; import feign.FeignException; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LicenseReportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LicenseReportTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java index 0fbd7e20a..e2f796699 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/LicenseReportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,11 +9,11 @@ import java.time.ZoneId; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.LicenseReportClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.LicenseReportClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java similarity index 98% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ManualRedactionTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 7f2cec30e..7672880cc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; import static org.assertj.core.api.Assertions.assertThat; @@ -21,17 +21,17 @@ import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.FileProcessingClient; -import com.iqser.red.service.persistence.server.integration.client.InternalDictionaryClient; -import com.iqser.red.service.persistence.server.integration.client.ManualRedactionClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.TypeProvider; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileProcessingClient; +import com.iqser.red.service.peristence.v1.server.integration.client.InternalDictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; 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; @@ -45,7 +45,11 @@ 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.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.EntryType; +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.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.ManualRedactionEntry; +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; import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ForceRedactionRequestModel; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesServiceTest.java similarity index 86% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesServiceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesServiceTest.java index e0074edf0..4d16624ce 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesServiceTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -6,8 +6,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.server.integration.utils.MultithreadedTestRunner; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.utils.MultithreadedTestRunner; import com.iqser.red.service.persistence.management.v1.processor.service.NotificationPreferencesService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPreferencesPersistenceService; import com.knecon.fforesight.tenantcommons.TenantContext; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java similarity index 93% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java index f4273abcb..791c2da89 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationPreferencesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationPreferencesTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,8 +9,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.BeforeEach; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.NotificationPreferencesClient; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.NotificationPreferencesClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.EmailNotificationType; import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationPreferences; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java similarity index 92% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java index 232778b36..2619802ae 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/NotificationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -9,11 +9,11 @@ import org.assertj.core.util.Lists; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.NotificationClient; -import com.iqser.red.service.persistence.server.integration.client.NotificationPreferencesClient; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.server.integration.utils.MultithreadedTestRunner; +import com.iqser.red.service.peristence.v1.server.integration.client.NotificationClient; +import com.iqser.red.service.peristence.v1.server.integration.client.NotificationPreferencesClient; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.utils.MultithreadedTestRunner; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AddNotificationRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReanalysisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java similarity index 87% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReanalysisTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java index f79625397..19f547b96 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReanalysisTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -8,11 +8,11 @@ import java.util.Set; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.ReanalysisClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReduceFileSizeMigrationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReduceFileSizeMigrationTest.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReduceFileSizeMigrationTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReduceFileSizeMigrationTest.java index f07b146a9..c1241731f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReduceFileSizeMigrationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReduceFileSizeMigrationTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import java.io.FileOutputStream; @@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.migration.migrations.ReduceTextFileSizeMigration10; import com.iqser.red.service.persistence.management.v1.processor.utils.FileUtils; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReportTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReportTemplateTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java index 043c7179e..dcb05aff3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ReportTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java @@ -1,14 +1,14 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.ReportTemplateProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.ReportTemplateProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.ReportTemplateUpdateRequest; import feign.FeignException; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/RulesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/RulesTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java index d9f8d34c3..6ac61f6b0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/RulesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -13,10 +13,10 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; -import com.iqser.red.service.persistence.server.integration.client.RulesClient; -import com.iqser.red.service.persistence.server.integration.client.VersionClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; +import com.iqser.red.service.peristence.v1.server.integration.client.VersionClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.DroolsValidationResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/StringCleaningUtilityTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/StringCleaningUtilityTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java index 320175b68..4620fe162 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/StringCleaningUtilityTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/TypeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java similarity index 88% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/TypeTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java index 666a2f328..a82d6d735 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/TypeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -7,14 +7,15 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.TypeProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.UpdateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.Colors; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type; public class TypeTest extends AbstractPersistenceServerServiceTest { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ViewedPagesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java similarity index 73% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ViewedPagesTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java index b09b6b801..1e7dc5242 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/ViewedPagesTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ViewedPagesTest.java @@ -1,18 +1,19 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.client.ViewedPagesClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ViewedPagesClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.ViewedPagesRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ViewedPage; +import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; public class ViewedPagesTest extends AbstractPersistenceServerServiceTest { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/WatermarkTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java similarity index 95% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/WatermarkTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java index 18abf92f6..5c940ad8c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/WatermarkTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests; +package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; @@ -7,11 +7,11 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.WatermarkClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/EntityPerformanceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java similarity index 91% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/EntityPerformanceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java index 230a17e78..64a146530 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/EntityPerformanceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests.performance; +package com.iqser.red.service.peristence.v1.server.integration.tests.performance; import static org.assertj.core.api.Assertions.assertThat; @@ -9,11 +9,11 @@ import java.util.stream.Collectors; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.DictionaryClient; -import com.iqser.red.service.persistence.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.persistence.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.persistence.server.integration.service.TypeProvider; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/FilePerformanceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/FilePerformanceTest.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/FilePerformanceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/FilePerformanceTest.java index 065f49c5f..450ab69bb 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/FilePerformanceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/FilePerformanceTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests.performance; +package com.iqser.red.service.peristence.v1.server.integration.tests.performance; import static org.assertj.core.api.Assertions.assertThat; @@ -8,10 +8,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DossierStatsClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatsClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.knecon.fforesight.tenantcommons.TenantContext; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/PerformanceTestService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/PerformanceTestService.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java index 830607471..38635fe6d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/tests/performance/PerformanceTestService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/PerformanceTestService.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.tests.performance; +package com.iqser.red.service.peristence.v1.server.integration.tests.performance; import java.time.OffsetDateTime; import java.util.ArrayList; @@ -16,10 +16,10 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.TransientSecurityContext; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.server.integration.client.DossierClient; -import com.iqser.red.service.persistence.server.integration.client.DossierStatsClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatsClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java similarity index 98% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/AbstractPersistenceServerServiceTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 697a59ce8..6a2c43035 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import static org.mockito.Mockito.when; @@ -49,10 +49,10 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; import com.iqser.red.commons.jackson.ObjectMapperFactory; -import com.iqser.red.service.persistence.server.integration.client.ApplicationConfigClient; -import com.iqser.red.service.persistence.server.integration.client.FileClient; -import com.iqser.red.service.persistence.server.Application; -import com.iqser.red.service.persistence.server.utils.MetricsPrinterService; +import com.iqser.red.service.peristence.v1.server.Application; +import com.iqser.red.service.peristence.v1.server.integration.client.ApplicationConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.utils.MetricsPrinterService; import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; import com.iqser.red.service.persistence.management.v1.processor.client.searchservice.SearchClient; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/FeignRequestInterceptor.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FeignRequestInterceptor.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/FeignRequestInterceptor.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FeignRequestInterceptor.java index e6ff73a8f..2a1c258d5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/FeignRequestInterceptor.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FeignRequestInterceptor.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import org.springframework.stereotype.Component; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconRedisTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconRedisTestContainer.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconRedisTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconRedisTestContainer.java index 232d3e473..fcede2ceb 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconRedisTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconRedisTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import org.testcontainers.containers.GenericContainer; import org.testcontainers.utility.DockerImageName; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconSpringPostgreSQLTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconSpringPostgreSQLTestContainer.java similarity index 97% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconSpringPostgreSQLTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconSpringPostgreSQLTestContainer.java index bb93cdd9a..6981e94fa 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/KneconSpringPostgreSQLTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/KneconSpringPostgreSQLTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import java.time.Duration; import java.time.temporal.ChronoUnit; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MetricValidationUtils.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MetricValidationUtils.java similarity index 94% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MetricValidationUtils.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MetricValidationUtils.java index 33e09372d..7681c34c5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MetricValidationUtils.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MetricValidationUtils.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MongoDBTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java similarity index 93% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MongoDBTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java index 5654ca02b..6db3c46ec 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MongoDBTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MongoDBTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import org.testcontainers.containers.GenericContainer; import org.testcontainers.utility.DockerImageName; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MultithreadedTestRunner.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MultithreadedTestRunner.java similarity index 96% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MultithreadedTestRunner.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MultithreadedTestRunner.java index efe2d6796..2dd4cc6c8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/MultithreadedTestRunner.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/MultithreadedTestRunner.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import java.util.ArrayList; import java.util.Collections; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/RedisTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/RedisTestContainer.java similarity index 89% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/RedisTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/RedisTestContainer.java index ba4032b51..a756c4f5b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/RedisTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/RedisTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import org.testcontainers.containers.GenericContainer; import org.testcontainers.utility.DockerImageName; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/SpringPostgreSQLTestContainer.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/SpringPostgreSQLTestContainer.java similarity index 89% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/SpringPostgreSQLTestContainer.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/SpringPostgreSQLTestContainer.java index 3fb788bb0..56adc5e8e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/SpringPostgreSQLTestContainer.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/SpringPostgreSQLTestContainer.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import org.testcontainers.containers.PostgreSQLContainer; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/TokenService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/TokenService.java similarity index 86% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/TokenService.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/TokenService.java index 7ec1bb48f..fb6269a5b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/integration/utils/TokenService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/TokenService.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.integration.utils; +package com.iqser.red.service.peristence.v1.server.integration.utils; import org.apache.commons.codec.binary.Base64; import org.springframework.stereotype.Service; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/FileSystemBackArchiverTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/FileSystemBackArchiverTest.java similarity index 97% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/FileSystemBackArchiverTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/FileSystemBackArchiverTest.java index 92ab33c26..3aef8fe5c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/FileSystemBackArchiverTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/FileSystemBackArchiverTest.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.utils; +package com.iqser.red.service.peristence.v1.server.utils; import static org.assertj.core.api.Assertions.assertThat; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/MetricsPrinterService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/MetricsPrinterService.java similarity index 98% rename from persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/MetricsPrinterService.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/MetricsPrinterService.java index bb3c4b946..d32ff0324 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/persistence/server/utils/MetricsPrinterService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/utils/MetricsPrinterService.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.server.utils; +package com.iqser.red.service.peristence.v1.server.utils; import java.text.DecimalFormat; import java.util.ArrayList; From 54de8074b6a2508b031e01f2dd754301ed905a90 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 10:04:27 +0100 Subject: [PATCH 32/32] RED-8702: Explore document databases to store entityLog --- .../v1/server/integration/tests/EntityLogMongoServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java index 530cd2007..cebe87fa9 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMongoServiceTest.java @@ -7,8 +7,8 @@ import org.springframework.core.io.ClassPathResource; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.mongo.EntityLogMongoService; -import com.iqser.red.service.persistence.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; import lombok.SneakyThrows;