From 06360c5cbdf1a44c7c094536b4d3f46a000e924c Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 12 Mar 2024 16:32:59 +0200 Subject: [PATCH 01/89] added implicit flow swagger --- .../persistence-service-processor-v1/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..dd6e52a9c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -37,7 +37,7 @@ dependencies { api("com.knecon.fforesight:database-tenant-commons:0.21.0") api("com.knecon.fforesight:keycloak-commons:0.25.0") api("com.knecon.fforesight:tracing-commons:0.5.0") - api("com.knecon.fforesight:swagger-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") api("org.springframework.security:spring-security-acl:6.0.2") api("org.springframework.boot:spring-boot-starter-mail:${springBootStarterVersion}") From f3ef80df066c4b83db5aaa2fd67df8b60e4db127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Wed, 13 Mar 2024 12:18:14 +0100 Subject: [PATCH 02/89] RED-7968: Convert unprocessed manual addToDictionaries to local changes --- .../processor/migration/SaasMigrationService.java | 5 +++++ .../ManualRedactionProviderService.java | 14 ++++++++++++++ .../AddRedactionPersistenceService.java | 1 + 3 files changed, 20 insertions(+) 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..fbc218fb1 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 @@ -20,6 +20,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog 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.dossier.file.SaasMigrationStatus; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; import com.iqser.red.service.redaction.v1.model.MigrationRequest; import com.iqser.red.storage.commons.exception.StorageException; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; @@ -158,6 +159,10 @@ public class SaasMigrationService implements TenantSyncService { saasMigrationStatusPersistenceService.updateStatus(fileId, SaasMigrationStatus.DOCUMENT_FILES_MIGRATED); + if(fileStatusPersistenceService.getStatus(fileId).getWorkflowStatus().equals(WorkflowStatus.APPROVED)) { + manualRedactionProviderService.convertUnprocessedAddToDictionariesToLocalChanges(fileId); + } + try { indexingService.reindex(dossierId, Set.of(fileId), false); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java index 0277132ec..9731e322a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionProviderService.java @@ -50,6 +50,20 @@ public class ManualRedactionProviderService { private final ResizeRedactionPersistenceService resizeRedactionPersistenceService; + + public void convertUnprocessedAddToDictionariesToLocalChanges(String fileId){ + var unprocessedManualAdds = addRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.unprocessedOnly()); + for (var unprocessedManualAdd : unprocessedManualAdds){ + if (unprocessedManualAdd.isAddToDictionary() || unprocessedManualAdd.isAddToAllDossiers()){ + unprocessedManualAdd.setAddToDictionary(false); + unprocessedManualAdd.setAddToAllDossiers(false); + unprocessedManualAdd.setLegalBasis(""); + addRedactionPersistenceService.update(unprocessedManualAdd); + } + } + } + + @Transactional public ManualRedactions getManualRedactions(String fileId, ManualChangesQueryOptions options) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java index 26f5be3c3..a2b6c93bf 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java @@ -80,6 +80,7 @@ public class AddRedactionPersistenceService { } + @Transactional public List findEntriesByFileIdAndOptions(String fileId, ManualChangesQueryOptions options) { return manualRedactionRepository.findByFileIdAndOptions(fileId, options.isIncludeDeletions(), options.isIncludeOnlyUnprocessed(), options.isIncludeDictChanges()); From f8741b54d3b3c7c3519cdfeae7b364a0a7f040a3 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 14 Mar 2024 09:17:12 +0100 Subject: [PATCH 03/89] 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 3fde378ade14f6f9f6d9063abc814eacd1b23030 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Wed, 13 Mar 2024 15:45:44 +0100 Subject: [PATCH 04/89] RED-8480: integrated legal basis endpoint in recategorize endpoint --- .../impl/controller/ManualRedactionController.java | 1 + .../external/resource/ManualRedactionResource.java | 1 + .../annotations/ManualRecategorizationEntity.java | 2 ++ .../manualredactions/ManualRedactionMapper.java | 2 ++ .../manualredactions/ManualRedactionService.java | 3 +++ .../RecategorizationPersistenceService.java | 13 +++++++++++++ .../resources/db/changelog/db.changelog-tenant.yaml | 2 ++ ...2-add-legal-basis-variables-to-recategorize.yaml | 11 +++++++++++ .../v1/server/integration/tests/FileTest.java | 2 +- .../integration/tests/ManualRedactionTest.java | 12 +++++++++--- .../model/annotations/RecategorizationRequest.java | 1 + .../entitymapped/ManualRecategorization.java | 2 ++ .../model/manual/RecategorizationRequestModel.java | 2 ++ 13 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java index b4b18a813..3e5095fc6 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java @@ -253,6 +253,7 @@ public class ManualRedactionController implements ManualRedactionResource { } + @Deprecated(forRemoval = true) @PreAuthorize("hasAuthority('" + DO_MANUAL_REDACTION + "')") public List legalBasisChangeBulk(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ManualRedactionResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ManualRedactionResource.java index 56fe7699e..d251f3ced 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ManualRedactionResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/ManualRedactionResource.java @@ -120,6 +120,7 @@ public interface ManualRedactionResource { @RequestBody Set forceRedactionRequests); + @Deprecated(forRemoval = true) @ResponseStatus(value = HttpStatus.OK) @PostMapping(value = MANUAL_REDACTION_REST_PATH + "/bulk/redaction/legalBasisChange" diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java index c6a81135c..92595e1ca 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java @@ -49,6 +49,8 @@ public class ManualRecategorizationEntity implements IBaseAnnotation { private boolean addToAllDossiers; @Column(length = 4000) private String legalBasis; + @Column(length = 1024) + private String section; @ManyToOne private FileEntity fileStatus; 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..664b9fc3c 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 @@ -120,6 +120,7 @@ public class ManualRedactionMapper { } + @Deprecated(forRemoval = true) public List toLegalBasisChangeRequestList(Set legalBasisChangeRequests) { return legalBasisChangeRequests.stream() @@ -159,6 +160,7 @@ public class ManualRedactionMapper { .dossierTemplateTypeId(toTypeId(recategorizationRequest.getType(), dossierTemplateId)) .legalBasis(Optional.ofNullable(recategorizationRequest.getLegalBasis()) .orElse("")) + .section(recategorizationRequest.getSection()) .build(); requests.add(build); } 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..c6fd8a3e9 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 @@ -197,6 +197,7 @@ public class ManualRedactionService { } + @Deprecated(forRemoval = true) @Transactional public List addLegalBasisChange(String dossierId, String fileId, List legalBasisChangeRequests) { @@ -224,6 +225,8 @@ public class ManualRedactionService { public List addRecategorization(String dossierId, String fileId, List recategorizationRequests) { var response = new ArrayList(); + dossierPersistenceService.getAndValidateDossier(dossierId); + for (var recategorizationRequest : recategorizationRequests) { manualRedactionDictionaryUpdateHandler.validateDictionariesForAdd(recategorizationRequest, recategorizationRequest.getValue()); manualRedactionDictionaryUpdateHandler.validateDictionariesForDelete(recategorizationRequest, diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RecategorizationPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RecategorizationPersistenceService.java index 09a5d95f4..e53b68948 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RecategorizationPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/RecategorizationPersistenceService.java @@ -5,12 +5,14 @@ import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Set; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRecategorizationEntity; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.model.ManualChangesQueryOptions; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.RecategorizationRepository; @@ -24,6 +26,8 @@ import lombok.extern.slf4j.Slf4j; @RequiredArgsConstructor public class RecategorizationPersistenceService { + private final int SECTION_MAX_LENGTH = 1024; + private final RecategorizationRepository recategorizationRepository; @@ -31,6 +35,7 @@ public class RecategorizationPersistenceService { ManualRecategorizationEntity manualRecategorization = new ManualRecategorizationEntity(); manualRecategorization.setId(new AnnotationEntityId(recategorizationRequest.getAnnotationId(), fileId)); + checkSection(recategorizationRequest.getSection()); BeanUtils.copyProperties(recategorizationRequest, manualRecategorization); manualRecategorization.setRequestDate(OffsetDateTime.now()); manualRecategorization.setTypeId(recategorizationRequest.getDossierTemplateTypeId()); @@ -39,6 +44,14 @@ public class RecategorizationPersistenceService { } + private void checkSection(String section) { + + if (!StringUtils.isEmpty(section) && section.length() > SECTION_MAX_LENGTH) { + throw new BadRequestException(String.format("The section is too long (%s), max length %s", section.length(), SECTION_MAX_LENGTH)); + } + } + + @Transactional public void updateModifiedDictionaries(String fileId, String annotationId, Set typeIdsOfDictionaryWithAdd, Set typeIdsOfDictionaryWithDelete) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml index c2279ec70..d674bf548 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml @@ -189,3 +189,5 @@ databaseChangeLog: file: db/changelog/tenant/121-set-dictionary-entry-type-for-dictionary-adds-where-null.yaml - include: file: db/changelog/tenant/sql/206-remove-manual-redactions-on-non-existing-pages.sql + - include: + file: db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml new file mode 100644 index 000000000..948f5ab01 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml @@ -0,0 +1,11 @@ +databaseChangeLog: + - changeSet: + id: add-legal-basis-variables-to-recategorize + author: ali + changes: + - addColumn: + tableName: manual_recategorization + columns: + - column: + name: section + type: VARCHAR(1024) \ No newline at end of file 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..7ebcf07e7 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 @@ -415,7 +415,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest { .build())); manualRedactionClient.recategorizeBulk(dossierId, fileId, - Set.of(RecategorizationRequestModel.builder().annotationId(annotationId).comment("comment").type("new-type").legalBasis("").build()), + Set.of(RecategorizationRequestModel.builder().annotationId(annotationId).comment("comment").type("new-type").legalBasis("").section("section").build()), false); var loadedFile = fileClient.getFileStatus(dossierId, fileId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 7b6107283..9853bfef0 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 @@ -1198,6 +1198,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToDictionary(true) .addToAllDossiers(true) .legalBasis("") + .section("section") + .value("some value") .build()), false); @@ -1282,6 +1284,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToDictionary(true) .addToAllDossiers(false) .legalBasis("") + .section("section") + .value("some value") .build()), false); @@ -1652,7 +1656,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv").legalBasis("").build()), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv").legalBasis("").section("section").value("").build()), false); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(allManualRedactions.getRecategorizations().size(), 1); @@ -1676,7 +1680,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dossierId(dossier.getId()) .build()); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv2").legalBasis("").build()), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv2").legalBasis("").section("section").value("value").build()), false); allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(allManualRedactions.getRecategorizations().size(), 2); @@ -1958,6 +1962,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToDictionary(true) .addToAllDossiers(true) .legalBasis("") + .section("section") + .value("value") .build(); var recatModelLongLegalBasis = RecategorizationRequestModel.builder() .type(type.getType()) @@ -1966,7 +1972,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .legalBasis(RandomStringUtils.randomAlphanumeric(4001)) .build(); - var recatModelNoLegalBasis = RecategorizationRequestModel.builder().type(type.getType()).annotationId("annotationId3").addToDictionary(true).addToAllDossiers(true).build(); + var recatModelNoLegalBasis = RecategorizationRequestModel.builder().type(type.getType()).annotationId("annotationId3").addToDictionary(true).section("section").value("some value").addToAllDossiers(true).build(); manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel, recatModelNoLegalBasis), false); diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/RecategorizationRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/RecategorizationRequest.java index 58519a9c1..889688aa6 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/RecategorizationRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/RecategorizationRequest.java @@ -29,6 +29,7 @@ public class RecategorizationRequest implements ManualRequestWithAddToDictionary boolean addToAllDossiers; private DictionaryEntryType dictionaryEntryType; String legalBasis; + String section; @Override diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualRecategorization.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualRecategorization.java index b096f4801..91bcbd8e3 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualRecategorization.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualRecategorization.java @@ -17,6 +17,8 @@ public class ManualRecategorization extends BaseAnnotation { private String legalBasis; private boolean addToDictionary; private boolean addToAllDossiers; + private String section; + private String value; @Override diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationRequestModel.java index bddff3048..ef3270c35 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationRequestModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationRequestModel.java @@ -20,5 +20,7 @@ public class RecategorizationRequestModel { boolean addToDictionary; boolean addToAllDossiers; String legalBasis; + String section; + String value; } From b2cf55b5cc23660c58d41d69a64d9b083524d9fc Mon Sep 17 00:00:00 2001 From: Corina Olariu Date: Thu, 14 Mar 2024 12:20:17 +0200 Subject: [PATCH 05/89] RED-8727 - Add rank de-duplication to migration - add RankDeDuplicationService and RankDeduplicationMigration16 to update the found duplicate ranks - junit tests added Signed-off-by: Corina Olariu --- .../migration/RankDeDuplicationService.java | 93 ++++++++++++ .../migration/SaasMigrationService.java | 27 ++-- .../RankDeDuplicationMigration16.java | 41 ++++++ ...eCloneAndExportWithDuplicateRanksTest.java | 139 ++++++++++++++++++ 4 files changed, 288 insertions(+), 12 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/RankDeDuplicationService.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/RankDeDuplicationMigration16.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/RankDeDuplicationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/RankDeDuplicationService.java new file mode 100644 index 000000000..97cdb2b71 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/RankDeDuplicationService.java @@ -0,0 +1,93 @@ +package com.iqser.red.service.persistence.management.v1.processor.migration; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; +import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +public class RankDeDuplicationService { + + private final DossierTemplateManagementService dossierTemplateManagementService; + + private final DictionaryPersistenceService dictionaryPersistenceService; + + + @SneakyThrows + public void deduplicate() { + + dossierTemplateManagementService.getAllDossierTemplates() + .stream() + .map(DossierTemplate::getId) + .forEach(this::deduplicate); + } + + + private void deduplicate(String dossierTemplateId) { + + List allDossierTemplateTypes = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId, false); + TreeMap> typesSortedByRank = new TreeMap<>(allDossierTemplateTypes.stream() + .collect(Collectors.groupingBy(TypeEntity::getRank, Collectors.toList()))); + + var lastRankOk = -1; + // we create a map with every rank that needs to be updated and the value is the starting point for that rank + Map rankToNewRankUpdateMap = new TreeMap<>(Collections.reverseOrder()); + for (var typesByRankEntry : typesSortedByRank.entrySet()) { + log.debug(" {} - {}", typesByRankEntry.getKey(), typesByRankEntry.getValue().size()); + typesByRankEntry.getValue() + .forEach(t -> log.debug("type: {} - dtId: {} - dId: {}", t.getType(), t.getDossierTemplateId(), t.getDossierId())); + + if (typesByRankEntry.getValue().size() > 1) { + if (typesByRankEntry.getKey() > lastRankOk) { + rankToNewRankUpdateMap.put(typesByRankEntry.getKey(), typesByRankEntry.getKey()); + lastRankOk = typesByRankEntry.getKey() + typesByRankEntry.getValue().size() - 1; + } else { + rankToNewRankUpdateMap.put(typesByRankEntry.getKey(), lastRankOk + 1); + lastRankOk = lastRankOk + typesByRankEntry.getValue().size(); + } + } else { + if (typesByRankEntry.getKey() > lastRankOk) { + lastRankOk = typesByRankEntry.getKey(); + } else { + lastRankOk = lastRankOk + 1; + rankToNewRankUpdateMap.put(typesByRankEntry.getKey(), lastRankOk); + } + } + } + // need to update in reverse order so we don't get exception for duplicate ranks + for (var rankToUpdateEntry : rankToNewRankUpdateMap.entrySet()) { + var newRank = rankToUpdateEntry.getValue(); + for (TypeEntity t : typesSortedByRank.get(rankToUpdateEntry.getKey())) { + + if (newRank != t.getRank()) { + log.info("Type {} with rank: {} will be updated to rank: {}", t.getType(), t.getRank(), newRank); + t.setRank(newRank); + dictionaryPersistenceService.updateType(t.getId(), t); + var dossierTypes = dictionaryPersistenceService.getAllDossierTypesForDossierTemplateAndType(dossierTemplateId, t.getType(), false); + + for (TypeEntity td : dossierTypes) { + td.setRank(newRank); + dictionaryPersistenceService.updateType(td.getId(), td); + } + + } + newRank = newRank + 1; + } + } + } + +} 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 fbc218fb1..cf8911208 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,5 +1,17 @@ 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.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_QUEUE; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.migration.SaasMigrationStatusEntity; @@ -36,18 +48,6 @@ import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Map; -import java.util.Set; -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.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_QUEUE; - @Slf4j @Service @RequiredArgsConstructor @@ -68,6 +68,7 @@ public class SaasMigrationService implements TenantSyncService { SaasAnnotationIdMigrationService saasAnnotationIdMigrationService; UncompressedFilesMigrationService uncompressedFilesMigrationService; ManualRedactionService manualRedactionService; + RankDeDuplicationService rankDeDuplicationService; @Override @@ -88,6 +89,8 @@ public class SaasMigrationService implements TenantSyncService { uncompressedFilesMigrationService.migrateUncompressedFiles(tenantId); log.info("Finished uncompressed files migration ..."); + rankDeDuplicationService.deduplicate(); + int numberOfFiles = 0; var dossiers = dossierService.getAllDossiers() .stream() diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/RankDeDuplicationMigration16.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/RankDeDuplicationMigration16.java new file mode 100644 index 000000000..c85914482 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/RankDeDuplicationMigration16.java @@ -0,0 +1,41 @@ +package com.iqser.red.service.persistence.management.v1.processor.migration.migrations; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.migration.Migration; +import com.iqser.red.service.persistence.management.v1.processor.migration.RankDeDuplicationService; + +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Setter +@Service +public class RankDeDuplicationMigration16 extends Migration { + + @Autowired + private RankDeDuplicationService rankDeDuplicationService; + + + public RankDeDuplicationMigration16() { + + super(NAME, VERSION); + } + + + private static final String NAME = "Adding to the migration the rank de-duplication"; + private static final long VERSION = 16; + + + @Override + /* + * In cases were we have duplicate ranks for entities, this needs to be fixed + */ protected void migrate() { + + log.info("Migration: Checking for duplicate ranks"); + rankDeDuplicationService.deduplicate(); + + } + +} 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/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java index 7e96b2ace..ec5c1ba81 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/peristence/v1/server/integration/tests/DossierTemplateCloneAndExportWithDuplicateRanksTest.java @@ -1,8 +1,13 @@ 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; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Optional; @@ -10,12 +15,16 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.migration.RankDeDuplicationService; import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateImportService; @@ -84,11 +93,17 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest { private DossierTemplatePersistenceService dossierTemplatePersistenceService; private DossierTemplateCloneService dossierTemplateCloneService; private DossierTemplateExportService dossierTemplateExportService; + private RankDeDuplicationService rankDeDuplicationService; private DossierTemplateManagementService dossierTemplateManagementService; private String dossierTemplateId = "dossierTemplateId"; + + private String dossierId = "dossierId"; private String dossierTemplateName = "Clone of " + dossierTemplateId; + @Captor + private ArgumentCaptor captor; + @BeforeEach public void setupData() { @@ -131,6 +146,8 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest { dossierTemplatePersistenceService, dossierTemplateCloneService); + rankDeDuplicationService = new RankDeDuplicationService(dossierTemplateManagementService, dictionaryPersistenceService); + List typesValues = new ArrayList<>(); TypeRankSummary typeRank1 = new TypeRankSummary(dossierTemplateId, null, 50, 2); TypeRankSummary typeRank2 = new TypeRankSummary(dossierTemplateId, null, 100, 1); @@ -165,4 +182,126 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest { } + + @Test + @SneakyThrows + public void testDeduplicateDossierTemplate() { + + List allDossierTemplateTypes = new ArrayList<>(); + allDossierTemplateTypes.add(createTypeEntity("type00", dossierTemplateId, 0)); // no change + allDossierTemplateTypes.add(createTypeEntity("type01", dossierTemplateId, 0)); // new rank will be 1 + allDossierTemplateTypes.add(createTypeEntity("type02", dossierTemplateId, 0)); // new rank will be 2 + allDossierTemplateTypes.add(createTypeEntity("type22", dossierTemplateId, 2)); // new rank will be 3 + allDossierTemplateTypes.add(createTypeEntity("type0", dossierTemplateId, 49)); // no change + allDossierTemplateTypes.add(createTypeEntity("type1", dossierTemplateId, 50)); // no change + allDossierTemplateTypes.add(createTypeEntity("type2", dossierTemplateId, 50)); // new rank will be 51 + allDossierTemplateTypes.add(createTypeEntity("type3", dossierTemplateId, 50)); // new rank will be 52 + allDossierTemplateTypes.add(createTypeEntity("type4", dossierTemplateId, 50)); // new rank will be 53 + allDossierTemplateTypes.add(createTypeEntity("type5", dossierTemplateId, 50)); // new rank will be 54 + allDossierTemplateTypes.add(createTypeEntity("type6", dossierTemplateId, 51)); // new rank will be 55 + allDossierTemplateTypes.add(createTypeEntity("type7", dossierTemplateId, 51)); // new rank will be 55 + allDossierTemplateTypes.add(createTypeEntity("type8", dossierTemplateId, 51)); // new rank will be 57 + allDossierTemplateTypes.add(createTypeEntity("type9", dossierTemplateId, 52)); // new rank will be 58 + allDossierTemplateTypes.add(createTypeEntity("type10", dossierTemplateId, 52)); // new rank will be 59 + allDossierTemplateTypes.add(createTypeEntity("type11", dossierTemplateId, 55)); // new rank will be 60 + allDossierTemplateTypes.add(createTypeEntity("type12", dossierTemplateId, 100)); // no change + + List dossierTemplates = new ArrayList<>(); + DossierTemplateEntity dt = new DossierTemplateEntity(); + dt.setId(dossierTemplateId); + dossierTemplates.add(dt); + when(dossierTemplateRepository.findAllWhereDeletedIsFalse()).thenReturn(dossierTemplates); + when(legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplateId)).thenReturn(Collections.emptyList()); + when(dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId, false)).thenReturn(allDossierTemplateTypes); + when(dictionaryPersistenceService.getAllDossierTypesForDossierTemplateAndType(dossierTemplateId, "type02", false)).thenReturn(List.of(createTypeEntity("type02", + dossierTemplateId, + dossierId, + 0))); + + rankDeDuplicationService.deduplicate(); + + TypeEntity caughtType; + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type01", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 1); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type02", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 2); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type02", dossierTemplateId, dossierId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 2); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type22", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 3); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type2", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 51); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type3", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 52); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type4", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 53); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type5", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 54); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type6", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 55); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type7", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 56); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type8", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 57); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type9", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 58); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type10", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 59); + + verify(dictionaryPersistenceService, times(1)).updateType(eq(toTypeId("type11", dossierTemplateId)), captor.capture()); + caughtType = captor.getValue(); + Assertions.assertEquals(caughtType.getRank(), 60); + + } + + + private TypeEntity createTypeEntity(String type, String dossierTemplateId, int rank) { + + return createTypeEntity(type, dossierTemplateId, null, rank); + } + + + private TypeEntity createTypeEntity(String type, String dossierTemplateId, String dossierId, int rank) { + + TypeEntity typeEntity = new TypeEntity(); + typeEntity.setId(toTypeId(type, dossierTemplateId, dossierId)); + typeEntity.setType(type); + typeEntity.setDossierTemplateId(dossierTemplateId); + typeEntity.setRank(rank); + typeEntity.setDescription("description"); + typeEntity.setLabel(type); + typeEntity.setHexColor("#ddddd"); + typeEntity.setRecommendationHexColor("#cccccc"); + typeEntity.setSkippedHexColor("#cccccc"); + typeEntity.setAddToDictionaryAction(true); + + return typeEntity; + } + } From cfdd6a6924c1f154e8239703447ccb830eac0a0a Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 18 Mar 2024 15:05:41 +0100 Subject: [PATCH 06/89] 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 8a4c754250e88fa1d5455c10138ef808478eed04 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Fri, 15 Mar 2024 16:26:39 +0100 Subject: [PATCH 07/89] RED-8480: adjusted propertyChanges in manual changes --- .../ManualRecategorizationEntity.java | 2 + .../service/EntityLogMergeService.java | 23 +++++- .../ManualRedactionUndoService.java | 22 +++--- .../PendingDictionaryEntryFactory.java | 9 ++- ...legal-basis-variables-to-recategorize.yaml | 5 +- .../tests/ManualRedactionTest.java | 77 ++++++++++++++++++- 6 files changed, 122 insertions(+), 16 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java index 92595e1ca..210addf02 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java @@ -51,6 +51,8 @@ public class ManualRecategorizationEntity implements IBaseAnnotation { private String legalBasis; @Column(length = 1024) private String section; + @Column + private String value; @ManyToOne private FileEntity fileStatus; 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..b8c27fa85 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 @@ -280,6 +280,7 @@ public class EntityLogMergeService { } + @Deprecated(forRemoval = true) private void mergeLegalBasisChanges(ManualLegalBasisChange manualLegalBasisChange, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() @@ -305,6 +306,7 @@ public class EntityLogMergeService { } + @Deprecated(forRemoval = true) private Map getPropertyChanges(ManualLegalBasisChange manualLegalBasisChange) { Map propertyChanges = new HashMap<>(); @@ -339,12 +341,31 @@ public class EntityLogMergeService { .requestedDate(recategorization.getRequestDate()) .processedDate(recategorization.getProcessedDate()) .userId(recategorization.getUser()) - .propertyChanges(Map.of("type", recategorization.getType())) + .propertyChanges(getPropertyChanges(recategorization)) .build()); }); } + private Map getPropertyChanges(ManualRecategorization recategorization) { + + Map propertyChanges = new HashMap<>(); + if (!Strings.isNullOrEmpty(recategorization.getType())) { + propertyChanges.put("type", recategorization.getType()); + } + if (!Strings.isNullOrEmpty(recategorization.getLegalBasis())) { + propertyChanges.put("legalBasis", recategorization.getLegalBasis()); + } + if (!Strings.isNullOrEmpty(recategorization.getValue())) { + propertyChanges.put("value", recategorization.getValue()); + } + if (!Strings.isNullOrEmpty(recategorization.getSection())) { + propertyChanges.put("section", recategorization.getSection()); + } + return propertyChanges; + } + + private void mergeForceRedactions(ManualForceRedaction forceRedaction, List entityLogEntries, int analysisNumber) { var entity = entityLogEntries.stream() 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..467256b36 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 @@ -113,7 +113,7 @@ public class ManualRedactionUndoService { .stream() .filter(manualRedactionWrapper -> manualRedactionWrapper.getItem() instanceof ManualResizeRedaction) .map(ManualRedactionWrapperModel::getId) - .collect(Collectors.toList()); + .toList(); if (!manualResizeRedactions.isEmpty()) { deleteResizeRedaction(dossierId, fileId, manualResizeRedactions); manualResizeRedactions.forEach(annotationId -> auditPersistenceService.audit(AuditRequest.builder() @@ -148,7 +148,7 @@ public class ManualRedactionUndoService { .stream() .filter(manualRedactionWrapper -> manualRedactionWrapper.getItem() instanceof ManualLegalBasisChange) .map(ManualRedactionWrapperModel::getId) - .collect(Collectors.toList()); + .toList(); if (!manualLegalBasisChanges.isEmpty()) { deleteLegalBasisChange(dossierId, fileId, manualLegalBasisChanges); @@ -179,19 +179,19 @@ public class ManualRedactionUndoService { private void undoRecategorization(String dossierId, String fileId, Map manualRedactionWrappers, boolean includeUnprocessed) { - List manualImageRecategorizations = manualRedactionWrappers.values() + List manualRecategorizations = manualRedactionWrappers.values() .stream() .filter(manualRedactionWrapper -> manualRedactionWrapper.getItem() instanceof ManualRecategorization) .map(ManualRedactionWrapperModel::getId) - .collect(Collectors.toList()); - if (!manualImageRecategorizations.isEmpty()) { + .toList(); + if (!manualRecategorizations.isEmpty()) { - deleteRecategorization(dossierId, fileId, manualImageRecategorizations, includeUnprocessed); - manualImageRecategorizations.forEach(annotationId -> auditPersistenceService.audit(AuditRequest.builder() + deleteRecategorization(dossierId, fileId, manualRecategorizations, includeUnprocessed); + manualRecategorizations.forEach(annotationId -> auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) .objectId(fileId) .category(AuditCategory.DOCUMENT.name()) - .message("Undo of manual image recategorization was done.") + .message("Undo of manual recategorization was done.") .details(Map.of(DOSSIER_ID, dossierId, FILE_ID, @@ -230,7 +230,7 @@ public class ManualRedactionUndoService { .stream() .filter(manualRedactionWrapper -> manualRedactionWrapper.getItem() instanceof ManualForceRedaction) .map(ManualRedactionWrapperModel::getId) - .collect(Collectors.toList()); + .toList(); if (!manualForceRedactions.isEmpty()) { deleteForceRedaction(dossierId, fileId, manualForceRedactions); @@ -267,7 +267,7 @@ public class ManualRedactionUndoService { .stream() .filter(manualRedactionWrapper -> manualRedactionWrapper.getItem() instanceof IdRemoval) .map(ManualRedactionWrapperModel::getId) - .collect(Collectors.toList()); + .toList(); if (!idRemovals.isEmpty()) { deleteRemoveRedaction(dossierId, fileId, idRemovals); idRemovals.forEach(annotationId -> auditPersistenceService.audit(AuditRequest.builder() @@ -304,7 +304,7 @@ public class ManualRedactionUndoService { .stream() .filter(manualRedactionWrapper -> manualRedactionWrapper.getItem() instanceof ManualRedactionEntry) .map(ManualRedactionWrapperModel::getId) - .collect(Collectors.toList()); + .toList(); if (!manualRedactionEntries.isEmpty()) { deleteAddRedaction(dossierId, fileId, manualRedactionEntries); manualRedactionEntries.forEach(annotationId -> auditPersistenceService.audit(AuditRequest.builder() 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..f2043357e 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 @@ -167,7 +167,14 @@ public class PendingDictionaryEntryFactory { .requestedDate(manualChange.getRequestDate()) .processedDate(manualChange.getProcessedDate()) .userId(manualChange.getUser()) - .propertyChanges(Map.of("type", manualChange.getType())) + .propertyChanges(Map.of("type", + manualChange.getType(), + "legalBasis", + manualChange.getLegalBasis(), + "value", + manualChange.getValue(), + "section", + manualChange.getSection())) .build()); return EntityLogEntry.builder() diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml index 948f5ab01..211821249 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml @@ -8,4 +8,7 @@ databaseChangeLog: columns: - column: name: section - type: VARCHAR(1024) \ No newline at end of file + type: VARCHAR(1024) + - column: + name: value + type: VARCHAR(4000) \ No newline at end of file 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 9853bfef0..c0c1827e7 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 @@ -1934,7 +1934,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { EntityLogEntry.builder() .id("annotationId2") .type(type.getType()) - .value("Johannesbrotkernmehl") + .value("Johannisbrotkernmehl") .dictionaryEntry(true) .entryType(EntryType.ENTITY) .state(EntryState.APPLIED) @@ -1953,7 +1953,6 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0); fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); var recatModel = RecategorizationRequestModel.builder() @@ -1994,4 +1993,78 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { } + + @Test + public void testPropertyChangesForLegalBasisInManualRecategorization() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate); + var file = fileTesterAndProvider.testAndProvideFile(dossier); + + var type = typeProvider.testAndProvideType(dossierTemplate, null, "type", false); + + var entityLog = new EntityLog(1, + 1, + List.of(EntityLogEntry.builder() + .id("annotationId") + .type(type.getType()) + .value("lukeSkywalker") + .dictionaryEntry(true) + .entryType(EntryType.ENTITY) + .state(EntryState.APPLIED) + .legalBasis("lb1") + .section("section") + .build(), + EntityLogEntry.builder() + .id("annotationId2") + .type(type.getType()) + .value("Johannisbrotkernmehl") + .dictionaryEntry(true) + .entryType(EntryType.ENTITY) + .state(EntryState.APPLIED) + .build(), + EntityLogEntry.builder() + .id("annotationId3") + .type(type.getType()) + .value("Baustelle") + .dictionaryEntry(true) + .entryType(EntryType.ENTITY) + .state(EntryState.APPLIED) + .build()), + null, + 0, + 0, + 0, + 0); + fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + + var recatModel = RecategorizationRequestModel.builder() + .type(type.getType()) + .annotationId("annotationId") + .addToDictionary(false) + .addToAllDossiers(false) + .legalBasis("lb2") + .section("section") + .value("lukeSkywalker") + .build(); + + manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel), false); + + var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); + assertEquals(1, allManualRedactions.getRecategorizations().size()); + assertTrue(allManualRedactions.getRecategorizations() + .stream() + .anyMatch(entry -> entry.getAnnotationId().equals("annotationId"))); + assertTrue(allManualRedactions.getRecategorizations() + .stream() + .anyMatch(entry -> entry.getLegalBasis().equals("lb2"))); + assertTrue(allManualRedactions.getRecategorizations() + .stream() + .anyMatch(entry -> entry.getSection().equals("section"))); + assertTrue(allManualRedactions.getRecategorizations() + .stream() + .anyMatch(entry -> entry.getValue().equals("lukeSkywalker"))); + } + } From 3060f5f28a2995a638fd2f57f8c1234009c616a1 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 11:26:52 +0100 Subject: [PATCH 08/89] 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 ed052fa741ed5b1b80ab23dcbc44f7a0664f52ed Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Tue, 19 Mar 2024 11:42:57 +0100 Subject: [PATCH 09/89] RED-8480: adjusted propertyChanges in manual changes --- .../entity/annotations/ManualLegalBasisChangeEntity.java | 1 + .../annotations/LegalBasisChangePersistenceService.java | 1 + .../repository/annotationentity/LegalBasisChangeRepository.java | 1 + .../shared/model/analysislog/entitylog/ManualRedactionType.java | 2 +- .../api/shared/model/annotations/LegalBasisChangeRequest.java | 1 + .../model/annotations/entitymapped/ManualLegalBasisChange.java | 1 + .../api/shared/model/manual/LegalBasisChangeRequestModel.java | 1 + 7 files changed, 7 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java index fd9a9e2e5..0d2a76e61 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualLegalBasisChangeEntity.java @@ -14,6 +14,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java index ec01d5635..e88c1e1ca 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/LegalBasisChangePersistenceService.java @@ -22,6 +22,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +@Deprecated(forRemoval = true) @Slf4j @Service @RequiredArgsConstructor diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java index c3f45155f..2d8a0017b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/annotationentity/LegalBasisChangeRepository.java @@ -12,6 +12,7 @@ import org.springframework.data.repository.query.Param; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity; +@Deprecated(forRemoval = true) public interface LegalBasisChangeRepository extends JpaRepository, AnnotationEntityRepository { @Modifying diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/ManualRedactionType.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/ManualRedactionType.java index 439df697f..292b2e0e3 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/ManualRedactionType.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/entitylog/ManualRedactionType.java @@ -13,7 +13,7 @@ public enum ManualRedactionType { FORCE, RECATEGORIZE, RECATEGORIZE_IN_DICTIONARY, - LEGAL_BASIS_CHANGE, + @Deprecated LEGAL_BASIS_CHANGE, RESIZE, RESIZE_IN_DICTIONARY } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java index 881a9b943..31be31923 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/LegalBasisChangeRequest.java @@ -5,6 +5,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java index c04f12e80..c06399fef 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualLegalBasisChange.java @@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +@Deprecated(forRemoval = true) @Data @SuperBuilder @NoArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java index 5691ee273..66c230dd8 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/LegalBasisChangeRequestModel.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.NonNull; +@Deprecated(forRemoval = true) @Data @Builder @AllArgsConstructor From 0edb28f164cadb8757ff89ec6e3d5a8390dfd618 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 13:25:19 +0100 Subject: [PATCH 10/89] 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 11/89] 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 12/89] 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 13/89] 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 14/89] 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 15/89] 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 16/89] 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 17/89] 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 18/89] 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 19/89] 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 20/89] 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 21/89] 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 22/89] 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 23/89] 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 24/89] 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 25/89] 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 26/89] 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 27/89] 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 a5e3c0c98abe5546967dfddcb563b70dd86a3c71 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Wed, 20 Mar 2024 12:54:23 +0100 Subject: [PATCH 28/89] RED-8820: removed property "value" from recategorize --- .../ManualRecategorizationEntity.java | 2 -- .../service/EntityLogMergeService.java | 3 --- .../PendingDictionaryEntryFactory.java | 2 -- ...legal-basis-variables-to-recategorize.yaml | 5 +--- .../tests/ManualRedactionTest.java | 25 +++++++++++-------- .../entitymapped/ManualRecategorization.java | 1 - .../manual/RecategorizationRequestModel.java | 1 - 7 files changed, 16 insertions(+), 23 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java index 210addf02..92595e1ca 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/annotations/ManualRecategorizationEntity.java @@ -51,8 +51,6 @@ public class ManualRecategorizationEntity implements IBaseAnnotation { private String legalBasis; @Column(length = 1024) private String section; - @Column - private String value; @ManyToOne private FileEntity fileStatus; 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 b8c27fa85..3b83bb5d7 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 @@ -356,9 +356,6 @@ public class EntityLogMergeService { if (!Strings.isNullOrEmpty(recategorization.getLegalBasis())) { propertyChanges.put("legalBasis", recategorization.getLegalBasis()); } - if (!Strings.isNullOrEmpty(recategorization.getValue())) { - propertyChanges.put("value", recategorization.getValue()); - } if (!Strings.isNullOrEmpty(recategorization.getSection())) { propertyChanges.put("section", recategorization.getSection()); } 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 f2043357e..bd376e63d 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 @@ -171,8 +171,6 @@ public class PendingDictionaryEntryFactory { manualChange.getType(), "legalBasis", manualChange.getLegalBasis(), - "value", - manualChange.getValue(), "section", manualChange.getSection())) .build()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml index 211821249..948f5ab01 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/122-add-legal-basis-variables-to-recategorize.yaml @@ -8,7 +8,4 @@ databaseChangeLog: columns: - column: name: section - type: VARCHAR(1024) - - column: - name: value - type: VARCHAR(4000) \ No newline at end of file + type: VARCHAR(1024) \ No newline at end of file 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 c0c1827e7..94e2ad830 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 @@ -1199,7 +1199,6 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .legalBasis("") .section("section") - .value("some value") .build()), false); @@ -1285,7 +1284,6 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(false) .legalBasis("") .section("section") - .value("some value") .build()), false); @@ -1656,7 +1654,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv").legalBasis("").section("section").value("").build()), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), + file.getId(), + Set.of(RecategorizationRequestModel.builder().annotationId("dv").legalBasis("").section("section").build()), + false); var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(allManualRedactions.getRecategorizations().size(), 1); @@ -1680,7 +1681,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .dossierId(dossier.getId()) .build()); - manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(RecategorizationRequestModel.builder().annotationId("dv2").legalBasis("").section("section").value("value").build()), false); + manualRedactionClient.recategorizeBulk(dossier.getId(), + file.getId(), + Set.of(RecategorizationRequestModel.builder().annotationId("dv2").legalBasis("").section("section").build()), + false); allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true); assertEquals(allManualRedactions.getRecategorizations().size(), 2); @@ -1962,7 +1966,6 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .legalBasis("") .section("section") - .value("value") .build(); var recatModelLongLegalBasis = RecategorizationRequestModel.builder() .type(type.getType()) @@ -1971,7 +1974,13 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(true) .legalBasis(RandomStringUtils.randomAlphanumeric(4001)) .build(); - var recatModelNoLegalBasis = RecategorizationRequestModel.builder().type(type.getType()).annotationId("annotationId3").addToDictionary(true).section("section").value("some value").addToAllDossiers(true).build(); + var recatModelNoLegalBasis = RecategorizationRequestModel.builder() + .type(type.getType()) + .annotationId("annotationId3") + .addToDictionary(true) + .section("section") + .addToAllDossiers(true) + .build(); manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel, recatModelNoLegalBasis), false); @@ -2046,7 +2055,6 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .addToAllDossiers(false) .legalBasis("lb2") .section("section") - .value("lukeSkywalker") .build(); manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), Set.of(recatModel), false); @@ -2062,9 +2070,6 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertTrue(allManualRedactions.getRecategorizations() .stream() .anyMatch(entry -> entry.getSection().equals("section"))); - assertTrue(allManualRedactions.getRecategorizations() - .stream() - .anyMatch(entry -> entry.getValue().equals("lukeSkywalker"))); } } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualRecategorization.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualRecategorization.java index 91bcbd8e3..a6155f94e 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualRecategorization.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/entitymapped/ManualRecategorization.java @@ -18,7 +18,6 @@ public class ManualRecategorization extends BaseAnnotation { private boolean addToDictionary; private boolean addToAllDossiers; private String section; - private String value; @Override diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationRequestModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationRequestModel.java index ef3270c35..367264dd4 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationRequestModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/manual/RecategorizationRequestModel.java @@ -21,6 +21,5 @@ public class RecategorizationRequestModel { boolean addToAllDossiers; String legalBasis; String section; - String value; } From bfe3f880f4abf0b7aac66b4732dc01f8bc20dc9e Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 13:11:34 +0100 Subject: [PATCH 29/89] 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 30/89] 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 31/89] 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 ba8cf687798e6c20230ffcf1fbce09b2c7f44f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kilian=20Sch=C3=BCttler?= Date: Thu, 21 Mar 2024 08:44:15 +0100 Subject: [PATCH 32/89] reorder-log: re-order the pending entries, such that they appear directly... --- .../service/EntityLogMergeService.java | 344 +++++++++--------- .../processor/service/EntityLogService.java | 4 +- .../integration/tests/EntityLogMergeTest.java | 48 +++ 3 files changed, 227 insertions(+), 169 deletions(-) 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 3b83bb5d7..a148946f7 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 @@ -8,11 +8,14 @@ import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; @@ -70,82 +73,113 @@ public class EntityLogMergeService { @Observed(name = "EntityLogMergeService", contextualName = "merge-entity-log") - public EntityLog mergeEntityLog(ManualRedactions manualRedactions, EntityLog entityLog, DossierEntity dossier) { + public EntityLog mergeEntityLog(ManualRedactions unprocessedManualRedactions, EntityLog entityLog, DossierEntity dossier) { log.debug("Merging EntityLog"); - List allManualChanges = manualRedactions.buildAll(); - - List manualChangesIds = allManualChanges.stream() - .map(BaseAnnotation::getAnnotationId) - .toList(); - - List matchingEntities = entityLog.getEntityLogEntry() - .stream() - .filter(entityLogEntry -> manualChangesIds.contains(entityLogEntry.getId())) - .collect(Collectors.toList()); + long start = System.currentTimeMillis(); final int analysisNumber = entityLog.getAnalysisNumber(); - // Sort manual changes by date, so we process them in order of when they were requested - List allLocalManualChanges = allManualChanges.stream() - .filter(BaseAnnotation::isLocal) - .sorted(Comparator.comparing(BaseAnnotation::getRequestDate)) - .toList(); + Map> allManualChanges = unprocessedManualRedactions.buildAll() + .stream() + .collect(Collectors.groupingBy(BaseAnnotation::getAnnotationId)); + + List entityLogEntries = new LinkedList<>(entityLog.getEntityLogEntry()); + + buildUnprocessedLocalManualRedactions(unprocessedManualRedactions, entityLog, dossier).forEach(entityLogEntries::add); + + buildPendingDictionaryChanges(unprocessedManualRedactions).forEach(entityLogEntries::add); + + int numberOfAddedPendingEntries = 0; // since list is dynamically growing we need to keep track of the number of added pending entries to ignore them in the loop + for (int i = 0; i + numberOfAddedPendingEntries < entityLogEntries.size(); i++) { + + EntityLogEntry entityLogEntry = entityLogEntries.get(i + numberOfAddedPendingEntries); + + if (allManualChanges.containsKey(entityLogEntry.getId())) { + + mergeLocalManualChanges(dossier, allManualChanges, entityLogEntry, analysisNumber); + + List pendingDictionaryEntries = buildPendingDictionaryEntries(allManualChanges, entityLogEntry); + // insert pending entries directly after the associated entry to enable performant linking in UI + for (EntityLogEntry pendingDictionaryEntry : pendingDictionaryEntries) { + numberOfAddedPendingEntries++; + entityLogEntries.add(i + numberOfAddedPendingEntries, pendingDictionaryEntry); + } - allLocalManualChanges.forEach(manualChange -> { - // this is ugly and should be replaced with switch pattern matching https://openjdk.org/jeps/406 -> requires Java 17 (preview) or higher - if (manualChange instanceof ManualRedactionEntry manualRedactionEntry) { - var entityLogEntry = mergeManualRedactionEntries(manualRedactionEntry, entityLog, dossier); - entityLogEntry.ifPresent(matchingEntities::add); - } else if (manualChange instanceof IdRemoval idRemoval) { - mergeIdsToRemove(idRemoval, matchingEntities, analysisNumber); - } else if (manualChange instanceof ManualResizeRedaction manualResizeRedaction) { - mergeResizeRedactions(manualResizeRedaction, matchingEntities, analysisNumber); - } else if (manualChange instanceof ManualLegalBasisChange manualLegalBasisChange) { - mergeLegalBasisChanges(manualLegalBasisChange, matchingEntities, analysisNumber); - } else if (manualChange instanceof ManualRecategorization manualRecategorization) { - mergeRecategorizations(manualRecategorization, matchingEntities, dossier, analysisNumber); - } else if (manualChange instanceof ManualForceRedaction manualForceRedaction) { - mergeForceRedactions(manualForceRedaction, matchingEntities, analysisNumber); } - }); - // Sort manual changes by date, so we process them in order of when they were requested - List allDictionaryManualChanges = allManualChanges.stream() - .filter(baseAnnotation -> !baseAnnotation.isLocal()) - .sorted(Comparator.comparing(BaseAnnotation::getRequestDate)) - .toList(); + } - List pendingEntries = allDictionaryManualChanges.stream() - .map(manualChange -> { - if (manualChange instanceof ManualRedactionEntry manualRedactionEntry) { - return pendingDictionaryEntryFactory.buildAddToDictionaryEntry(manualRedactionEntry); - } else if (manualChange instanceof IdRemoval idRemoval) { - return pendingDictionaryEntryFactory.buildRemoveFromDictionary(idRemoval, findMatchingEntry(idRemoval.getAnnotationId(), matchingEntities)); - } else if (manualChange instanceof ManualResizeRedaction manualResizeRedaction) { - return pendingDictionaryEntryFactory.buildResizeWithDictionary(manualResizeRedaction, findMatchingEntry(manualChange.getAnnotationId(), matchingEntities)); - } else if (manualChange instanceof ManualRecategorization manualRecategorization) { - return pendingDictionaryEntryFactory.buildRecategorizeWithDictionary(manualRecategorization, - findMatchingEntry(manualChange.getAnnotationId(), matchingEntities)); - } else { - throw new IllegalArgumentException(String.format("Manual change of type %s has no defined dictionary action!", manualChange.getClass())); - } - }) - .toList(); + entityLog.setEntityLogEntry(entityLogEntries); - entityLog.getEntityLogEntry().addAll(pendingEntries); - - log.debug("EntityLog merged successfully."); + log.debug("EntityLog merged successfully in {} ms.", System.currentTimeMillis() - start); return entityLog; } - private EntityLogEntry findMatchingEntry(String annotationId, List matchingEntities) { + private Stream buildPendingDictionaryChanges(ManualRedactions unprocessedManualRedactions) { - return matchingEntities.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(annotationId)) - .findAny() - .orElseThrow(() -> new NotFoundException("No matching EntityLogEntry found for id " + annotationId)); + return unprocessedManualRedactions.getEntriesToAdd() + .stream() + .filter(manualAdd -> !manualAdd.isLocal()) + .map(pendingDictionaryEntryFactory::buildAddToDictionaryEntry); + } + + + private Stream buildUnprocessedLocalManualRedactions(ManualRedactions unprocessedManualRedactions, EntityLog entityLog, DossierEntity dossier) { + + return unprocessedManualRedactions.getEntriesToAdd() + .stream() + .filter(ManualRedactionEntry::isLocal) + .map(manualRedactionEntry -> mergeManualRedactionEntries(manualRedactionEntry, entityLog, dossier)) + .filter(Optional::isPresent) + .map(Optional::get); + } + + + private List buildPendingDictionaryEntries(Map> allManualChanges, EntityLogEntry entityLogEntry) { + + return allManualChanges.getOrDefault(entityLogEntry.getId(), Collections.emptyList()) + .stream() + .filter(baseAnnotation -> !baseAnnotation.isLocal()) + .sorted(Comparator.comparing(BaseAnnotation::getRequestDate)) + .map(dictionaryChange -> { + if (dictionaryChange instanceof ManualRedactionEntry) { + return null; // pending dictionaries are inserted before the manual changes loop + } else if (dictionaryChange instanceof IdRemoval idRemoval) { + return pendingDictionaryEntryFactory.buildRemoveFromDictionary(idRemoval, entityLogEntry); + } else if (dictionaryChange instanceof ManualResizeRedaction manualResizeRedaction) { + return pendingDictionaryEntryFactory.buildResizeWithDictionary(manualResizeRedaction, entityLogEntry); + } else if (dictionaryChange instanceof ManualRecategorization manualRecategorization) { + return pendingDictionaryEntryFactory.buildRecategorizeWithDictionary(manualRecategorization, entityLogEntry); + } else { + throw new IllegalArgumentException(String.format("Manual change of type %s has no defined dictionary action!", dictionaryChange.getClass())); + } + }) + .filter(Objects::nonNull) + .toList(); + } + + + private void mergeLocalManualChanges(DossierEntity dossier, Map> allManualChanges, EntityLogEntry entityLogEntry, int analysisNumber) { + + allManualChanges.getOrDefault(entityLogEntry.getId(), Collections.emptyList()) + .stream() + .filter(BaseAnnotation::isLocal) + .sorted(Comparator.comparing(BaseAnnotation::getRequestDate)) + .forEach(localChange -> { + if (localChange instanceof IdRemoval idRemoval) { + mergeIdsToRemove(idRemoval, entityLogEntry, analysisNumber); + } else if (localChange instanceof ManualResizeRedaction manualResizeRedaction) { + mergeResizeRedactions(manualResizeRedaction, entityLogEntry, analysisNumber); + } else if (localChange instanceof ManualLegalBasisChange manualLegalBasisChange) { + mergeLegalBasisChanges(manualLegalBasisChange, entityLogEntry, analysisNumber); + } else if (localChange instanceof ManualRecategorization manualRecategorization) { + mergeRecategorizations(manualRecategorization, entityLogEntry, dossier, analysisNumber); + } else if (localChange instanceof ManualForceRedaction manualForceRedaction) { + mergeForceRedactions(manualForceRedaction, entityLogEntry, analysisNumber); + } + }); } @@ -234,79 +268,63 @@ public class EntityLogMergeService { } - private void mergeIdsToRemove(IdRemoval idRemoval, List entityLogEntries, int analysisNumber) { + private void mergeIdsToRemove(IdRemoval idRemoval, EntityLogEntry entityLogEntry, int analysisNumber) { - var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(idRemoval.getAnnotationId())) - .findAny(); - entity.ifPresent(entityLogEntry -> { - entityLogEntry.setState(EntryState.IGNORED); - entityLogEntry.getEngines().add(Engine.MANUAL); - addChanges(entityLogEntry.getChanges(), ChangeType.REMOVED, analysisNumber, idRemoval.getRequestDate()); - entityLogEntry.getManualChanges() - .add(ManualChange.builder() - .manualRedactionType(ManualRedactionType.REMOVE) - .requestedDate(idRemoval.getRequestDate()) - .processedDate(null) - .userId(idRemoval.getUser()) - .propertyChanges(Collections.emptyMap()) - .build()); - }); - } - - - private void mergeResizeRedactions(ManualResizeRedaction manualResizeRedaction, List entityLogEntries, int analysisNumber) { - - var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(manualResizeRedaction.getAnnotationId())) - .findAny(); - entity.ifPresent(entityLogEntry -> { - entityLogEntry.setTextAfter(manualResizeRedaction.getTextAfter()); - entityLogEntry.setTextBefore(manualResizeRedaction.getTextBefore()); - entityLogEntry.setPositions(convertPositions(manualResizeRedaction.getPositions())); - entityLogEntry.setValue(manualResizeRedaction.getValue()); - entityLogEntry.getEngines().add(Engine.MANUAL); - addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, manualResizeRedaction.getRequestDate()); - ManualChange.ManualChangeBuilder manualChange = ManualChange.builder() - .manualRedactionType(ManualRedactionType.RESIZE) - .requestedDate(manualResizeRedaction.getRequestDate()) - .processedDate(null) - .userId(manualResizeRedaction.getUser()); - if (!Strings.isNullOrEmpty(manualResizeRedaction.getValue())) { - manualChange.propertyChanges(Map.of("value", manualResizeRedaction.getValue())); - } - entityLogEntry.getManualChanges().add(manualChange.build()); - }); - } - - - @Deprecated(forRemoval = true) - private void mergeLegalBasisChanges(ManualLegalBasisChange manualLegalBasisChange, List entityLogEntries, int analysisNumber) { - - var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(manualLegalBasisChange.getAnnotationId())) - .findAny(); - entity.ifPresent(entityLogEntry -> { - entityLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis()); - entityLogEntry.setSection(manualLegalBasisChange.getSection()); - entityLogEntry.setValue(manualLegalBasisChange.getValue()); - entityLogEntry.getEngines().add(Engine.MANUAL); - addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, manualLegalBasisChange.getRequestDate()); - Map propertyChanges = getPropertyChanges(manualLegalBasisChange); - entityLogEntry.getManualChanges() - .add(ManualChange.builder() - .manualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE) - .requestedDate(manualLegalBasisChange.getRequestDate()) - .processedDate(null) - .propertyChanges(propertyChanges) - .userId(manualLegalBasisChange.getUser()) - .build()); - }); + entityLogEntry.setState(EntryState.IGNORED); + entityLogEntry.getEngines().add(Engine.MANUAL); + addChanges(entityLogEntry.getChanges(), ChangeType.REMOVED, analysisNumber, idRemoval.getRequestDate()); + entityLogEntry.getManualChanges() + .add(ManualChange.builder() + .manualRedactionType(ManualRedactionType.REMOVE) + .requestedDate(idRemoval.getRequestDate()) + .processedDate(null) + .userId(idRemoval.getUser()) + .propertyChanges(Collections.emptyMap()) + .build()); + + } + + + private void mergeResizeRedactions(ManualResizeRedaction manualResizeRedaction, EntityLogEntry entityLogEntry, int analysisNumber) { + + entityLogEntry.setTextAfter(manualResizeRedaction.getTextAfter()); + entityLogEntry.setTextBefore(manualResizeRedaction.getTextBefore()); + entityLogEntry.setPositions(convertPositions(manualResizeRedaction.getPositions())); + entityLogEntry.setValue(manualResizeRedaction.getValue()); + entityLogEntry.getEngines().add(Engine.MANUAL); + addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, manualResizeRedaction.getRequestDate()); + ManualChange.ManualChangeBuilder manualChange = ManualChange.builder() + .manualRedactionType(ManualRedactionType.RESIZE) + .requestedDate(manualResizeRedaction.getRequestDate()) + .processedDate(null) + .userId(manualResizeRedaction.getUser()); + if (!Strings.isNullOrEmpty(manualResizeRedaction.getValue())) { + manualChange.propertyChanges(Map.of("value", manualResizeRedaction.getValue())); + } + entityLogEntry.getManualChanges().add(manualChange.build()); + } + + + private void mergeLegalBasisChanges(ManualLegalBasisChange manualLegalBasisChange, EntityLogEntry entityLogEntry, int analysisNumber) { + + entityLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis()); + entityLogEntry.setSection(manualLegalBasisChange.getSection()); + entityLogEntry.setValue(manualLegalBasisChange.getValue()); + entityLogEntry.getEngines().add(Engine.MANUAL); + addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, manualLegalBasisChange.getRequestDate()); + Map propertyChanges = getPropertyChanges(manualLegalBasisChange); + entityLogEntry.getManualChanges() + .add(ManualChange.builder() + .manualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE) + .requestedDate(manualLegalBasisChange.getRequestDate()) + .processedDate(null) + .propertyChanges(propertyChanges) + .userId(manualLegalBasisChange.getUser()) + .build()); } - @Deprecated(forRemoval = true) private Map getPropertyChanges(ManualLegalBasisChange manualLegalBasisChange) { Map propertyChanges = new HashMap<>(); @@ -323,27 +341,23 @@ public class EntityLogMergeService { } - private void mergeRecategorizations(ManualRecategorization recategorization, List entityLogEntries, DossierEntity dossier, int analysisNumber) { + private void mergeRecategorizations(ManualRecategorization recategorization, EntityLogEntry entityLogEntry, DossierEntity dossier, int analysisNumber) { boolean isHint = isHint(recategorization.getType(), dossier); - var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(recategorization.getAnnotationId())) - .findAny(); - entity.ifPresent(entityLogEntry -> { - entityLogEntry.setType(recategorization.getType()); - entityLogEntry.setEntryType(getEntryType(isHint, recategorization.getType())); - entityLogEntry.setState(isHint ? EntryState.SKIPPED : EntryState.APPLIED); - entityLogEntry.getEngines().add(Engine.MANUAL); - addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, recategorization.getRequestDate()); - entityLogEntry.getManualChanges() - .add(ManualChange.builder() - .manualRedactionType(ManualRedactionType.RECATEGORIZE) - .requestedDate(recategorization.getRequestDate()) - .processedDate(recategorization.getProcessedDate()) - .userId(recategorization.getUser()) - .propertyChanges(getPropertyChanges(recategorization)) - .build()); - }); + + entityLogEntry.setType(recategorization.getType()); + entityLogEntry.setEntryType(getEntryType(isHint, recategorization.getType())); + entityLogEntry.setState(isHint ? EntryState.SKIPPED : EntryState.APPLIED); + entityLogEntry.getEngines().add(Engine.MANUAL); + addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, recategorization.getRequestDate()); + entityLogEntry.getManualChanges() + .add(ManualChange.builder() + .manualRedactionType(ManualRedactionType.RECATEGORIZE) + .requestedDate(recategorization.getRequestDate()) + .processedDate(recategorization.getProcessedDate()) + .userId(recategorization.getUser()) + .propertyChanges(getPropertyChanges(recategorization)) + .build()); } @@ -363,26 +377,22 @@ public class EntityLogMergeService { } - private void mergeForceRedactions(ManualForceRedaction forceRedaction, List entityLogEntries, int analysisNumber) { + private void mergeForceRedactions(ManualForceRedaction forceRedaction, EntityLogEntry entityLogEntry, int analysisNumber) { + + entityLogEntry.setLegalBasis(forceRedaction.getLegalBasis()); + entityLogEntry.setState(entityLogEntry.getEntryType().equals(EntryType.HINT) ? EntryState.SKIPPED : EntryState.APPLIED); + entityLogEntry.getEngines().add(Engine.MANUAL); + addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, forceRedaction.getRequestDate()); + var forceRedactManualChange = ManualChange.builder() + .manualRedactionType(ManualRedactionType.FORCE) + .requestedDate(forceRedaction.getRequestDate()) + .processedDate(forceRedaction.getProcessedDate()) + .userId(forceRedaction.getUser()); + if (forceRedaction.getLegalBasis() != null && !forceRedaction.getLegalBasis().isEmpty()) { + forceRedactManualChange.propertyChanges(Map.of("legalBasis", forceRedaction.getLegalBasis())); + } + entityLogEntry.getManualChanges().add(forceRedactManualChange.build()); - var entity = entityLogEntries.stream() - .filter(entityLogEntry -> entityLogEntry.getId().equals(forceRedaction.getAnnotationId())) - .findAny(); - entity.ifPresent(entityLogEntry -> { - entityLogEntry.setLegalBasis(forceRedaction.getLegalBasis()); - entityLogEntry.setState(entityLogEntry.getEntryType().equals(EntryType.HINT) ? EntryState.SKIPPED : EntryState.APPLIED); - entityLogEntry.getEngines().add(Engine.MANUAL); - addChanges(entityLogEntry.getChanges(), ChangeType.CHANGED, analysisNumber, forceRedaction.getRequestDate()); - var forceRedactManualChange = ManualChange.builder() - .manualRedactionType(ManualRedactionType.FORCE) - .requestedDate(forceRedaction.getRequestDate()) - .processedDate(forceRedaction.getProcessedDate()) - .userId(forceRedaction.getUser()); - if (forceRedaction.getLegalBasis() != null && !forceRedaction.getLegalBasis().isEmpty()) { - forceRedactManualChange.propertyChanges(Map.of("legalBasis", forceRedaction.getLegalBasis())); - } - entityLogEntry.getManualChanges().add(forceRedactManualChange.build()); - }); } 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..2273df9bd 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 @@ -64,8 +64,8 @@ public class EntityLogService { if (includeUnprocessed) { DossierEntity dossier = dossierService.getDossierById(dossierId); - ManualRedactions manualRedactions = manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.unprocessedOnly()); - entityLogMergeService.mergeEntityLog(manualRedactions, entityLog, dossier); + ManualRedactions unprocessedManualRedactions = manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.unprocessedOnly()); + entityLog = entityLogMergeService.mergeEntityLog(unprocessedManualRedactions, entityLog, dossier); } if (fileStatus.getExcludedPages() != null && !fileStatus.getExcludedPages().isEmpty()) { 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..c89565ec5 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 @@ -236,6 +236,54 @@ public class EntityLogMergeTest { } + @Test + public void testUnprocessedDictChangesAreDirectlyAfterOriginEntry() { + + String fileId = "fileId"; + String dossierId = "dossierId"; + String dossierTemplateId = "dossierTemplateId"; + + String entryToAddId = UUID.randomUUID().toString(); + String rectangleToAddId = UUID.randomUUID().toString(); + String entryToRemoveId = UUID.randomUUID().toString(); + String entryToResizeId = UUID.randomUUID().toString(); + String entryLegalBasisId = UUID.randomUUID().toString(); + String forceRedactionId = UUID.randomUUID().toString(); + + + ManualRedactions manualRedactions = new ManualRedactions(); + List positions = new ArrayList<>(); + positions.add(new Rectangle(2, 2, 2, 2, 1)); + manualRedactions.setResizeRedactions(Set.of(ManualResizeRedaction.builder() + .fileId("fileId") + .value("Random") + .annotationId(entryToResizeId) + .positions(positions) + .requestDate(OffsetDateTime.now()) + .updateDictionary(true) + .user("User") + .fileId("file") + .build())); + + 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()); + when(fileManagementStorageService.getEntityLog(dossierId, fileId)).thenReturn(entityLog); + when(dossierService.getDossierById(dossierId)).thenReturn(DossierEntity.builder().dossierTemplateId(dossierTemplateId).build()); + when(dictionaryPersistenceService.getType(anyString())).thenReturn(TypeEntity.builder().isHint(false).build()); + when(fileStatusPersistenceService.getStatus(fileId)).thenReturn(FileEntity.builder().id(fileId).fileAttributes(Collections.emptyList()).build()); + when(fileStatusService.convertAttributes(any(), anyString())).thenReturn(Collections.emptyList()); + + EntityLog response = entityLogMergeService.mergeEntityLog(manualRedactions, entityLog, DossierEntity.builder().dossierTemplateId(dossierTemplateId).build()); + + var resizedEntry = response.getEntityLogEntry().stream().filter(entityLogEntry1 -> entityLogEntry1.getId().equals(entryToResizeId)).findFirst().get(); + int index = response.getEntityLogEntry().indexOf(resizedEntry); + assertEquals(response.getEntityLogEntry().get(index + 1).getId(), resizedEntry.getId()); + assertEquals(response.getEntityLogEntry().get(index + 1).getState(), EntryState.PENDING); + } + + private EntityLog provideEntityLog(String entryToRemoveId, String entryToResizeId, String entryLegalBasisId, String forceRedactionId) { List positions = new ArrayList<>(); From 9805b900fc71a49abba141923d3d237972c1f81f Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 21 Mar 2024 09:49:46 +0100 Subject: [PATCH 33/89] 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 34/89] 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 35/89] 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 8c4b177ef203112ef550b2b8c4b71d87687beec6 Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Thu, 21 Mar 2024 16:26:48 +0100 Subject: [PATCH 36/89] RED-8610: Dictionary remove on dossier level should be displayed as skipped * add DOSSIER_DICTIONARY engine --- .../v1/api/shared/model/analysislog/entitylog/Engine.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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/Engine.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/Engine.java index e4292dd3c..cfa89684a 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/Engine.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/Engine.java @@ -5,5 +5,6 @@ public enum Engine { NER, RULE, MANUAL, - IMPORTED + IMPORTED, + DOSSIER_DICTIONARY } From b2b6aa1ffd823440a304c662bb2d385c674fd6d2 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Fri, 22 Mar 2024 17:00:24 +0100 Subject: [PATCH 37/89] 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 38/89] 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 39/89] 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 40/89] 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; From 5a690af28bd3716241485f3a7560876a4c14351a Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 13 Mar 2024 15:26:35 +0100 Subject: [PATCH 41/89] 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 | 38 +-- .../AbstractPersistenceServerServiceTest.java | 189 ++++++++++---- .../utils/MongoDBTestContainer.java | 35 +++ .../src/test/resources/application.yml | 10 +- .../build.gradle.kts | 2 + 21 files changed, 713 insertions(+), 83 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 94e2ad830..6ecb7df18 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); @@ -1271,7 +1271,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); @@ -1451,7 +1451,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); @@ -1650,7 +1650,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); @@ -1762,7 +1762,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); @@ -1872,7 +1872,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); @@ -1956,7 +1956,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); 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 d67ba5b45586f41374778b6de66141cc922458ac Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 13 Mar 2024 15:26:35 +0100 Subject: [PATCH 42/89] RED-8702 --- .../processor/service/EntityLogService.java | 2 +- .../ManualRedactionMapper.java | 3 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 2 +- .../PendingDictionaryEntryFactory.java | 8 +- .../service/FileTesterAndProvider.java | 6 +- .../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 +- 13 files changed, 196 insertions(+), 67 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/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 2273df9bd..0b072f6a8 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 664b9fc3c..5e97f775f 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; @@ -189,7 +188,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 c6fd8a3e9..f093bb021 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 @@ -351,7 +351,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 467256b36..1d888d790 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 bd376e63d..f3460335e 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()) @@ -176,7 +176,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/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 7ebcf07e7..a98221160 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 6ecb7df18..b880edbb0 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) @@ -1256,10 +1296,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) @@ -1428,10 +1471,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) @@ -1439,7 +1485,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) @@ -1627,10 +1674,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) @@ -1638,7 +1688,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) @@ -1739,10 +1790,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) @@ -1750,7 +1804,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) @@ -1849,10 +1904,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) @@ -1860,7 +1918,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) @@ -1925,10 +1984,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) @@ -1936,7 +1998,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("Johannisbrotkernmehl") .dictionaryEntry(true) @@ -1944,7 +2007,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 78f5ad46c8f75e73ecd6615ef9094fadb507e2bd Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 14 Mar 2024 09:17:12 +0100 Subject: [PATCH 43/89] RED-8702 --- .../processor/service/EntityLogService.java | 2 +- .../ManualRedactionMapper.java | 3 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 2 +- .../PendingDictionaryEntryFactory.java | 8 +- .../service/FileTesterAndProvider.java | 6 +- .../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 +- 12 files changed, 67 insertions(+), 195 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/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 0b072f6a8..2273df9bd 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 5e97f775f..664b9fc3c 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; @@ -188,7 +189,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 f093bb021..c6fd8a3e9 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 @@ -351,7 +351,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 1d888d790..467256b36 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 f3460335e..bd376e63d 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()) @@ -176,7 +176,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/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 a98221160..7ebcf07e7 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 b880edbb0..6ecb7df18 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) @@ -1296,13 +1256,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) @@ -1471,13 +1428,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) @@ -1485,8 +1439,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) @@ -1674,13 +1627,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) @@ -1688,8 +1638,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) @@ -1790,13 +1739,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) @@ -1804,8 +1750,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) @@ -1904,13 +1849,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) @@ -1918,8 +1860,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) @@ -1984,13 +1925,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) @@ -1998,8 +1936,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("Johannisbrotkernmehl") .dictionaryEntry(true) @@ -2007,8 +1944,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 c4591654de77e36633e7ac993f9f7948674a5391 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 18 Mar 2024 15:05:41 +0100 Subject: [PATCH 44/89] 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 351207e5f1cd3c1df62d0b68b4e92c373ad60f74 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 11:26:52 +0100 Subject: [PATCH 45/89] 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 c629464a617284c6a6707eac6e2026215342e8d1 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 13:25:19 +0100 Subject: [PATCH 46/89] 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 6f02bc0445fd52e8ade2f7a69b7bd930c5003d3c Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 14:52:34 +0100 Subject: [PATCH 47/89] 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 cc10a9672110bc53c1053a30f839dcf59e6bca8d Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 13 Mar 2024 15:26:35 +0100 Subject: [PATCH 48/89] RED-8702 --- .../processor/service/EntityLogService.java | 2 +- .../ManualRedactionMapper.java | 3 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 2 +- .../PendingDictionaryEntryFactory.java | 8 +- .../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 +- 12 files changed, 192 insertions(+), 65 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/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 2273df9bd..0b072f6a8 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 664b9fc3c..5e97f775f 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; @@ -189,7 +188,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 c6fd8a3e9..f093bb021 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 @@ -351,7 +351,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 467256b36..1d888d790 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 bd376e63d..f3460335e 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()) @@ -176,7 +176,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/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 7ebcf07e7..a98221160 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 6ecb7df18..b880edbb0 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) @@ -1256,10 +1296,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) @@ -1428,10 +1471,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) @@ -1439,7 +1485,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) @@ -1627,10 +1674,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) @@ -1638,7 +1688,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) @@ -1739,10 +1790,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) @@ -1750,7 +1804,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) @@ -1849,10 +1904,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) @@ -1860,7 +1918,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) @@ -1925,10 +1984,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) @@ -1936,7 +1998,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("Johannisbrotkernmehl") .dictionaryEntry(true) @@ -1944,7 +2007,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 a1b6e0c2519efb13016eae90b3e13ea928daed30 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 14 Mar 2024 09:17:12 +0100 Subject: [PATCH 49/89] RED-8702 --- .../processor/service/EntityLogService.java | 2 +- .../ManualRedactionMapper.java | 3 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 2 +- .../PendingDictionaryEntryFactory.java | 8 +- .../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 +- 11 files changed, 65 insertions(+), 191 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/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 0b072f6a8..2273df9bd 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 5e97f775f..664b9fc3c 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; @@ -188,7 +189,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 f093bb021..c6fd8a3e9 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 @@ -351,7 +351,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 1d888d790..467256b36 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 f3460335e..bd376e63d 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()) @@ -176,7 +176,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/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 a98221160..7ebcf07e7 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 b880edbb0..6ecb7df18 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) @@ -1296,13 +1256,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) @@ -1471,13 +1428,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) @@ -1485,8 +1439,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) @@ -1674,13 +1627,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) @@ -1688,8 +1638,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) @@ -1790,13 +1739,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) @@ -1804,8 +1750,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) @@ -1904,13 +1849,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) @@ -1918,8 +1860,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) @@ -1984,13 +1925,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) @@ -1998,8 +1936,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("Johannisbrotkernmehl") .dictionaryEntry(true) @@ -2007,8 +1944,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 560bc883c910916863120e4872f675bf18617861 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 18 Mar 2024 15:05:41 +0100 Subject: [PATCH 50/89] 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 --- .../processor/document/EntityLogDocument.java | 9 +- .../document/EntityLogEntryDocument.java | 30 ++- .../persistence/EntityLogMongoService.java | 238 ++++++++++++++++++ .../EntityLogDocumentRepository.java | 15 ++ .../EntityLogEntryDocumentRepository.java | 23 ++ .../build.gradle.kts | 1 - 6 files changed, 308 insertions(+), 8 deletions(-) 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/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..2e3d06b46 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,7 +9,6 @@ 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; @@ -51,13 +50,19 @@ 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 aa20ebd04..87963463a 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,7 +8,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 +15,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,12 +81,34 @@ 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(); } } 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 1b1c10ecff63edf9a8b9dc74bbfed31ee5d5d5aa Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 11:26:52 +0100 Subject: [PATCH 51/89] RED-8702: Explore document databases to store entityLog --- .../service/mongo/EntityLogMongoService.java | 4 +- .../persistence/EntityLogMongoService.java | 238 ------------------ .../EntityLogDocumentRepository.java | 2 + .../peristence/v1/server/Application.java | 6 +- .../AbstractPersistenceServerServiceTest.java | 181 +++++-------- .../utils/MongoDBTestContainer.java | 6 +- 6 files changed, 68 insertions(+), 369 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/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..b820787aa 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.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.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; 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 }") 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 a90522e03..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; @@ -45,6 +46,7 @@ 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; @@ -64,10 +66,10 @@ import lombok.extern.slf4j.Slf4j; @EnableScheduling @EnableCaching @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}) -@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/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..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 @@ -1,53 +1,5 @@ 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; @@ -63,35 +15,8 @@ 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.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.*; +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; @@ -104,23 +29,61 @@ 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; -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 com.knecon.fforesight.tenantcommons.model.*; 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.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) @@ -144,12 +107,12 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired protected StorageService storageService; @Autowired - protected EntityLogMongoService entityLogMongoService; - @Autowired protected EntityLogDocumentRepository entityLogDocumentRepository; @Autowired protected EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; @Autowired + protected EntityLogMongoService entityLogMongoService; + @Autowired protected FileManagementStorageService fileManagementStorageService; @Autowired protected DossierTemplateRepository dossierTemplateRepository; @@ -361,7 +324,7 @@ public abstract class AbstractPersistenceServerServiceTest { .host(mongoDbContainer.getHost()) .port(String.valueOf(mongoDbContainer.getFirstMappedPort())) .username(MongoDBTestContainer.MONGO_USERNAME) - .password(encryptionDecryptionService.encrypt(MongoDBTestContainer.MONGO_PASSWORD)) + .password(MongoDBTestContainer.MONGO_PASSWORD) .database(MongoDBTestContainer.MONGO_DATABASE) .build()); @@ -393,8 +356,6 @@ public abstract class AbstractPersistenceServerServiceTest { } - - @AfterEach public void cleanupStorage() { @@ -469,9 +430,8 @@ public abstract class AbstractPersistenceServerServiceTest { var mongoInstance = MongoDBTestContainer.getInstance(); mongoInstance.start(); - createMongoDBDatabase(mongoInstance); - log.info("Hosts are - Redis: {}, Postgres: {}, MongoDB: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost(), mongoInstance.getHost()); + log.info("Hosts are - Redis: {}, Postgres: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost()); TestPropertyValues.of("REDIS_PORT=" + redisContainer.getFirstMappedPort(), "REDIS_HOST=" + redisContainer.getHost(), @@ -486,40 +446,13 @@ 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(basePackages = {"com.iqser.red.service.persistence" }) + @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 index 6db3c46ec..61abcab1a 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 13:25:19 +0100 Subject: [PATCH 52/89] 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 4bdbb61aa193404c8205318b583e5323ad5e34de Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 14:52:34 +0100 Subject: [PATCH 53/89] 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 54/89] 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 517de7f1e88206452951340bb03f8f494e453b5e Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 16:36:59 +0100 Subject: [PATCH 55/89] 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 30dd8f261d3d681d94431b0bc15a4c619698acab Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 19 Mar 2024 17:15:41 +0100 Subject: [PATCH 56/89] 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 ac9fce2b26b44fc3b96472053028a50fb0d5ec31 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 10:49:50 +0100 Subject: [PATCH 57/89] 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 0669028afd9906bcede245acff3e60b0e7895937 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 11:23:47 +0100 Subject: [PATCH 58/89] 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 66b476a7bf4122a30b8c172f76d0d66bd8861aa4 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 11:42:56 +0100 Subject: [PATCH 59/89] 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 fd93cea1cf1d06ab7f89f7bd3bf325e9320390da Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 11:47:51 +0100 Subject: [PATCH 60/89] 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 03be92267511778c28ae18b39140c6ea82dad031 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 12:05:34 +0100 Subject: [PATCH 61/89] 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 c89565ec5..46195d3e6 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 7ebcf07e7..290897516 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 6ecb7df18..7a11a773d 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 107d5f72783d59874f6e3e3f968704b3b46949a6 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 13:11:34 +0100 Subject: [PATCH 62/89] 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 c757428a092d0c4409de727ecb71babff35e125c 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 63/89] 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 0897554ecc7524d9bc184cca850d1213d3fa9c48 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 20 Mar 2024 15:06:48 +0100 Subject: [PATCH 64/89] 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 314055c573d6abc0c7fb67e8708ef1d3f745bd4a Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 21 Mar 2024 09:49:46 +0100 Subject: [PATCH 65/89] 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 dd37c56e41a2267c55697e2f508fe36595733d39 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 21 Mar 2024 12:58:32 +0100 Subject: [PATCH 66/89] 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 e2b0d841ad611760b9fa0824340f546c4557acba Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 21 Mar 2024 13:45:09 +0100 Subject: [PATCH 67/89] 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 e378b3839d9c0ea074c9feb3a58e2a8707e0c78f Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Fri, 22 Mar 2024 17:00:24 +0100 Subject: [PATCH 68/89] 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 38251c64d95da96633a67cd3a4f3fc4d9f452abf Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 09:44:55 +0100 Subject: [PATCH 69/89] 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 6c42798f446ac9aea3051d48d7377c7b0cc6a751 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 09:59:54 +0100 Subject: [PATCH 70/89] 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 46195d3e6..c89565ec5 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 290897516..7ebcf07e7 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 7a11a773d..6ecb7df18 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 9031bcde7a1637145d37b300c523211c252e225b Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 10:04:27 +0100 Subject: [PATCH 71/89] 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; From ff3fb59c3959e270f0935854220a34975b960575 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 10:32:07 +0100 Subject: [PATCH 72/89] RED-8702: Explore document databases to store entityLog --- .../management/v1/processor/document/EntityLogDocument.java | 1 - 1 file changed, 1 deletion(-) 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 4539397b0..360b04d1c 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,7 +2,6 @@ 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; From 6ffffd75d9a8a370175a06cee33150e4e6b5badf Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 13:17:10 +0100 Subject: [PATCH 73/89] RED-8702: Explore document databases to store entityLog --- .../peristence/v1/server/Application.java | 1 + .../AbstractPersistenceServerServiceTest.java | 37 +++++++++++-------- 2 files changed, 23 insertions(+), 15 deletions(-) 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 acfeca435..dad11c1a6 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 @@ -13,6 +13,7 @@ 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.data.mongo.MongoRepositoriesAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; 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..4eac6b3be 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,8 @@ package com.iqser.red.service.peristence.v1.server.integration.utils; +import static com.iqser.red.service.peristence.v1.server.integration.utils.MongoDBTestContainer.MONGO_DATABASE; +import static com.iqser.red.service.peristence.v1.server.integration.utils.MongoDBTestContainer.MONGO_PASSWORD; +import static com.iqser.red.service.peristence.v1.server.integration.utils.MongoDBTestContainer.MONGO_USERNAME; import static org.mockito.Mockito.when; import java.util.ArrayList; @@ -104,6 +107,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.liquibase.MongoTenantCreatedEvent; +import com.knecon.fforesight.mongo.database.commons.liquibase.MongoTenantCreatedListener; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import com.knecon.fforesight.tenantcommons.TenantContext; import com.knecon.fforesight.tenantcommons.TenantsClient; @@ -233,6 +238,8 @@ public abstract class AbstractPersistenceServerServiceTest { private EncryptionDecryptionService encryptionDecryptionService; @Autowired private TenantCreatedListener tenantCreatedListener; + @Autowired + private MongoTenantCreatedListener mongoTenantCreatedListener; private static String[] getAllRoles() { @@ -360,9 +367,9 @@ public abstract class AbstractPersistenceServerServiceTest { 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) + .username(MONGO_USERNAME) + .password(encryptionDecryptionService.encrypt(MONGO_PASSWORD)) + .database(MONGO_DATABASE) .build()); when(tenantsClient.getTenant("redaction")).thenReturn(redactionTenant); @@ -370,6 +377,7 @@ public abstract class AbstractPersistenceServerServiceTest { try { tenantCreatedListener.createTenant(new TenantCreatedEvent("redaction")); + mongoTenantCreatedListener.createTenant(new MongoTenantCreatedEvent("redaction")); } catch (Exception e) { e.printStackTrace(); @@ -393,8 +401,6 @@ public abstract class AbstractPersistenceServerServiceTest { } - - @AfterEach public void cleanupStorage() { @@ -477,8 +483,8 @@ public abstract class AbstractPersistenceServerServiceTest { "REDIS_HOST=" + redisContainer.getHost(), "MONGODB_HOST=" + mongoInstance.getHost(), "MONGODB_PORT=" + mongoInstance.getFirstMappedPort(), - "MONGODB_USER=" + MongoDBTestContainer.MONGO_USERNAME, - "MONGODB_PASSWORD=" + MongoDBTestContainer.MONGO_PASSWORD, + "MONGODB_USER=" + MONGO_USERNAME, + "MONGODB_PASSWORD=" + MONGO_PASSWORD, "fforesight.jobs.enabled=false", "fforesight.keycloak.enabled=false").applyTo(configurableApplicationContext.getEnvironment()); @@ -490,23 +496,23 @@ 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, + MONGO_USERNAME, + MONGO_PASSWORD, mongoDBTestContainer.getHost(), mongoDBTestContainer.getFirstMappedPort()))) { - MongoDatabase database = mongoClient.getDatabase(MongoDBTestContainer.MONGO_DATABASE); + MongoDatabase database = mongoClient.getDatabase(MONGO_DATABASE); BsonDocument createUserCommand = new BsonDocument(); - createUserCommand.append("createUser", new BsonString(MongoDBTestContainer.MONGO_USERNAME)); - createUserCommand.append("pwd", new BsonString(MongoDBTestContainer.MONGO_PASSWORD)); + createUserCommand.append("createUser", new BsonString(MONGO_USERNAME)); + createUserCommand.append("pwd", new BsonString(MONGO_PASSWORD)); BsonArray roles = new BsonArray(); - roles.add(new BsonString("readWrite")); + roles.add(new BsonDocument("role", new BsonString("dbOwner")).append("db", new BsonString(MONGO_DATABASE))); createUserCommand.append("roles", roles); try { database.runCommand(createUserCommand); } catch (MongoCommandException mongoCommandException) { // ignore user already exists - if(mongoCommandException.getErrorCode() != 51003) { + if (mongoCommandException.getErrorCode() != 51003) { throw mongoCommandException; } @@ -515,11 +521,12 @@ public abstract class AbstractPersistenceServerServiceTest { } } + @Configuration @EnableWebSecurity @EnableMethodSecurity @EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class}) - @ComponentScan(basePackages = {"com.iqser.red.service.persistence" }) + @ComponentScan("com.iqser.red.service.persistence") public static class TestConfiguration { @Bean From 4eb321c1d1784e048e1b12ee9903e6def690e848 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Mon, 25 Mar 2024 15:24:46 +0100 Subject: [PATCH 74/89] RED-8702: Explore document databases to store entityLog * added tests --- .../tests/EntityLogMongoServiceTest.java | 238 +- .../AbstractPersistenceServerServiceTest.java | 67 +- ...b5d4e11211fc0d7732fd45b78.ENTITY_LOG.json} | 0 ...4dca0aa1aa0ebbfc5cc1462df0.ENTITY_LOG.json | 30537 ++++ ...77170d303bfc6fb82e6a-after.ENTITY_LOG.json | 120408 +++++++++++++++ ...7170d303bfc6fb82e6a-before.ENTITY_LOG.json | 120327 ++++++++++++++ 6 files changed, 271557 insertions(+), 20 deletions(-) rename persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/{sample.ENTITY_LOG.json => 6f2a9d4b5d4e11211fc0d7732fd45b78.ENTITY_LOG.json} (100%) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.ENTITY_LOG.json create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/c3b23116f2d277170d303bfc6fb82e6a-after.ENTITY_LOG.json create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/c3b23116f2d277170d303bfc6fb82e6a-before.ENTITY_LOG.json 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 cebe87fa9..ac72f3129 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 @@ -1,6 +1,11 @@ -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.assertTrue; + +import java.util.List; +import java.util.Optional; -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; @@ -10,32 +15,245 @@ 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.service.v1.api.shared.model.analysislog.entitylog.EntityLog; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; +import com.knecon.fforesight.tenantcommons.TenantContext; import lombok.SneakyThrows; public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceTest { - @Autowired private EntityLogMongoService entityLogMongoService; - private final String ENTITY_LOG = "sample.ENTITY_LOG.json"; + private final String ENTITY_LOG1 = "files/entity-log/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.ENTITY_LOG.json"; + private final String ENTITY_LOG2 = "files/entity-log/6f2a9d4b5d4e11211fc0d7732fd45b78.ENTITY_LOG.json"; + private final String ENTITY_LOG3_BEFORE = "files/entity-log/c3b23116f2d277170d303bfc6fb82e6a-before.ENTITY_LOG.json"; + private final String ENTITY_LOG3_AFTER = "files/entity-log/c3b23116f2d277170d303bfc6fb82e6a-after.ENTITY_LOG.json"; + + private static final String TEST_DOSSIER_ID = "91ce8e90-9aec-473c-b8c3-cbe16443ad34"; + private static final String TEST_FILE1_ID = "b2cbdd4dca0aa1aa0ebbfc5cc1462df0"; + private static final String TEST_FILE2_ID = "6f2a9d4b5d4e11211fc0d7732fd45b78"; + private static final String TEST_FILE3_ID = "c3b23116f2d277170d303bfc6fb82e6a"; - private static final String TEST_DOSSIER_ID = "6f2a9d4b5d4e11211fc0d7732fd45b78"; - private static final String TEST_FILE_ID = "b2cbdd4dca0aa1aa0ebbfc5cc1462df0"; @Test @SneakyThrows - @Disabled - public void testInsertEntityLogDocument() { + public void testMultiTenantInserts() { - var file = new ClassPathResource(String.format(ENTITY_LOG)); + var file = new ClassPathResource(String.format(ENTITY_LOG1)); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + + EntityLog entityLogToStore = objectMapper.readValue(file.getInputStream(), EntityLog.class); + + entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE1_ID, entityLogToStore); + + var optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE1_ID); + assertTrue(optionalEntityLog.isPresent()); + + EntityLog entityLogFromStorage = optionalEntityLog.get(); + + assertEquals(entityLogFromStorage, entityLogToStore); + + TenantContext.setTenantId("redaction2"); + + optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE1_ID); + assertTrue(optionalEntityLog.isEmpty()); + + file = new ClassPathResource(String.format(ENTITY_LOG2)); + entityLogToStore = objectMapper.readValue(file.getInputStream(), EntityLog.class); + + entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE2_ID, entityLogToStore); + + optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE2_ID); + assertTrue(optionalEntityLog.isPresent()); + + entityLogFromStorage = optionalEntityLog.get(); + + assertEquals(entityLogFromStorage, entityLogToStore); + + TenantContext.setTenantId("redaction"); + + optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE2_ID); + assertTrue(optionalEntityLog.isEmpty()); + } + + + @Test + @SneakyThrows + public void testInsertAndDeleteEntityLogDocument() { + + var file = new ClassPathResource(String.format(ENTITY_LOG1)); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + + EntityLog entityLogToStore = objectMapper.readValue(file.getInputStream(), EntityLog.class); + + entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE1_ID, entityLogToStore); + + var optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE1_ID); + assertTrue(optionalEntityLog.isPresent()); + + EntityLog entityLogFromStorage = optionalEntityLog.get(); + + assertEquals(entityLogFromStorage, entityLogToStore); + + entityLogMongoService.deleteEntityLog(TEST_DOSSIER_ID, TEST_FILE1_ID); + + optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE1_ID); + assertTrue(optionalEntityLog.isEmpty()); + } + + + @Test + @SneakyThrows + public void testFindAndUpdateEntityLogDocument() { + + var file = new ClassPathResource(ENTITY_LOG3_BEFORE); 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); + entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog); + + Optional found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID); + assertTrue(found.isPresent()); + assertEquals(found.get().getEntityLogEntry().size(), 1706); + assertEquals(entityLogMongoService.findLatestAnalysisNumber(TEST_DOSSIER_ID, TEST_FILE3_ID) + .orElse(-1), 8); + + var latest = entityLogMongoService.findLatestAnalysisNumber(TEST_DOSSIER_ID, TEST_FILE3_ID) + .orElseThrow(); + var latestChangedEntries = entityLogMongoService.findAllEntityLogEntriesByAnalysisNumber(TEST_DOSSIER_ID, TEST_FILE3_ID, latest); + assertEquals(latestChangedEntries.size(), 490); + + var manuallyChangedEntries = entityLogMongoService.findAllEntityLogEntriesWithManualChanges(TEST_DOSSIER_ID, TEST_FILE3_ID); + assertEquals(manuallyChangedEntries.size(), 1014); + + String NEW_ENTITY_LOG_ENTRY = """ + { + "id": "05240998f2e657d739d59d220094702a", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "REMOVED", + "value": "Amato", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 639.3, + 32.59199, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "S. Amarasekare Amarasingham ", + "textAfter": " Amato S.L Amato", + "startOffset": 5137, + "endOffset": 5142, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 3, + "type": "REMOVED", + "dateTime": "2024-03-13T08:47:11.339124572Z" + }, + { + "analysisNumber": 4, + "type": "REMOVED", + "dateTime": "2024-03-13T08:47:19.694336707Z" + }, + { + "analysisNumber": 5, + "type": "REMOVED", + "dateTime": "2024-03-13T08:48:21.670287664Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + }, + { + "analysisNumber": 7, + "type": "REMOVED", + "dateTime": "2024-03-13T08:59:31.444615299Z" + }, + { + "analysisNumber": 8, + "type": "REMOVED", + "dateTime": "2024-03-13T09:05:22.006293189Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + } + """; + + EntityLogEntry entityLogEntry = objectMapper.readValue(NEW_ENTITY_LOG_ENTRY, EntityLogEntry.class); + + entityLogMongoService.insertEntityLogEntries(TEST_DOSSIER_ID, TEST_FILE3_ID, List.of(entityLogEntry)); + + found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID); + assertTrue(found.isPresent()); + assertEquals(found.get().getEntityLogEntry().size(), 1707); } + + + @Test + @SneakyThrows + public void testUpdateEntityLogDocumentByOverride() { + + var file = new ClassPathResource(ENTITY_LOG3_BEFORE); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + + EntityLog entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class); + + entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog); + + Optional found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID); + assertTrue(found.isPresent()); + assertEquals(found.get().getEntityLogEntry().size(), 1706); + + file = new ClassPathResource(ENTITY_LOG3_AFTER); + + entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class); + entityLog.setAnalysisNumber(entityLog.getAnalysisNumber() + 1); + + entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog); + + found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID); + assertTrue(found.isPresent()); + assertEquals(found.get().getEntityLogEntry().size(), 1707); + assertEquals(found.get().getAnalysisNumber(), 9); + + } + } 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 4eac6b3be..e926f6db1 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 @@ -235,11 +235,11 @@ public abstract class AbstractPersistenceServerServiceTest { @MockBean private UsersClient usersClient; @Autowired - private EncryptionDecryptionService encryptionDecryptionService; + protected EncryptionDecryptionService encryptionDecryptionService; @Autowired - private TenantCreatedListener tenantCreatedListener; + protected TenantCreatedListener tenantCreatedListener; @Autowired - private MongoTenantCreatedListener mongoTenantCreatedListener; + protected MongoTenantCreatedListener mongoTenantCreatedListener; private static String[] getAllRoles() { @@ -273,7 +273,7 @@ public abstract class AbstractPersistenceServerServiceTest { @BeforeEach public void setupOptimize() { - createDefaultTenant(); + createTenants(); TenantContext.setTenantId("redaction"); @@ -322,7 +322,7 @@ public abstract class AbstractPersistenceServerServiceTest { } - private void createDefaultTenant() { + private void createTenants() { var postgreSQLContainerMaster = SpringPostgreSQLTestContainer.getInstance().withDatabaseName("integration-tests-db-master").withUsername("sa").withPassword("sa"); var mongoDbContainer = MongoDBTestContainer.getInstance(); @@ -372,12 +372,58 @@ public abstract class AbstractPersistenceServerServiceTest { .database(MONGO_DATABASE) .build()); + + var redactionTenant2 = new TenantResponse(); + redactionTenant2.setTenantId("redaction2"); + redactionTenant2.setGuid("redaction2"); + redactionTenant2.setDisplayName("redaction2"); + redactionTenant2.setAuthDetails(new AuthDetails()); + redactionTenant2.setDatabaseConnection(DatabaseConnection.builder() + .driver("postgresql") + .host(postgreSQLContainerMaster.getHost()) + .port(port) + .database("integration-tests-db-master") + .schema("public") + .username("sa") + .password(encryptionDecryptionService.encrypt("sa")) + .build()); + + redactionTenant2.setSearchConnection(SearchConnection.builder() + .hosts(Set.of("elasticsearchHost")) + .port(9200) + .scheme("https") + .username("elastic") + .numberOfShards("1") + .numberOfReplicas("5") + .build()); + + redactionTenant2.setS3StorageConnection(S3StorageConnection.builder() + .key("key") + .secret("secret") + .signerType("signerType") + .bucketName("bucketName") + .region("eu") + .endpoint("endpoint") + .build()); + + redactionTenant2.setMongoDBConnection(MongoDBConnection.builder() + .host(mongoDbContainer.getHost()) + .port(String.valueOf(mongoDbContainer.getFirstMappedPort())) + .username(MONGO_USERNAME) + .password(encryptionDecryptionService.encrypt(MONGO_PASSWORD)) + .database("redaction2") + .build()); + + when(tenantsClient.getTenant("redaction")).thenReturn(redactionTenant); - when(tenantsClient.getTenants()).thenReturn(List.of(redactionTenant)); + when(tenantsClient.getTenant("redaction2")).thenReturn(redactionTenant2); + when(tenantsClient.getTenants()).thenReturn(List.of(redactionTenant, redactionTenant2)); try { tenantCreatedListener.createTenant(new TenantCreatedEvent("redaction")); mongoTenantCreatedListener.createTenant(new MongoTenantCreatedEvent("redaction")); + tenantCreatedListener.createTenant(new TenantCreatedEvent("redaction2")); + mongoTenantCreatedListener.createTenant(new MongoTenantCreatedEvent("redaction2")); } catch (Exception e) { e.printStackTrace(); @@ -475,7 +521,8 @@ public abstract class AbstractPersistenceServerServiceTest { var mongoInstance = MongoDBTestContainer.getInstance(); mongoInstance.start(); - createMongoDBDatabase(mongoInstance); + createMongoDBDatabase(mongoInstance, "redaction"); + createMongoDBDatabase(mongoInstance, "redaction2"); log.info("Hosts are - Redis: {}, Postgres: {}, MongoDB: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost(), mongoInstance.getHost()); @@ -493,19 +540,19 @@ public abstract class AbstractPersistenceServerServiceTest { } - private static void createMongoDBDatabase(MongoDBTestContainer mongoDBTestContainer) { + private static void createMongoDBDatabase(MongoDBTestContainer mongoDBTestContainer, String databaseName) { try (MongoClient mongoClient = MongoClients.create(String.format("mongodb://%s:%s@%s:%s/", MONGO_USERNAME, MONGO_PASSWORD, mongoDBTestContainer.getHost(), mongoDBTestContainer.getFirstMappedPort()))) { - MongoDatabase database = mongoClient.getDatabase(MONGO_DATABASE); + MongoDatabase database = mongoClient.getDatabase(databaseName); BsonDocument createUserCommand = new BsonDocument(); createUserCommand.append("createUser", new BsonString(MONGO_USERNAME)); createUserCommand.append("pwd", new BsonString(MONGO_PASSWORD)); BsonArray roles = new BsonArray(); - roles.add(new BsonDocument("role", new BsonString("dbOwner")).append("db", new BsonString(MONGO_DATABASE))); + roles.add(new BsonDocument("role", new BsonString("dbOwner")).append("db", new BsonString(databaseName))); createUserCommand.append("roles", roles); try { 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/6f2a9d4b5d4e11211fc0d7732fd45b78.ENTITY_LOG.json similarity index 100% rename from persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/sample.ENTITY_LOG.json rename to persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/6f2a9d4b5d4e11211fc0d7732fd45b78.ENTITY_LOG.json diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.ENTITY_LOG.json b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.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/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.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 diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/c3b23116f2d277170d303bfc6fb82e6a-after.ENTITY_LOG.json b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/c3b23116f2d277170d303bfc6fb82e6a-after.ENTITY_LOG.json new file mode 100644 index 000000000..2c2572b9c --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/entity-log/c3b23116f2d277170d303bfc6fb82e6a-after.ENTITY_LOG.json @@ -0,0 +1,120408 @@ +{ + "analysisVersion": 1, + "analysisNumber": 8, + "entityLogEntry": [ + { + "id": "715fac9474f3383918d19f60884f280f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Altenbach", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 500.84808, + 722.1, + 49.19983, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "Alscher, A. Alston ", + "textAfter": " Altenbach ME Altenberger", + "startOffset": 4658, + "endOffset": 4667, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "87eb85a37616f9d03985606ef2712601", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Abbott", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 170.764, + 625.5, + 33.31201, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Abbay Abbd-Alrahman Abbitt ", + "textAfter": " Abbott L. Abbotts", + "startOffset": 686, + "endOffset": 692, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.95293822Z", + "requestedDate": "2024-03-13T08:45:49.005539Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9db60b07b7d013a188a4e5af7046eb19", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Aldrige", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 253.74402, + 197.70004, + 36.600037, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Aldinger Aldrich Aldridge ", + "textAfter": " Aldrige D. Aldwinckle", + "startOffset": 3538, + "endOffset": 3545, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953008683Z", + "requestedDate": "2024-03-13T08:45:50.085292Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "34cc497eb5e3e94b7b29447fbda82320", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Aardema", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 103.084, + 639.3, + 43.908005, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Aalderink Aamlid Aardema ", + "textAfter": " M. Aaron Aarup", + "startOffset": 581, + "endOffset": 588, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0245dbce0111d5ee2df270a8e78f3855", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Alerman", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 112.9, + 170.1, + 41.892006, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Alemanni Alen Alenberger ", + "textAfter": " Alesandrini Alessi Aletrari", + "startOffset": 3703, + "endOffset": 3710, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953103862Z", + "requestedDate": "2024-03-13T08:45:48.462405Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "737aeb490a777186bcbfbd2999a83b30", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bade T", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 156.364, + 432.3, + 34.71602, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Bacsi Badawy Bade ", + "textAfter": " Bade T.R. Badelt", + "startOffset": 11025, + "endOffset": 11031, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.953181237Z", + "requestedDate": "2024-03-13T08:48:18.188Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Bade T" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.953187249Z", + "requestedDate": "2024-03-13T08:48:18.799597Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dcf307efe545ad90f3fec3ff43919dc5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "A. Kwiatkowski A. Roth", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 263.03204, + 666.9, + 118.93201, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "A. H. Karrenbrock ", + "textAfter": " A. Shirmohammadi A.", + "startOffset": 425, + "endOffset": 447, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953236872Z", + "requestedDate": "2024-03-13T08:45:49.390631Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3e94c3516b420a46b937db82d67b0ecb", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Baluch", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 477.02826, + 239.1, + 33.900055, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Balu Balu, K. ", + "textAfter": " Bamber Bames Bammer", + "startOffset": 12410, + "endOffset": 12416, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.95328361Z", + "requestedDate": "2024-03-13T08:48:18.535Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Baluch" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.953284351Z", + "requestedDate": "2024-03-13T08:48:18.594944Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "62ebb6143f9df4d82849bd30d667cef7", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Awoyemi", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 267.65207, + 584.1, + 46.212036, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Avril Awazu Awong ", + "textAfter": " Axelrod Ayadi Aydin-Sinan", + "startOffset": 10039, + "endOffset": 10046, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.953322433Z", + "requestedDate": "2024-03-13T08:48:18.194393Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.953323245Z", + "requestedDate": "2024-03-13T08:48:18.473Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Awoyemi" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "55d686c53c7748e6f24e0d38a3b1afee", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Makiko", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 285.71204, + 556.5, + 37.29602, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "Anai M. Anai ", + "textAfter": " Anaka Anand Ananth", + "startOffset": 5670, + "endOffset": 5676, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 3, + "type": "ADDED", + "dateTime": "2024-03-13T08:47:11.339124572Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e4ab26a0961a71a582f763ca62cfb0fb", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Akhavan M", + "reason": "Author found, removed by manual override, forced by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 412.01205, + 308.1, + 56.96405, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Akerman Akesson Akhavan ", + "textAfter": " Akhavan M. Akhavein", + "startOffset": 2822, + "endOffset": 2831, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 7, + "type": "ADDED", + "dateTime": "2024-03-13T08:59:31.444615299Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953399919Z", + "requestedDate": "2024-03-13T08:45:50.143058Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + }, + { + "manualRedactionType": "FORCE", + "processedDate": "2024-03-13T09:05:21.953406241Z", + "requestedDate": "2024-03-13T08:59:29.965623Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9cdab8f6406921cd4c757755d1fdf73b", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Anastacio Anastasiadou Anastasiadou P.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 542.7, + 193.15202, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "Ananth Anas Anasaloni ", + "textAfter": " Anastasiou Anbari Ancay", + "startOffset": 5711, + "endOffset": 5749, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 4, + "type": "ADDED", + "dateTime": "2024-03-13T08:47:19.694336707Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1808156dd06beb1e924d71c4e3451e32", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Adair", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 482.68018, + 515.1, + 27.288025, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Zeist, NL Adair ", + "textAfter": " Jason Adam Adam", + "startOffset": 1475, + "endOffset": 1480, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9d6d9c4461a0a0228f52fd32707eac30", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Banham PB.", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 314.59604, + 197.70004, + 60.660034, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "PB Banham PB, ", + "textAfter": " Banhan Banica Banicova", + "startOffset": 12643, + "endOffset": 12653, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.953519554Z", + "requestedDate": "2024-03-13T08:48:18.187Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Banham PB." + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.953520125Z", + "requestedDate": "2024-03-13T08:48:18.196436Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0cdb91bf350b46ab43c323fe950be3af", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Alekseyev", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 371.9921, + 183.90005, + 50.496033, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "AlejandroArias Alekperov Aleksashina ", + "textAfter": " Aleksunes Alemanni Alen", + "startOffset": 3658, + "endOffset": 3667, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953557135Z", + "requestedDate": "2024-03-13T08:45:49.063833Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "642f0942aab80d6afd4b0d8e1a46bd21", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Abellan Martinez", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 72.796005, + 584.1, + 84.192, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Abellan Abellan M. ", + "textAfter": " Aberer Abernathy Abernethy", + "startOffset": 943, + "endOffset": 959, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953592241Z", + "requestedDate": "2024-03-13T08:45:48.60437Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e843c5de7636406d34198c8184730beb", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allsup", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 59.700043, + 31.979992, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Alllen Allochuku Allran ", + "textAfter": " Almaraz Almeida Almeida", + "startOffset": 4486, + "endOffset": 4492, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953626705Z", + "requestedDate": "2024-03-13T08:45:48.905789Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "21ed6c2f0e618aacc46d81b3c7319fad", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Adams", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 297.73602, + 487.5, + 33.960022, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "K. Adams RA ", + "textAfter": " Richard Adams S.", + "startOffset": 1613, + "endOffset": 1618, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dafe2c394f2230fe891b872a56e69718", + "type": "CBI_author", + "entryType": "RECOMMENDATION", + "state": "SKIPPED", + "value": "Arnoux Arnus Arora Arpad Arpasy M.", + "reason": "", + "matchedRule": "", + "legalBasis": "", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 384.484, + 170.1, + 167.93994, + 12.642 + ], + "pageNumber": 2 + }, + { + "rectangle": [ + 56.8, + 156.30002, + 13.5960045, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "Arnold Arnold D.W. ", + "textAfter": " Arpino Arrhenius Arrhenius", + "startOffset": 8285, + "endOffset": 8319, + "imageHasTransparency": false, + "dictionaryEntry": false, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 4, + "type": "ADDED", + "dateTime": "2024-03-13T08:47:19.694336707Z" + } + ], + "manualChanges": [], + "engines": [ + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9225cc7c37f7b3a4fc2606103fb6e601", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Almeida A", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 290.02002, + 59.700043, + 52.344086, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "A Almeida A. ", + "textAfter": ".A. Almond Almond", + "startOffset": 4530, + "endOffset": 4539, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953732154Z", + "requestedDate": "2024-03-13T08:58:39.618107Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "31b190d20533e27230769116114e928b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Alex Charlton,", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 322.3841, + 170.1, + 71.26807, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Alessi Aletrari Alevra ", + "textAfter": " Alexander Alexander Gregory", + "startOffset": 3746, + "endOffset": 3760, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953766358Z", + "requestedDate": "2024-03-13T08:45:49.267467Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f2788c6966d0e3edd5ca16bd1fa29fb9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Alban", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 287.392, + 239.1, + 29.292023, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "S Alba S. ", + "textAfter": " Albanese Albanese E.J.", + "startOffset": 3255, + "endOffset": 3260, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953800543Z", + "requestedDate": "2024-03-13T08:45:48.74127Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8e71e92c29f08c1112f4742eb92f606d", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allen", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 468.48425, + 114.900055, + 26.592041, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Allchin Alleman Allemann ", + "textAfter": " Allen B.C. Allen", + "startOffset": 4165, + "endOffset": 4170, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953834937Z", + "requestedDate": "2024-03-13T08:45:48.594494Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "04d31e73df649fb4cbb8a76bc257f67f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Alba", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 177.73601, + 239.1, + 23.304, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Alavez Alawi Alba ", + "textAfter": " A Alba S", + "startOffset": 3233, + "endOffset": 3237, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953869392Z", + "requestedDate": "2024-03-13T08:58:39.431293Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6eef8c459cc714eb1468d7f12760c647", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Balsa", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 163.06, + 239.1, + 26.604004, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Baloch Balog Balogh ", + "textAfter": " Balsaa Baltensperger Baltisberger", + "startOffset": 12346, + "endOffset": 12351, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.953906592Z", + "requestedDate": "2024-03-13T08:48:18.12Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Balsa" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.953907223Z", + "requestedDate": "2024-03-13T08:48:19.233261Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0d74e644a7c36219f3de82a05c943d9e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Aardema", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 639.3, + 43.908, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Aagaard Aalderink Aamlid ", + "textAfter": " Aardema M. Aaron", + "startOffset": 573, + "endOffset": 580, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953942039Z", + "requestedDate": "2024-03-13T08:45:48.545746Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "843c418ed58a97614165c9c5a4d4c6c9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Abildt", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 467.30817, + 584.1, + 30.61203, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "A. Abi-Akar Abildgard ", + "textAfter": " Abildt U. Abis", + "startOffset": 1019, + "endOffset": 1025, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.953976814Z", + "requestedDate": "2024-03-13T08:45:49.783535Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ae58788da8854c1f42ff429def4aff98", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Adema", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 162.184, + 459.9, + 34.608, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Adelberger I Adelson ", + "textAfter": " Ademola Adham Adhihetty", + "startOffset": 1758, + "endOffset": 1763, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954011089Z", + "requestedDate": "2024-03-13T08:45:48.967729Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e5a6654664d689949e3823e1681d6272", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Akesson", + "reason": "Author found, removed by manual override, forced by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 322.63608, + 308.1, + 41.375977, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Akashi Akashiba Akerman ", + "textAfter": " Akhavan Akhavan M", + "startOffset": 2806, + "endOffset": 2813, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 7, + "type": "ADDED", + "dateTime": "2024-03-13T08:59:31.444615299Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954045754Z", + "requestedDate": "2024-03-13T08:45:49.298559Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + }, + { + "manualRedactionType": "FORCE", + "processedDate": "2024-03-13T09:05:21.954046415Z", + "requestedDate": "2024-03-13T08:59:29.8778Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ad3096cde99eac5a9c41ec85058efcfe", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allen H.", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 249.004, + 101.100006, + 41.28006, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "J. Allen D.J. ", + "textAfter": " Allen J.A. Allen", + "startOffset": 4223, + "endOffset": 4231, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954081842Z", + "requestedDate": "2024-03-13T08:45:48.820661Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "26710321b5cbdec8ad8431117bb34d1e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Baldridge", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 156.74799, + 294.3, + 47.208008, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Baldrick Baldrick P. ", + "textAfter": " Baldwin Baldwin M.K.", + "startOffset": 11954, + "endOffset": 11963, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.954118551Z", + "requestedDate": "2024-03-13T08:48:18.084Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Baldridge" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.954119092Z", + "requestedDate": "2024-03-13T08:48:19.244317Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "711db44a5295a6a8ae96a58adfb8a23a", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Adams", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 511.58823, + 501.3, + 33.95993, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Adami Adamovics Adams ", + "textAfter": " Allen Adams D.", + "startOffset": 1565, + "endOffset": 1570, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6f742899f1c6237f8504fe08dac27866", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Audrey V.", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 198.376, + 653.1, + 48.888016, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Audouze Audouze K. ", + "textAfter": " Audus Audy Auer", + "startOffset": 9572, + "endOffset": 9581, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.954190456Z", + "requestedDate": "2024-03-13T08:48:18.342Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Audrey V." + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.954191007Z", + "requestedDate": "2024-03-13T08:48:18.794003Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "3ec790054bdf095c6f9adace3a2cfabc", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Banwell", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 342.7961, + 183.90005, + 39.91205, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "A.J Bannwarth Banton ", + "textAfter": " Banyard Banyuls Banzar", + "startOffset": 12736, + "endOffset": 12743, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.954225642Z", + "requestedDate": "2024-03-13T08:48:18.061524Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.954226384Z", + "requestedDate": "2024-03-13T08:48:18.229Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Banwell" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7cb0ead3fcfb00dfc24178941b028fdc", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Adams", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 136.77998, + 487.5, + 33.960007, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Allen Adams D. ", + "textAfter": " DS Adams K.", + "startOffset": 1586, + "endOffset": 1591, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c2755a69d36ea2b74af9b082a0036a41", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Atreya NC", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 282.68802, + 694.5, + 52.272034, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "S. Atrashkova Atreya ", + "textAfter": " Atreys Atreyya Atsushi", + "startOffset": 9303, + "endOffset": 9312, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.954296576Z", + "requestedDate": "2024-03-13T08:48:18.639Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Atreya NC" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.954297127Z", + "requestedDate": "2024-03-13T08:48:18.830217Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ae5c6edab43155a7f68b27546dda06aa", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Abd-Alrahman", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 295.73203, + 625.5, + 72.57605, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Abbott L. Abbotts ", + "textAfter": " Abd-Ella AA Abdallah", + "startOffset": 711, + "endOffset": 723, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954332053Z", + "requestedDate": "2024-03-13T08:45:49.868331Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a55989c7e9ed50c5532e83ec54d70d2b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allen D.", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 99.78399, + 101.100006, + 41.27999, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "B.C. Allen C. ", + "textAfter": " Allen D. J.", + "startOffset": 4191, + "endOffset": 4199, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954366177Z", + "requestedDate": "2024-03-13T08:45:49.44948Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY", + "NER" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4c59c27ca5762407b5ef65e527f0f1a5", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Aarup S.", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 230.64401, + 639.3, + 42.671997, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "M. Aaron Aarup ", + "textAfter": " Aarup V. Abadie", + "startOffset": 604, + "endOffset": 612, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954400942Z", + "requestedDate": "2024-03-13T08:45:49.907731Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9246b04b4e87dcc82a91443e2712319c", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Aversa", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 235.576, + 597.9, + 33.107986, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Avault Aveline Aver ", + "textAfter": " Avery Aviado Avila", + "startOffset": 9934, + "endOffset": 9940, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.954436649Z", + "requestedDate": "2024-03-13T08:48:18.293Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Aversa" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.95443716Z", + "requestedDate": "2024-03-13T08:48:18.558489Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1031714e84ee17f996985991545a8b7f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Aldinger", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 124.78, + 197.70004, + 42.588013, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "S. Aldershof SA ", + "textAfter": " Aldrich Aldridge Aldrige", + "startOffset": 3512, + "endOffset": 3520, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954471665Z", + "requestedDate": "2024-03-13T08:45:49.839363Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8227c499c2cb6553a8268b176ec0fbe7", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allen", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 197.72798, + 101.100006, + 26.59201, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Allen D. J. ", + "textAfter": " D.J. Allen H.", + "startOffset": 4212, + "endOffset": 4217, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.95450595Z", + "requestedDate": "2024-03-13T08:58:39.402992Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "64c1106908b56e9d8fcde5e28a7b682f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Aga", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 195.052, + 404.7, + 20.003998, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "AG Seville Aga ", + "textAfter": " D. S. Agarwal", + "startOffset": 2139, + "endOffset": 2142, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954540304Z", + "requestedDate": "2024-03-13T08:58:39.577173Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "529979f07c589a58324433de581f1970", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Alger", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 399.42407, + 142.50003, + 27.288025, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "D.R. Algate Derek ", + "textAfter": " Ali Alim Aliouane", + "startOffset": 3951, + "endOffset": 3956, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954574799Z", + "requestedDate": "2024-03-13T08:45:48.538748Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "1bd5c4c513c146c62850cf8fe2502453", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Aldershof S", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 471.74808, + 211.50003, + 57.64798, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Aldershof Aldershof S ", + "textAfter": ". Aldershof SA", + "startOffset": 3486, + "endOffset": 3497, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954608853Z", + "requestedDate": "2024-03-13T08:58:39.293665Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "937df935fab632abb4038339f9d2ba2c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Chamier", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 480.9162, + 722.1, + 41.27997, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Tummon 0. D. ", + "textAfter": " 0. W. Matheson", + "startOffset": 84, + "endOffset": 91, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954642727Z", + "requestedDate": "2024-03-13T08:58:39.548295Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "75b27037ff69dd81eb48894fe4f07a78", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Adamovics", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 418.3001, + 501.3, + 54.564087, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Adamczewska-Andrzejewska Adamczyk Adami ", + "textAfter": " Adams Adams Allen", + "startOffset": 1549, + "endOffset": 1558, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954676931Z", + "requestedDate": "2024-03-13T08:45:48.698964Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0b973ec922774f6df9243e85cdc09a6f", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Atger", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 708.3, + 27.287998, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Atallah Y.H. Ataulla ", + "textAfter": " Athanaselis Atherton Athusi", + "startOffset": 9157, + "endOffset": 9162, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.954712518Z", + "requestedDate": "2024-03-13T08:48:18.033968Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.9547134Z", + "requestedDate": "2024-03-13T08:48:18.136Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Atger" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "32c33ef8d4d1e6fddfafc2bf4e50f06c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Magdalena", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 155.38, + 473.7, + 53.304, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Adamska Magdalen Adamska ", + "textAfter": " Adanyi Adaskaveg Adato", + "startOffset": 1669, + "endOffset": 1678, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "4f23721ab5580a7dfd5b6c49716e7e32", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bach", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 383.1762, + 501.3, + 24.600037, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Baccarelli Bacchus Bacci ", + "textAfter": " Bach B. Bach", + "startOffset": 10609, + "endOffset": 10613, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.954781448Z", + "requestedDate": "2024-03-13T08:48:18.153093Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.95478222Z", + "requestedDate": "2024-03-13T08:48:18.332Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Bach" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "10bbc22e5ccd549d0ff535563dbf7d82", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Aloni", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 242.42801, + 722.1, + 27.312012, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "Almond Richard Alongi ", + "textAfter": " Aloph Alpendurada Alsadek", + "startOffset": 4607, + "endOffset": 4612, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "50c88533fe01a91f38e6b306d368a8c2", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Attique", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 333.29214, + 680.7, + 35.904053, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Attia Attila Attilio ", + "textAfter": " Atwa Atwal Atwood", + "startOffset": 9415, + "endOffset": 9422, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.954854265Z", + "requestedDate": "2024-03-13T08:48:18.385Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Attique" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.954854946Z", + "requestedDate": "2024-03-13T08:48:18.623858Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "dba9c6b2bf616e27a862e97a35ac29c4", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Abbott", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 206.45201, + 625.5, + 33.228012, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Abbd-Alrahman Abbitt Abbott ", + "textAfter": " L. Abbotts Abd-Alrahman", + "startOffset": 693, + "endOffset": 699, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fa52ae8005f74a067472cd37e1e1ecf9", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allen", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 249.004, + 101.100006, + 26.592041, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "J. Allen D.J. ", + "textAfter": " H. Allen J.A.", + "startOffset": 4223, + "endOffset": 4228, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.954923896Z", + "requestedDate": "2024-03-13T08:58:39.422983Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7d93e285f46c31d3e952755ed3c30508", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Baldez", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 410.17627, + 308.1, + 33.216064, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Baldamus Baldarelli Balderacchi ", + "textAfter": " Baldi Baldi B.", + "startOffset": 11911, + "endOffset": 11917, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.954959413Z", + "requestedDate": "2024-03-13T08:48:18.208Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Baldez" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.954959964Z", + "requestedDate": "2024-03-13T08:48:19.127545Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "11c3b3212fe0591e5d24066f37c8084e", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Adolphi H.", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 187.74399, + 432.3, + 53.976013, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Adolph S. Adolphi ", + "textAfter": " Adora Clark Adriaanse", + "startOffset": 1946, + "endOffset": 1956, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.95499509Z", + "requestedDate": "2024-03-13T08:45:48.928955Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2c74180b4cac91a652842a78de9506ea", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Balluf", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 363.73618, + 252.90005, + 29.89206, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Ballet Ballet-Besnard Ballsutwe ", + "textAfter": " Balluff Balluff M.", + "startOffset": 12293, + "endOffset": 12299, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.955030437Z", + "requestedDate": "2024-03-13T08:48:18.574Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Balluf" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.955030938Z", + "requestedDate": "2024-03-13T08:48:18.685198Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e1a544ce45b4ae36eb94b3edd5dda8ca", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Al. Amin", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 442.01218, + 266.70004, + 44.676025, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Al-Sarar Al-Shaibani Al-Taher ", + "textAfter": " Aladjem Alagar Alamo", + "startOffset": 3097, + "endOffset": 3105, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955066274Z", + "requestedDate": "2024-03-13T08:45:49.558719Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "190f05c164689f7c37c7fb384f857468", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allin", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 209.74, + 73.50003, + 24.588013, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Allender Alley Allias ", + "textAfter": " Allingham Allinson Allison", + "startOffset": 4418, + "endOffset": 4423, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955100498Z", + "requestedDate": "2024-03-13T08:45:49.15997Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d6886f051bd757a8e40c8e071aac1cfb", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Altenburger E.", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 299.74005, + 708.3, + 70.992096, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "Altenberger Altenburg Altenburger ", + "textAfter": " Altenkirch Alterbuger Alterburger", + "startOffset": 4715, + "endOffset": 4729, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "7c948e439a62f8f2fa46e6d65eccdab0", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Abraham", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 445.03613, + 570.3, + 44.616028, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Abraham Abraham N. ", + "textAfter": " N.R. Abraham, N.R.", + "startOffset": 1107, + "endOffset": 1114, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "56facb7952f1c273d39204156840e84c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "$ D Jones", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 722.1, + 47.26801, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "", + "textAfter": " $.Friedrich & Farrelly", + "startOffset": 0, + "endOffset": 9, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955207149Z", + "requestedDate": "2024-03-13T08:45:49.116166Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d709ac992b5802bc56b695e4d479fac8", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "B. Schmid", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 437.10416, + 528.9, + 50.580048, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Pavlowitz B. Kerr, ", + "textAfter": " B.A. LACKEY Ba", + "startOffset": 10441, + "endOffset": 10450, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.955242586Z", + "requestedDate": "2024-03-13T08:48:18.281118Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.955243367Z", + "requestedDate": "2024-03-13T08:48:18.676Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "B. Schmid" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "ac29eda843f8e638355ee9443eb02827", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ballantine L.G.", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 305.88412, + 280.5, + 74.2561, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Ballantine Ballantine L. ", + "textAfter": " Ballantine L.G.. Ballantyne", + "startOffset": 12075, + "endOffset": 12090, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.955278593Z", + "requestedDate": "2024-03-13T08:48:18.327Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Ballantine L.G." + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.955279094Z", + "requestedDate": "2024-03-13T08:48:18.737835Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "481ddcb3cfaf559d3c6889dc0c73f27f", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allen", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 482.18814, + 87.30002, + 26.592041, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "L. Allen, Lisa ", + "textAfter": ", M Allen,", + "startOffset": 4377, + "endOffset": 4382, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955314862Z", + "requestedDate": "2024-03-13T08:58:39.47052Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "bfe79514a1a2b0d9676ce945ca1048f8", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bachmann K.", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 496.44443, + 473.7, + 51.20395, + 12.642 + ], + "pageNumber": 3 + }, + { + "rectangle": [ + 56.8, + 459.9, + 11.604, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Bachmann Bachmann B. ", + "textAfter": " Bachmann M Bachmann", + "startOffset": 10818, + "endOffset": 10829, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.955349928Z", + "requestedDate": "2024-03-13T08:48:18.708Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Bachmann K." + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.955350459Z", + "requestedDate": "2024-03-13T08:48:18.802243Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e01c212594ffb0f196febcd9a2c845f1", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Anderson", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 307.24, + 515.1, + 46.679993, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "L. Anderson M. ", + "textAfter": " Melanie Anderson R", + "startOffset": 5941, + "endOffset": 5949, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 4, + "type": "ADDED", + "dateTime": "2024-03-13T08:47:19.694336707Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0fe2ed3fbdcf924cc9fd24f5be54b221", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Alden", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 99.784, + 211.50003, + 29.291992, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "R. Alcock Aldcroft ", + "textAfter": " Aldenberg Alder Alder", + "startOffset": 3413, + "endOffset": 3418, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955421793Z", + "requestedDate": "2024-03-13T08:45:48.497638Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "892bd30cac5c286e0e226d94e41ab2ea", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Balogh", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 125.37999, + 239.1, + 34.59601, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Balmer Baloch Balog ", + "textAfter": " Balsa Balsaa Baltensperger", + "startOffset": 12339, + "endOffset": 12345, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.9554573Z", + "requestedDate": "2024-03-13T08:48:18.243Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Balogh" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.955457801Z", + "requestedDate": "2024-03-13T08:48:18.592147Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "204e74d8fe7140031b1772c4b81d260a", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Roper", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 239.32002, + 722.1, + 29.292007, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "& Farrelly &M ", + "textAfter": " )avid Patton .", + "startOffset": 36, + "endOffset": 41, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 6, + "type": "ADDED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "2b2430421789aee957d772aa26a3ce51", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Alder", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 213.856, + 211.50003, + 27.28801, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Alden Aldenberg Alder ", + "textAfter": " L. Alderman Aldersdorf", + "startOffset": 3435, + "endOffset": 3440, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955531189Z", + "requestedDate": "2024-03-13T08:58:39.427068Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "5e38a2b746b98c73addae37b41645de6", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Aulerich", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 625.5, + 41.891994, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Augusiak J.A Aukema ", + "textAfter": " Auletta Auletta A.", + "startOffset": 9719, + "endOffset": 9727, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.955567086Z", + "requestedDate": "2024-03-13T08:48:18.121789Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.955567878Z", + "requestedDate": "2024-03-13T08:48:18.424Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Aulerich" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a7599fec691d20fe9516d04637b8dfaa", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Aikens P.J.", + "reason": "Author found, removed by manual override, forced by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 299.60803, + 335.7, + 52.97998, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Aikens Aikens P. ", + "textAfter": " Airoldi Airs Airs", + "startOffset": 2617, + "endOffset": 2628, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 7, + "type": "ADDED", + "dateTime": "2024-03-13T08:59:31.444615299Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955603665Z", + "requestedDate": "2024-03-13T08:45:49.276334Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + }, + { + "manualRedactionType": "FORCE", + "processedDate": "2024-03-13T09:05:21.955604236Z", + "requestedDate": "2024-03-13T08:59:29.887062Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b309589863695b5fa8443adb9aeb231a", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Altenkirch", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 373.12015, + 708.3, + 51.288086, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "Altenburger Altenburger E. ", + "textAfter": " Alterbuger Alterburger Althaus", + "startOffset": 4730, + "endOffset": 4740, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "e188003edabb919da47e36fa779d0168", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Bandeira", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 392.18817, + 225.30002, + 43.212067, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Banasiak U. Bandeen ", + "textAfter": " Bandisode Bandong Bandow", + "startOffset": 12484, + "endOffset": 12492, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.955674158Z", + "requestedDate": "2024-03-13T08:48:18.144Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Bandeira" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.955674759Z", + "requestedDate": "2024-03-13T08:48:18.888585Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "6be7538b0c92a5be801e78d90321eda0", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Abdulla", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 597.9, + 38.603992, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Abdou Abdu-Allah, G. ", + "textAfter": " Abdulrachman Abdurrachman Abe", + "startOffset": 846, + "endOffset": 853, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955710226Z", + "requestedDate": "2024-03-13T08:45:49.776213Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "8f7700281e46dbfcfe3d84e796bf1450", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Asuncion", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 309.71207, + 722.1, + 45.900024, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Aston Astoux Astuti ", + "textAfter": " Asya Lyon Atallah", + "startOffset": 9109, + "endOffset": 9117, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.955745292Z", + "requestedDate": "2024-03-13T08:48:18.191Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Asuncion" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.955745813Z", + "requestedDate": "2024-03-13T08:48:19.237909Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "87198eb2e01366f976e65e2f7872fa4b", + "type": "PII", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Allen L. Allen", + "reason": "Personal Information found, removed by manual override", + "matchedRule": "PII.0.1", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 343.96005, + 101.100006, + 68.95209, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "H. Allen J.A. ", + "textAfter": " M Allen M.", + "startOffset": 4243, + "endOffset": 4257, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.95578148Z", + "requestedDate": "2024-03-13T08:58:39.566648Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "08714f9b70197e7bf845d66482bbf99c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Campbell", + "reason": "Author found, removed by manual override, forced by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 344.23605, + 321.9, + 46.608063, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "R. Aizawa AJ ", + "textAfter": " Ajao Ajayi Ajimi", + "startOffset": 2723, + "endOffset": 2731, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + }, + { + "analysisNumber": 7, + "type": "ADDED", + "dateTime": "2024-03-13T08:59:31.444615299Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955816375Z", + "requestedDate": "2024-03-13T08:58:39.450885Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + }, + { + "manualRedactionType": "FORCE", + "processedDate": "2024-03-13T09:05:21.955817027Z", + "requestedDate": "2024-03-13T08:59:30.001836Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "365cb4dc259de6b724241def1b7f5a50", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Abellan", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 475.98407, + 597.9, + 37.896057, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Abel P. Abell ", + "textAfter": " Abellan M. Abellan", + "startOffset": 924, + "endOffset": 931, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955851221Z", + "requestedDate": "2024-03-13T08:45:50.164702Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "764ef8428618fa427655beb66d25e21b", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Anderson", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 80.188, + 487.5, + 46.680008, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "A. Anderson, T.D. ", + "textAfter": "-Long Anderson. R.", + "startOffset": 6076, + "endOffset": 6084, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 4, + "type": "ADDED", + "dateTime": "2024-03-13T08:47:19.694336707Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "60e81a3af1ea0f1888d2a7afa315c5af", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Akalach", + "reason": "Author found, removed by manual override, forced by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 149.39201, + 308.1, + 39.98401, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Ajimoko Akahavan Akahori ", + "textAfter": " Akashi Akashiba Akerman", + "startOffset": 2774, + "endOffset": 2781, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 7, + "type": "ADDED", + "dateTime": "2024-03-13T08:59:31.444615299Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955920642Z", + "requestedDate": "2024-03-13T08:45:48.512Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + }, + { + "manualRedactionType": "FORCE", + "processedDate": "2024-03-13T09:05:21.955921393Z", + "requestedDate": "2024-03-13T08:59:29.927172Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "aaaac196160903fc9ea24e55998daaf9", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Balaz", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 447.1361, + 321.9, + 27.300049, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "J. A. Balasubramanian ", + "textAfter": " Balazs Balbinder Balchak", + "startOffset": 11830, + "endOffset": 11835, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.95595692Z", + "requestedDate": "2024-03-13T08:48:18.091077Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.955957671Z", + "requestedDate": "2024-03-13T08:48:18.174Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Balaz" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "a39cf861450d3703189062673a3421ba", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Almeida A.", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 232.348, + 59.700043, + 55.368027, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Almeida Almeida A ", + "textAfter": " Almeida A.A. Almond", + "startOffset": 4519, + "endOffset": 4529, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.955991976Z", + "requestedDate": "2024-03-13T08:45:49.033815Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "da5f8efdba9b5b598ae6dceaabe6e318", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Atkinson S.", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 131.06801, + 694.5, + 56.664, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "C. Atkinson K. ", + "textAfter": " Atrashkova Atreya Atreya", + "startOffset": 9273, + "endOffset": 9284, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.956027242Z", + "requestedDate": "2024-03-13T08:48:18.045557Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.956027993Z", + "requestedDate": "2024-03-13T08:48:18.082Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Atkinson S." + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "f97664e35d2b5592d00dada90fd53fd1", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Adams", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 475.28818, + 501.3, + 33.876038, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Adamczyk Adami Adamovics ", + "textAfter": " Adams Allen Adams", + "startOffset": 1559, + "endOffset": 1564, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956062779Z", + "requestedDate": "2024-03-13T08:45:49.959736Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "9d36c9be579098a6e234ac4f8d1cbb3c", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Abernethy A.", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 301.03604, + 584.1, + 64.59604, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Aberer Abernathy Abernethy ", + "textAfter": " Abi-Akar Abildgard Abildt", + "startOffset": 987, + "endOffset": 999, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956096953Z", + "requestedDate": "2024-03-13T08:45:48.883216Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "cce741c3a7657f46ec31a88448cf11dd", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Ahouangninou", + "reason": "Author found, removed by manual override, forced by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 257.75198, + 349.5, + 71.29202, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Ahmed A. Ahn ", + "textAfter": " Ahr H Ahrens", + "startOffset": 2517, + "endOffset": 2529, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 7, + "type": "ADDED", + "dateTime": "2024-03-13T08:59:31.444615299Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956131278Z", + "requestedDate": "2024-03-13T08:45:48.532984Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + }, + { + "manualRedactionType": "FORCE", + "processedDate": "2024-03-13T09:05:21.956131939Z", + "requestedDate": "2024-03-13T08:59:29.933934Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "55a36bf818e46af966299ca4635bbd06", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Algate", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 215.92003, + 142.50003, + 31.992004, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Alford Alfred Algate ", + "textAfter": " D.R Algate D.R.", + "startOffset": 3915, + "endOffset": 3921, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956166133Z", + "requestedDate": "2024-03-13T08:58:39.583941Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "22d3381523bacd561d7a9a9087b0b609", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Abambres", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 398.2001, + 639.3, + 49.26004, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "V. Abadie Aballay ", + "textAfter": " Abanto Abass Abbay", + "startOffset": 637, + "endOffset": 645, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956201811Z", + "requestedDate": "2024-03-13T08:45:49.081005Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "0f22c6c8135b8d9e7c2a6be6c3c7b846", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "5SR Burke", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 161.68001, + 708.3, + 52.979996, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Matheson 0M Clarke ", + "textAfter": " 8 Wilson :tf:inia", + "startOffset": 117, + "endOffset": 126, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 2, + "type": "ADDED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 6, + "type": "REMOVED", + "dateTime": "2024-03-13T08:58:41.082712591Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956239672Z", + "requestedDate": "2024-03-13T08:58:39.397098Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "84801a4d899accc003ff6253f3403c83", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Akhavan M.", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 471.3041, + 308.1, + 59.988007, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Akhavan Akhavan M ", + "textAfter": " Akhavein Akhaven Akhtar", + "startOffset": 2832, + "endOffset": 2842, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956275239Z", + "requestedDate": "2024-03-13T08:45:48.522654Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c2b0f6cc13c6c0970bcba981e3f179ee", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Anderson", + "reason": "Author found", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 1, + 0 + ], + "closestHeadline": "", + "section": "[1, 0]: Paragraph: Almond R.H. Almond Richard", + "color": null, + "positions": [ + { + "rectangle": [ + 458.488, + 515.1, + 46.679993, + 12.642 + ], + "pageNumber": 2 + } + ], + "textBefore": "Melanie Anderson R ", + "textAfter": " R. Anderson Rachel", + "startOffset": 5969, + "endOffset": 5977, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 4, + "type": "ADDED", + "dateTime": "2024-03-13T08:47:19.694336707Z" + } + ], + "manualChanges": [], + "engines": [ + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "10daaf609d6457147d05b6eecc0802d2", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Atallah", + "reason": "Recategorized entities are applied by default., legal basis was manually changed, recategorized by manual override", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 412.6721, + 722.1, + 35.196075, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Asuncion Asya Lyon ", + "textAfter": " Atallah Y.H. Ataulla", + "startOffset": 9128, + "endOffset": 9135, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.956346092Z", + "requestedDate": "2024-03-13T08:48:18.173Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Atallah" + } + }, + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.956346613Z", + "requestedDate": "2024-03-13T08:48:19.149614Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "b63d78af66d7287c39ec9ecdeed4370e", + "type": "CBI_address", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Aufmuth", + "reason": "Recategorized entities are applied by default., recategorized by manual override, legal basis was manually changed", + "matchedRule": "MAN.3.3", + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 2, + 0 + ], + "closestHeadline": "", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "color": null, + "positions": [ + { + "rectangle": [ + 56.8, + 639.3, + 43.283993, + 12.642 + ], + "pageNumber": 3 + } + ], + "textBefore": "Auerbach S Aufederheide ", + "textAfter": " Augello Augello A.", + "startOffset": 9631, + "endOffset": 9638, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "RECATEGORIZE", + "processedDate": "2024-03-13T09:05:21.956381889Z", + "requestedDate": "2024-03-13T08:48:18.048697Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "type": "CBI_address" + } + }, + { + "manualRedactionType": "LEGAL_BASIS_CHANGE", + "processedDate": "2024-03-13T09:05:21.956382731Z", + "requestedDate": "2024-03-13T08:48:18.545Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002", + "section": "[2, 0]: Paragraph: Assaad Assad Assiagada Astete b", + "value": "Aufmuth" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "c79fbb403e8c1d31341aa30720d30626", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": "Akkan", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 442.94806, + 294.3, + 31.992004, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Akins Akintonwa Akiyama ", + "textAfter": " Akkan Z Akkan", + "startOffset": 2915, + "endOffset": 2920, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956418548Z", + "requestedDate": "2024-03-13T08:45:50.010924Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "d2c7d0bea4d75187e7aba26381b27280", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "APPLIED", + "value": "Airoldi", + "reason": "Author found, removed by manual override, forced by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 354.892, + 335.7, + 34.608032, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "P. Aikens P.J. ", + "textAfter": " Airs Airs D", + "startOffset": 2629, + "endOffset": 2636, + "imageHasTransparency": false, + "dictionaryEntry": true, + "dossierDictionaryEntry": false, + "excluded": false, + "changes": [ + { + "analysisNumber": 1, + "type": "ADDED", + "dateTime": "2024-03-13T08:44:54.811245839Z" + }, + { + "analysisNumber": 2, + "type": "REMOVED", + "dateTime": "2024-03-13T08:45:53.93986414Z" + }, + { + "analysisNumber": 7, + "type": "ADDED", + "dateTime": "2024-03-13T08:59:31.444615299Z" + } + ], + "manualChanges": [ + { + "manualRedactionType": "REMOVE", + "processedDate": "2024-03-13T09:05:21.956453654Z", + "requestedDate": "2024-03-13T08:45:49.352307Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": {} + }, + { + "manualRedactionType": "FORCE", + "processedDate": "2024-03-13T09:05:21.956454316Z", + "requestedDate": "2024-03-13T08:59:29.992948Z", + "userId": "abbc3e3a-c499-48da-9346-063e1863a7f5", + "propertyChanges": { + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002" + } + } + ], + "engines": [ + "MANUAL", + "DICTIONARY" + ], + "reference": [], + "importedRedactionIntersections": [], + "numberOfComments": 0 + }, + { + "id": "fdcd3f3b40058bb6f5cfa7ae3cde4ffc", + "type": "CBI_author", + "entryType": "ENTITY", + "state": "IGNORED", + "value": ":tf:inia F. Gruber", + "reason": "Author found, removed by manual override", + "matchedRule": "CBI.0.0", + "legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002", + "imported": false, + "containingNodeId": [ + 0, + 0 + ], + "closestHeadline": "", + "section": "[0, 0]: Paragraph: $ D Jones $.Friedrich", + "color": null, + "positions": [ + { + "rectangle": [ + 263.63202, + 708.3, + 80.66412, + 12.642 + ], + "pageNumber": 1 + } + ], + "textBefore": "Burke 8 Wilson ", + "textAfter": " Date: Tue, 26 Mar 2024 11:56:40 +0100 Subject: [PATCH 75/89] RED-8702: Explore document databases to store entityLog * new package shared-mongo for mongo related classes * refactoring to include mapstruct for entitylog to entitylogdocument mapping --- .../build.gradle.kts | 3 +- ...sistenceServiceProcessorConfiguration.java | 5 + .../processor/document/EntityLogDocument.java | 76 ------ .../service/FileManagementStorageService.java | 2 +- .../service/mongo/EntityLogMongoService.java | 240 ------------------ ...ample-remove-entry-number-of-comments.xml} | 0 .../build.gradle.kts | 1 + .../peristence/v1/server/Application.java | 2 + .../tests/EntityLogMapperTest.java | 63 +++++ .../tests/EntityLogMongoServiceTest.java | 2 +- .../AbstractPersistenceServerServiceTest.java | 6 +- .../build.gradle.kts | 23 ++ .../mongo/SharedMongoAutoConfiguration.java | 10 + .../mongo/document/EntityLogDocument.java | 48 ++++ .../document/EntityLogEntryDocument.java | 39 +-- .../EntityLogDocumentNotFoundException.java | 2 +- .../shared/mongo/mapper/EntityLogMapper.java | 62 +++++ .../EntityLogDocumentRepository.java | 4 +- .../EntityLogEntryDocumentRepository.java | 4 +- .../mongo/service/EntityLogMongoService.java | 188 ++++++++++++++ .../v1/api/shared/mongo/IdentityTest.java | 16 ++ settings.gradle.kts | 2 + 22 files changed, 432 insertions(+), 366 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java rename persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/{example-remove-entry-number-of-comments.changelog.xml => example-remove-entry-number-of-comments.xml} (100%) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMapperTest.java create mode 100644 persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts create mode 100644 persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/SharedMongoAutoConfiguration.java create mode 100644 persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/document/EntityLogDocument.java rename persistence-service-v1/{persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor => persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo}/document/EntityLogEntryDocument.java (53%) rename persistence-service-v1/{persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor => persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo}/exception/EntityLogDocumentNotFoundException.java (69%) create mode 100644 persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogMapper.java rename persistence-service-v1/{persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service => persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared}/mongo/repository/EntityLogDocumentRepository.java (74%) rename persistence-service-v1/{persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service => persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared}/mongo/repository/EntityLogEntryDocumentRepository.java (82%) create mode 100644 persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java create mode 100644 persistence-service-v1/persistence-service-shared-mongo-v1/src/test/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/IdentityTest.java 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 982e1cb8a..171830232 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -8,6 +8,7 @@ val springCloudVersion = "4.0.4" dependencies { api(project(":persistence-service-shared-api-v1")) + api(project(":persistence-service-shared-mongo-v1")) api(project(":persistence-service-external-api-v1")) api(project(":persistence-service-internal-api-v1")) api("com.iqser.red.service:pdftron-redaction-service-api-v1:${rootProject.extra.get("pdftronRedactionServiceVersion")}") { @@ -35,7 +36,6 @@ 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-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") @@ -45,7 +45,6 @@ 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/PersistenceServiceProcessorConfiguration.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/PersistenceServiceProcessorConfiguration.java index 8b21d111d..5762cf181 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/PersistenceServiceProcessorConfiguration.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/PersistenceServiceProcessorConfiguration.java @@ -5,6 +5,8 @@ import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.support.PageJacksonModule; import org.springframework.cloud.openfeign.support.SortJacksonModule; @@ -12,6 +14,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; +import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Primary; import org.springframework.core.env.Environment; import org.springframework.jdbc.core.JdbcTemplate; @@ -25,6 +28,7 @@ import com.iqser.red.service.persistence.management.v1.processor.client.redactio 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.settings.FileManagementServiceSettings; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.SharedMongoAutoConfiguration; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; @@ -33,6 +37,7 @@ import lombok.extern.slf4j.Slf4j; @Configuration @ComponentScan @EnableFeignClients(basePackageClasses = {PDFTronClient.class, StatusReportClient.class, SearchClient.class, RedactionClient.class, UsersClient.class}) +@ImportAutoConfiguration(SharedMongoAutoConfiguration.class) public class PersistenceServiceProcessorConfiguration { public static final String TENANT_DATA_SOURCE_QUALIFIER = "multiTenantDataSource"; 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 deleted file mode 100644 index 360b04d1c..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogDocument.java +++ /dev/null @@ -1,76 +0,0 @@ -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; - - 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.entityLogEntryDocument = new ArrayList<>(entityLog.getEntityLogEntry() - .stream() - .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()); - - } - - - 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/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 a36402487..4ce1b0764 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,6 @@ 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; @@ -20,6 +19,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.imported.ImportedRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.section.SectionGrid; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.EntityLogMongoService; import com.iqser.red.storage.commons.exception.StorageException; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; import com.iqser.red.storage.commons.service.StorageService; 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 deleted file mode 100644 index 1217034c5..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/EntityLogMongoService.java +++ /dev/null @@ -1,240 +0,0 @@ -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<>(newEntityLogEntryDocuments); - toUpdate.retainAll(oldEntityLogEntryDocuments); - - 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.setType(entityLogEntryDocument.getType()); - entityLogEntry.setEntryType(entityLogEntryDocument.getEntryType()); - 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/resources/mongo/changelog/tenant/example-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.xml similarity index 100% rename from persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/example-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.xml 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..19ed8474c 100644 --- a/persistence-service-v1/persistence-service-server-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-server-v1/build.gradle.kts @@ -22,6 +22,7 @@ dependencies { api(project(":persistence-service-external-api-impl-v1")) api(project(":persistence-service-external-api-impl-v2")) api(project(":persistence-service-internal-api-impl-v1")) + api(project(":persistence-service-shared-mongo-v1")) api("com.iqser.red.commons:storage-commons:2.45.0") api("junit:junit:4.13.2") api("org.apache.logging.log4j:log4j-slf4j-impl:2.19.0") 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 dad11c1a6..13c0d772e 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 @@ -48,6 +48,7 @@ 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.liquibase.EnableMongoLiquibase; import com.knecon.fforesight.swaggercommons.SpringDocAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyAutoConfiguration; import com.knecon.fforesight.tenantcommons.MultiTenancyMessagingConfiguration; @@ -68,6 +69,7 @@ import lombok.extern.slf4j.Slf4j; @EnableCaching @EnableConfigurationProperties({FileManagementServiceSettings.class}) @EnableMongoRepositories(basePackages = "com.iqser.red.service.persistence") +@EnableMongoLiquibase @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, MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) @Import({PersistenceServiceExternalApiConfigurationV2.class, PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, MultiTenancyMessagingConfiguration.class}) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMapperTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMapperTest.java new file mode 100644 index 000000000..b1373adae --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMapperTest.java @@ -0,0 +1,63 @@ +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.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Objects; +import java.util.Optional; + +import org.junit.jupiter.api.Test; +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.service.v1.api.shared.model.analysislog.entitylog.EntityLog; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper.EntityLogMapper; + +import lombok.SneakyThrows; + +public class EntityLogMapperTest { + + private final EntityLogMapper mapper = EntityLogMapper.INSTANCE; + + private final String ENTITY_LOG = "files/entity-log/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.ENTITY_LOG.json"; + private static final String TEST_DOSSIER_ID = "91ce8e90-9aec-473c-b8c3-cbe16443ad34"; + private static final String TEST_FILE_ID = "b2cbdd4dca0aa1aa0ebbfc5cc1462df0"; + + + @Test + @SneakyThrows + public void testEntityLogMapper() { + + var file = new ClassPathResource(String.format(ENTITY_LOG)); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + + EntityLog entityLogBefore = objectMapper.readValue(file.getInputStream(), EntityLog.class); + + EntityLogDocument entityLogDocument = mapper.toLogDocument(TEST_DOSSIER_ID, TEST_FILE_ID, entityLogBefore); + + assertEquals(entityLogDocument.getDossierId(), TEST_DOSSIER_ID); + assertEquals(entityLogDocument.getFileId(), TEST_FILE_ID); + assertEquals(entityLogDocument.getId(), mapper.getLogId(TEST_DOSSIER_ID, TEST_FILE_ID)); + + Optional optionalEntityLogEntryDocument = entityLogDocument.getEntityLogEntryDocuments() + .stream() + .findFirst(); + + assertTrue(optionalEntityLogEntryDocument.isPresent()); + assertNotNull(optionalEntityLogEntryDocument.get().getEntityLogId()); + assertNotNull(optionalEntityLogEntryDocument.get().getEntryId()); + assertEquals(optionalEntityLogEntryDocument.get().getId(), + mapper.getLogEntryId(mapper.getLogId(TEST_DOSSIER_ID, TEST_FILE_ID), optionalEntityLogEntryDocument.get().getEntryId())); + + EntityLog entityLogAfter = mapper.fromLogDocument(entityLogDocument); + + assertEquals(entityLogBefore, entityLogAfter); + + } + +} 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 ac72f3129..a3fcc8d64 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 @@ -13,9 +13,9 @@ 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.service.v1.api.shared.model.analysislog.entitylog.EntityLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.EntityLogMongoService; import com.knecon.fforesight.tenantcommons.TenantContext; import lombok.SneakyThrows; 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 e926f6db1..b447b96cc 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 @@ -65,9 +65,6 @@ 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.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; @@ -101,6 +98,9 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist 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.persistence.service.v1.api.shared.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.EntityLogEntryDocumentRepository; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.EntityLogMongoService; 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; diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts new file mode 100644 index 000000000..778312476 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + id("com.iqser.red.service.java-conventions") + id("io.freefair.lombok") version "8.4" +} + +val springBootStarterVersion = "3.1.5" + +dependencies { + api(project(":persistence-service-shared-api-v1")) + api("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.16.0") + api("com.google.guava:guava:31.1-jre") + api("com.knecon.fforesight:mongo-database-commons:1.0-SNAPSHOT") + api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") + api("org.springframework.boot:spring-boot-starter-validation:3.1.3") + 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") + + implementation("org.mapstruct:mapstruct:1.5.5.Final") + annotationProcessor("org.mapstruct:mapstruct-processor:1.5.5.Final") +} + +description = "persistence-service-shared-mongo-v1" diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/SharedMongoAutoConfiguration.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/SharedMongoAutoConfiguration.java new file mode 100644 index 000000000..c6e6160c2 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/SharedMongoAutoConfiguration.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.mongo; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.context.annotation.ComponentScan; + +@ComponentScan +@AutoConfiguration +public class SharedMongoAutoConfiguration { + +} diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/document/EntityLogDocument.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/document/EntityLogDocument.java new file mode 100644 index 000000000..2e116f93b --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/document/EntityLogDocument.java @@ -0,0 +1,48 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.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.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; + + private int analysisNumber; + + @DBRef + private List entityLogEntryDocuments = new ArrayList<>(); + + private List legalBasis = new ArrayList<>(); + + private long dictionaryVersion = -1; + private long dossierDictionaryVersion = -1; + + private long rulesVersion = -1; + private long legalBasisVersion = -1; + +} 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-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/document/EntityLogEntryDocument.java similarity index 53% rename from persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/document/EntityLogEntryDocument.java rename to persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/document/EntityLogEntryDocument.java index 51cbfeb80..1aa784352 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-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/document/EntityLogEntryDocument.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.management.v1.processor.document; +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.document; import java.util.ArrayList; import java.util.HashSet; @@ -73,41 +73,4 @@ public class EntityLogEntryDocument { 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.setType(entityLogEntry.getType()); - 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/exception/EntityLogDocumentNotFoundException.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/exception/EntityLogDocumentNotFoundException.java similarity index 69% rename from persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/EntityLogDocumentNotFoundException.java rename to persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/exception/EntityLogDocumentNotFoundException.java index fe33d0df9..c83162c0f 100644 --- 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-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/exception/EntityLogDocumentNotFoundException.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.management.v1.processor.exception; +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.exception; public class EntityLogDocumentNotFoundException extends RuntimeException { diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogMapper.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogMapper.java new file mode 100644 index 000000000..fbcfddb71 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogMapper.java @@ -0,0 +1,62 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; + +@Mapper +public interface EntityLogMapper { + + EntityLogMapper INSTANCE = Mappers.getMapper(EntityLogMapper.class); + + + @Mapping(target = "entityLogEntry", source = "entityLogEntryDocuments") + EntityLog fromLogDocument(EntityLogDocument entityLogDocument); + + + @Mapping(target = "id", source = "entityLogEntryDocument.entryId") + EntityLogEntry fromLogEntryDocument(EntityLogEntryDocument entityLogEntryDocument); + + List toLogEntryDocuments(List entityLogEntries); + + + + @Mapping(target = "id", expression = "java(getLogId(dossierId, fileId))") + @Mapping(target = "entityLogEntryDocuments", expression ="java(toEntryDocumentList(getLogId(dossierId, fileId), entityLog.getEntityLogEntry()))") + EntityLogDocument toLogDocument(String dossierId, String fileId, EntityLog entityLog); + + + @Mapping(target = "id", expression = "java(getLogEntryId(entityLogId, entityLogEntry.getId()))") + @Mapping(target = "entryId", source = "entityLogEntry.id") + EntityLogEntryDocument toLogEntryDocument(String entityLogId, EntityLogEntry entityLogEntry); + + + default List toEntryDocumentList(String entityLogId, List entityLogEntries) { + + return entityLogEntries.stream() + .map(entityLogEntry -> toLogEntryDocument(entityLogId, entityLogEntry)) + .collect(Collectors.toList()); + } + + + default String getLogId(String dossierId, String fileId) { + + return dossierId + "/" + fileId; + } + + + default String getLogEntryId(String entityLogId, String entryId) { + + return entityLogId + "/" + entryId; + } + +} \ No newline at end of file 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-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java similarity index 74% rename from persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogDocumentRepository.java rename to persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java index d7aa23952..cf7207ad9 100644 --- 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-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository; +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository; import java.util.Optional; @@ -7,7 +7,7 @@ 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; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogDocument; @Repository public interface EntityLogDocumentRepository extends MongoRepository { 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-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java similarity index 82% rename from persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/mongo/repository/EntityLogEntryDocumentRepository.java rename to persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index c8e4f2015..3f34fda26 100644 --- 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-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.mongo.repository; +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository; import java.util.List; @@ -6,7 +6,7 @@ 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; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; @Repository public interface EntityLogEntryDocumentRepository extends MongoRepository { diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java new file mode 100644 index 000000000..766e49c55 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java @@ -0,0 +1,188 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.exception.EntityLogDocumentNotFoundException; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper.EntityLogMapper; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.EntityLogDocumentRepository; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.EntityLogEntryDocumentRepository; + +@Service +public class EntityLogMongoService { + + private final EntityLogDocumentRepository entityLogDocumentRepository; + private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + private final EntityLogMapper mapper = EntityLogMapper.INSTANCE; + + 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(mapper.toLogDocument(dossierId, fileId, entityLog)); + + entityLogEntryDocumentRepository.insert(entityLog.getEntityLogEntry() + .stream() + .map(entityLogEntry -> mapper.toLogEntryDocument(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(mapper.getLogId(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.getEntityLogEntryDocuments(); + + EntityLogDocument newEntityLogDocument = mapper.toLogDocument(dossierId, fileId, entityLog); + List newEntityLogEntryDocuments = newEntityLogDocument.getEntityLogEntryDocuments(); + + List toUpdate = new ArrayList<>(newEntityLogEntryDocuments); + toUpdate.retainAll(oldEntityLogEntryDocuments); + + 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 = mapper.getLogId(dossierId, fileId); + + entityLogDocumentRepository.deleteById(entityLogId); + + entityLogEntryDocumentRepository.deleteByEntityLogId(entityLogId); + } + + + public void insertEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = mapper.getLogId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> mapper.toLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocuments().addAll(entityLogEntryDocuments); + + entityLogEntryDocumentRepository.insert(entityLogEntryDocuments); + entityLogDocumentRepository.save(entityLogDocument); + } + + + public void updateEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = mapper.getLogId(dossierId, fileId); + + entityLogEntryDocumentRepository.saveAll(entityLogEntries.stream() + .map(entityLogEntry -> mapper.toLogEntryDocument(entityLogId, entityLogEntry)) + .toList()); + } + + public void deleteEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { + + String entityLogId = mapper.getLogId(dossierId, fileId); + + EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); + + List entityLogEntryDocuments = entityLogEntries.stream() + .map(entityLogEntry -> mapper.toLogEntryDocument(entityLogId, entityLogEntry)) + .toList(); + + entityLogDocument.getEntityLogEntryDocuments().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(mapper.getLogId(dossierId, fileId)) + .map(mapper::fromLogDocument); + } + + + public boolean entityLogDocumentExists(String dossierId, String fileId) { + + return entityLogDocumentRepository.existsById(mapper.getLogId(dossierId, fileId)); + } + + + public Optional findLatestAnalysisNumber(String dossierId, String fileId) { + + return entityLogDocumentRepository.findAnalysisNumberById(mapper.getLogId(dossierId, fileId)) + .map(EntityLogDocument::getAnalysisNumber); + } + + + public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(mapper.getLogId(dossierId, fileId)) + .stream() + .map(mapper::fromLogEntryDocument) + .toList(); + } + + + public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(mapper.getLogId(dossierId, fileId), analysisNumber) + .stream() + .map(mapper::fromLogEntryDocument) + .toList(); + } + + + public List findAllEntriesByDossierIdAndFileId(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogId(mapper.getLogId(dossierId, fileId)) + .stream() + .map(mapper::fromLogEntryDocument) + .toList(); + } + +} diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/test/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/IdentityTest.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/test/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/IdentityTest.java new file mode 100644 index 000000000..c85e7f3d5 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/test/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/IdentityTest.java @@ -0,0 +1,16 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.mongo; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; + +public class IdentityTest { + + @Test + public void mockTest() { + + int i = 1; + assertThat(i).isEqualTo(1); + } + +} diff --git a/settings.gradle.kts b/settings.gradle.kts index a59dc1263..cc67e98c7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -8,6 +8,7 @@ include(":persistence-service-internal-api-impl-v1") include(":persistence-service-external-api-v2") include(":persistence-service-external-api-impl-v2") include(":persistence-service-internal-api-v1") +include(":persistence-service-shared-mongo-v1") project(":persistence-service-processor-v1").projectDir = file("persistence-service-v1/persistence-service-processor-v1") project(":persistence-service-shared-api-v1").projectDir = file("persistence-service-v1/persistence-service-shared-api-v1") project(":persistence-service-external-api-impl-v1").projectDir = file("persistence-service-v1/persistence-service-external-api-impl-v1") @@ -17,3 +18,4 @@ project(":persistence-service-internal-api-impl-v1").projectDir = file("persiste project(":persistence-service-external-api-v2").projectDir = file("persistence-service-v1/persistence-service-external-api-v2") project(":persistence-service-external-api-impl-v2").projectDir = file("persistence-service-v1/persistence-service-external-api-impl-v2") project(":persistence-service-internal-api-v1").projectDir = file("persistence-service-v1/persistence-service-internal-api-v1") +project(":persistence-service-shared-mongo-v1").projectDir = file("persistence-service-v1/persistence-service-shared-mongo-v1") From 268e3cbf58c4f939fc67893568b0dd7742a033cb Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 26 Mar 2024 12:36:21 +0100 Subject: [PATCH 76/89] RED-8702: Explore document databases to store entityLog * added response model for entitylog and its entries --- .../impl/controller/EntityLogController.java | 21 ++--- .../external/resource/EntityLogResource.java | 11 +-- .../build.gradle.kts | 4 + .../mapper/EntityLogResponseMapper.java | 36 +++++++++ ....java => EntityLogDocumentMapperTest.java} | 7 +- .../tests/EntityLogResponseMapperTest.java | 51 +++++++++++++ .../entitylog/EntityLogEntryResponse.java | 76 +++++++++++++++++++ .../entitylog/EntityLogResponse.java | 34 +++++++++ ...pper.java => EntityLogDocumentMapper.java} | 5 +- .../mongo/service/EntityLogMongoService.java | 4 +- 10 files changed, 226 insertions(+), 23 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/mapper/EntityLogResponseMapper.java rename persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/{EntityLogMapperTest.java => EntityLogDocumentMapperTest.java} (94%) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogResponseMapperTest.java 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/EntityLogEntryResponse.java 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/EntityLogResponse.java rename persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/{EntityLogMapper.java => EntityLogDocumentMapper.java} (94%) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java index c92ef3673..0f71800a7 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java @@ -10,10 +10,12 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.iqser.red.service.persistence.management.v1.processor.mapper.EntityLogResponseMapper; import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService; import com.iqser.red.service.persistence.service.v1.api.external.resource.EntityLogResource; 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.EntityLogResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.FilteredEntityLogRequest; import lombok.RequiredArgsConstructor; @@ -24,28 +26,29 @@ public class EntityLogController implements EntityLogResource { private final EntityLogService entityLogService; private final AccessControlService accessControlService; + private final EntityLogResponseMapper entityLogResponseMapper = EntityLogResponseMapper.INSTANCE; @PreAuthorize("hasAuthority('" + READ_REDACTION_LOG + "')") - public EntityLog getEntityLog(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId, - @RequestParam(value = "excludedType", required = false) List excludedTypes, - @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed) { + public EntityLogResponse getEntityLog(@PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId, + @RequestParam(value = "excludedType", required = false) List excludedTypes, + @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed) { accessControlService.checkViewPermissionsToDossier(dossierId); accessControlService.validateFileResourceExistence(fileId); - return entityLogService.getEntityLog(dossierId, fileId, excludedTypes, includeUnprocessed); + return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLog(dossierId, fileId, excludedTypes, includeUnprocessed)); } @PreAuthorize("hasAuthority('" + READ_REDACTION_LOG + "')") - public EntityLog getFilteredEntityLog(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId, - @RequestBody FilteredEntityLogRequest filteredEntityLogRequest) { + public EntityLogResponse getFilteredEntityLog(@PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId, + @RequestBody FilteredEntityLogRequest filteredEntityLogRequest) { accessControlService.checkViewPermissionsToDossier(dossierId); accessControlService.validateFileResourceExistence(fileId); - return entityLogService.getFilteredEntityLog(dossierId, fileId, filteredEntityLogRequest); + return entityLogResponseMapper.toLogResponse(entityLogService.getFilteredEntityLog(dossierId, fileId, filteredEntityLogRequest)); } } diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java index c19542b7e..18beec5f3 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java @@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; 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.EntityLogResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.FilteredEntityLogRequest; import io.swagger.v3.oas.annotations.Operation; @@ -37,16 +38,16 @@ public interface EntityLogResource { "Gets the entity log for a given file. The flag includeUnprocessed will merge into the entity log all the unprocessed changes if it's set to true." + "Default value for the flag is false.") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) - EntityLog getEntityLog(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId, - @RequestParam(value = "excludedType", required = false) List excludedTypes, - @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed); + EntityLogResponse getEntityLog(@PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId, + @RequestParam(value = "excludedType", required = false) List excludedTypes, + @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed); @PostMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/filtered", produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Gets the entity log for a fileId grater than the specified date", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) - EntityLog getFilteredEntityLog(@PathVariable(DOSSIER_ID) String dossierId, + EntityLogResponse getFilteredEntityLog(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody FilteredEntityLogRequest filteredEntityLogRequest); 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 171830232..6e88d8e26 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -59,6 +59,10 @@ dependencies { api("com.opencsv:opencsv:5.4") api("org.springframework.cloud:spring-cloud-starter-openfeign:${springCloudVersion}") api("commons-validator:commons-validator:1.7") + + implementation("org.mapstruct:mapstruct:1.5.5.Final") + annotationProcessor("org.mapstruct:mapstruct-processor:1.5.5.Final") + testImplementation("org.springframework.amqp:spring-rabbit-test:3.0.2") testImplementation("org.testcontainers:postgresql:1.17.1") testImplementation("org.springframework.boot:spring-boot-starter-test:3.0.4") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/mapper/EntityLogResponseMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/mapper/EntityLogResponseMapper.java new file mode 100644 index 000000000..894bc46a5 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/mapper/EntityLogResponseMapper.java @@ -0,0 +1,36 @@ +package com.iqser.red.service.persistence.management.v1.processor.mapper; + +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntryResponse; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogResponse; + +@Mapper +public interface EntityLogResponseMapper { + + EntityLogResponseMapper INSTANCE = Mappers.getMapper(EntityLogResponseMapper.class); + + + EntityLog fromLogResponse(EntityLogResponse entityLogResponse); + + + EntityLogEntry fromLogEntryResponse(EntityLogEntryResponse entityLogEntryResponse); + + + List fromLogEntryResponses(List entityLogEntryResponses); + + + EntityLogResponse toLogResponse(EntityLog entityLog); + + + EntityLogEntryResponse toLogEntryResponse(EntityLogEntry entityLogEntry); + + + List toLogEntryResponses(List entityLogEntries); + +} \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMapperTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogDocumentMapperTest.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/EntityLogMapperTest.java rename to persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogDocumentMapperTest.java index b1373adae..f12f6be1c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogMapperTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogDocumentMapperTest.java @@ -4,7 +4,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import java.util.Objects; import java.util.Optional; import org.junit.jupiter.api.Test; @@ -15,13 +14,13 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogDocument; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; -import com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper.EntityLogMapper; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper.EntityLogDocumentMapper; import lombok.SneakyThrows; -public class EntityLogMapperTest { +public class EntityLogDocumentMapperTest { - private final EntityLogMapper mapper = EntityLogMapper.INSTANCE; + private final EntityLogDocumentMapper mapper = EntityLogDocumentMapper.INSTANCE; private final String ENTITY_LOG = "files/entity-log/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.ENTITY_LOG.json"; private static final String TEST_DOSSIER_ID = "91ce8e90-9aec-473c-b8c3-cbe16443ad34"; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogResponseMapperTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogResponseMapperTest.java new file mode 100644 index 000000000..094b44bb5 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/EntityLogResponseMapperTest.java @@ -0,0 +1,51 @@ +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.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Optional; + +import org.junit.jupiter.api.Test; +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.mapper.EntityLogResponseMapper; +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.EntityLogResponse; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper.EntityLogDocumentMapper; + +import lombok.SneakyThrows; + +public class EntityLogResponseMapperTest { + + private final EntityLogResponseMapper mapper = EntityLogResponseMapper.INSTANCE; + + private final String ENTITY_LOG = "files/entity-log/b2cbdd4dca0aa1aa0ebbfc5cc1462df0.ENTITY_LOG.json"; + + @Test + @SneakyThrows + public void testEntityLogMapper() { + + var file = new ClassPathResource(String.format(ENTITY_LOG)); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + + EntityLog entityLogBefore = objectMapper.readValue(file.getInputStream(), EntityLog.class); + + EntityLogResponse entityLogResponseBefore = mapper.toLogResponse(entityLogBefore); + + EntityLog entityLogAfter = mapper.fromLogResponse(entityLogResponseBefore); + + assertEquals(entityLogBefore, entityLogAfter); + + EntityLogResponse entityLogResponseAfter = mapper.toLogResponse(entityLogAfter); + + assertEquals(entityLogResponseBefore, entityLogResponseAfter); + + } + +} 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/EntityLogEntryResponse.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/EntityLogEntryResponse.java new file mode 100644 index 000000000..1efb2758d --- /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/EntityLogEntryResponse.java @@ -0,0 +1,76 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.FieldDefaults; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode +@FieldDefaults(level = AccessLevel.PRIVATE) +public class EntityLogEntryResponse { + + String id; + String type; + EntryType entryType; + EntryState state; + String value; + String reason; + String matchedRule; + String legalBasis; + + @Deprecated + boolean imported; + + List containingNodeId; + String closestHeadline; + String section; + + @Deprecated + float[] color; + + @Builder.Default + List positions = new ArrayList<>(); + + String textBefore; + String textAfter; + + int startOffset; + int endOffset; + + boolean imageHasTransparency; + + boolean dictionaryEntry; + boolean dossierDictionaryEntry; + + boolean excluded; + + @EqualsAndHashCode.Exclude + @Builder.Default + List changes = new ArrayList<>(); + + @EqualsAndHashCode.Exclude + @Builder.Default + List manualChanges = new ArrayList<>(); + + @Builder.Default + Set engines = new HashSet<>(); + + @Builder.Default + Set reference = new HashSet<>(); + + @Builder.Default + Set importedRedactionIntersections = new HashSet<>(); + +} 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/EntityLogResponse.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/EntityLogResponse.java new file mode 100644 index 000000000..ee4df8a65 --- /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/EntityLogResponse.java @@ -0,0 +1,34 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog; + +import java.util.ArrayList; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class EntityLogResponse { + + /** + * 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. + */ + private long analysisVersion; + + /** + * Which analysis created this redactionLog. + */ + private int analysisNumber; + + private List entityLogEntry = new ArrayList<>(); + private List legalBasis = new ArrayList<>(); + + private long dictionaryVersion = -1; + private long dossierDictionaryVersion = -1; + private long rulesVersion = -1; + private long legalBasisVersion = -1; + +} diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogMapper.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java similarity index 94% rename from persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogMapper.java rename to persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java index fbcfddb71..c5752edc6 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogMapper.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java @@ -5,7 +5,6 @@ import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; @@ -14,9 +13,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.En import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; @Mapper -public interface EntityLogMapper { +public interface EntityLogDocumentMapper { - EntityLogMapper INSTANCE = Mappers.getMapper(EntityLogMapper.class); + EntityLogDocumentMapper INSTANCE = Mappers.getMapper(EntityLogDocumentMapper.class); @Mapping(target = "entityLogEntry", source = "entityLogEntryDocuments") diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java index 766e49c55..a1a8ab373 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java @@ -11,7 +11,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogDocument; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogEntryDocument; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.exception.EntityLogDocumentNotFoundException; -import com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper.EntityLogMapper; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper.EntityLogDocumentMapper; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.EntityLogDocumentRepository; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository.EntityLogEntryDocumentRepository; @@ -20,7 +20,7 @@ public class EntityLogMongoService { private final EntityLogDocumentRepository entityLogDocumentRepository; private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; - private final EntityLogMapper mapper = EntityLogMapper.INSTANCE; + private final EntityLogDocumentMapper mapper = EntityLogDocumentMapper.INSTANCE; public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository) { From e7e9d8823848c5bcec2cff08b8496e19d141d0d5 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 26 Mar 2024 14:13:31 +0100 Subject: [PATCH 77/89] RED-8702: Explore document databases to store entityLog * removed observed * added migration --- .../migration/StorageToMongoCopyService.java | 80 +++++++++++++++++++ .../migrations/StorageToMongoMigration17.java | 37 +++++++++ .../service/FileManagementStorageService.java | 8 +- 3 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/StorageToMongoCopyService.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/StorageToMongoMigration17.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/StorageToMongoCopyService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/StorageToMongoCopyService.java new file mode 100644 index 000000000..ad948611e --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/StorageToMongoCopyService.java @@ -0,0 +1,80 @@ +package com.iqser.red.service.persistence.management.v1.processor.migration; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; +import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; +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.management.v1.processor.utils.StorageIdUtils; +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.dossier.file.FileType; +import com.iqser.red.storage.commons.exception.StorageException; +import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; +import com.iqser.red.storage.commons.service.StorageService; +import com.knecon.fforesight.tenantcommons.TenantContext; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +public class StorageToMongoCopyService { + + private final FileManagementStorageService fileManagementStorageService; + private final StorageService storageService; + + private final DossierRepository dossierRepository; + private final FileRepository fileRepository; + + + @SneakyThrows + public void copy() { + + List dossierEntities = dossierRepository.findAll(); + List files = new ArrayList<>(); + dossierEntities.forEach(dossierEntity -> { + List byDossierId = fileRepository.findByDossierId(dossierEntity.getId()); + byDossierId.forEach(file -> files.add(new DossierFile(dossierEntity.getId(), file.getId()))); + }); + + for (DossierFile dossierFile : files) { + log.info("Reading dossier {} file {} from storage", dossierFile.dossierId, dossierFile.fileId); + Optional entityLogFromStorage = getEntityLogFromStorageForMigration(dossierFile.dossierId, dossierFile.fileId); + if (entityLogFromStorage.isPresent()) { + log.info("File found, now saving in mongodb"); + fileManagementStorageService.saveEntityLog(dossierFile.dossierId, dossierFile.fileId, entityLogFromStorage.get()); + log.info("Deleting old file from storage"); + fileManagementStorageService.deleteObject(dossierFile.dossierId, dossierFile.fileId, FileType.ENTITY_LOG); + } + } + } + + + private Optional getEntityLogFromStorageForMigration(String dossierId, String fileId) { + + try { + return Optional.ofNullable(storageService.readJSONObject(TenantContext.getTenantId(), + StorageIdUtils.getStorageId(dossierId, fileId, FileType.ENTITY_LOG), + EntityLog.class)); + } catch (StorageObjectDoesNotExist e) { + log.debug("EntityLog does not exist"); + } catch (StorageException e) { + log.debug(e.getMessage()); + } + return Optional.empty(); + } + + + public record DossierFile(String dossierId, String fileId) { + + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/StorageToMongoMigration17.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/StorageToMongoMigration17.java new file mode 100644 index 000000000..3fc03b85d --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/StorageToMongoMigration17.java @@ -0,0 +1,37 @@ +package com.iqser.red.service.persistence.management.v1.processor.migration.migrations; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.migration.Migration; +import com.iqser.red.service.persistence.management.v1.processor.migration.StorageToMongoCopyService; + +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Setter +@Service +public class StorageToMongoMigration17 extends Migration { + + private final StorageToMongoCopyService storageToMongoCopyService; + + private static final String NAME = "Migration for entity log storage from s3 to mongodb"; + private static final long VERSION = 17; + + + public StorageToMongoMigration17(StorageToMongoCopyService storageToMongoCopyService) { + + super(NAME, VERSION); + this.storageToMongoCopyService = storageToMongoCopyService; + } + + + @Override + protected void migrate() { + + log.info("Migration: Copying all files for all dossiers to mongodb"); + storageToMongoCopyService.copy(); + + } + +} 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 4ce1b0764..b315ee8be 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,7 +25,6 @@ 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; @@ -101,7 +100,6 @@ public class FileManagementStorageService { } - @Observed(name = "FileManagementStorageService", contextualName = "get-entity-log") public EntityLog getEntityLog(String dossierId, String fileId) { return entityLogMongoService.findEntityLogByDossierIdAndFileId(dossierId, fileId) @@ -109,14 +107,14 @@ 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); @@ -174,7 +172,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 45d75dc147b00352af2a03fd9d29d8b27019cdd9 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 26 Mar 2024 17:16:31 +0100 Subject: [PATCH 78/89] RED-8702: Explore document databases to store entityLog * added new update service for partial updates to entity log documents without modification to entry documents --- .../tests/EntityLogMongoServiceTest.java | 32 ++++++++++++++++ .../entitylog/EntityLogChanges.java | 6 ++- .../mongo/mapper/EntityLogDocumentMapper.java | 1 - .../EntityLogDocumentRepository.java | 5 +++ .../EntityLogEntryDocumentRepository.java | 9 +++++ .../EntityLogDocumentUpdateService.java | 35 ++++++++++++++++++ .../mongo/service/EntityLogMongoService.java | 37 +++++++++++++++++-- 7 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogDocumentUpdateService.java 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 a3fcc8d64..220c265a1 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 @@ -256,4 +256,36 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT } + + + @Test + @SneakyThrows + public void testUpdateEntityLogWithoutEntries() { + + var file = new ClassPathResource(ENTITY_LOG3_BEFORE); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + + EntityLog entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class); + + entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog); + + Optional found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID); + assertTrue(found.isPresent()); + assertEquals(found.get().getEntityLogEntry().size(), 1706); + + file = new ClassPathResource(ENTITY_LOG3_AFTER); + + entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class); + entityLog.setAnalysisNumber(entityLog.getAnalysisNumber() + 1); + + entityLogMongoService.saveEntityLogWithoutEntries(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog); + + found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID); + assertTrue(found.isPresent()); + assertEquals(found.get().getEntityLogEntry().size(), 1706); + assertEquals(found.get().getAnalysisNumber(), 9); + + } + } 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/EntityLogChanges.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/EntityLogChanges.java index 1bfb03b4b..e133d701a 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/EntityLogChanges.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/EntityLogChanges.java @@ -1,5 +1,8 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog; +import java.util.ArrayList; +import java.util.List; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -12,6 +15,7 @@ import lombok.NoArgsConstructor; public class EntityLogChanges { private EntityLog entityLog; - private boolean hasChanges; + private List newEntityLogEntries = new ArrayList<>(); + private List updatedEntityLogEntries = new ArrayList<>(); } diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java index c5752edc6..57c55082d 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/mapper/EntityLogDocumentMapper.java @@ -21,7 +21,6 @@ public interface EntityLogDocumentMapper { @Mapping(target = "entityLogEntry", source = "entityLogEntryDocuments") EntityLog fromLogDocument(EntityLogDocument entityLogDocument); - @Mapping(target = "id", source = "entityLogEntryDocument.entryId") EntityLogEntry fromLogEntryDocument(EntityLogEntryDocument entityLogEntryDocument); diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java index cf7207ad9..9f6c9e990 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java @@ -14,4 +14,9 @@ public interface EntityLogDocumentRepository extends MongoRepository findAnalysisNumberById(@Param("_id") String id); + + + @Query(value = "{ '_id': ?0 }", fields = "{ 'entityLogEntryDocuments': 0 }") + Optional findEntityLogDocumentWithoutEntriesById(String id); + } diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index 3f34fda26..a73896f0e 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -20,6 +20,15 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogId(String entityLogId); + + @Query("{ 'entityLogId' : ?0, 'containingNodeId' : { $exists: true, $not: { $size: 0 } } }") + List findByEntityLogIdAndContainingNodeIdNotEmpty(String entityLogId); + + + @Query("{ 'id' : { $in: ?0 }, 'containingNodeId' : { $exists: true, $not: { $size: 0 } } }") + List findAllByIdAndContainingNodeIdNotEmpty(List ids); + + @Query(value = "{ 'entityLogId' : ?0}", delete = true) void deleteByEntityLogId(String entityLogId); } diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogDocumentUpdateService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogDocumentUpdateService.java new file mode 100644 index 000000000..8302db0f1 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogDocumentUpdateService.java @@ -0,0 +1,35 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.mongo.service; + +import org.bson.Document; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.EntityLogDocument; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.mapper.EntityLogDocumentMapper; + +@Service +public class EntityLogDocumentUpdateService { + + private final MongoTemplate mongoTemplate; + private final EntityLogDocumentMapper mapper = EntityLogDocumentMapper.INSTANCE; + + + public EntityLogDocumentUpdateService(MongoTemplate mongoTemplate) {this.mongoTemplate = mongoTemplate;} + + + public void updateEntityLogDocumentWithoutEntries(String dossierId, String fileId, EntityLog entityLog) { + + Document doc = new Document(); + mongoTemplate.getConverter().write(mapper.toLogDocument(dossierId, fileId, entityLog), doc); + doc.remove("entityLogEntryDocuments"); + Update update = new Update(); + doc.forEach(update::set); + mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(mapper.getLogId(dossierId, fileId))), update, EntityLogDocument.class); + } + +} diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java index a1a8ab373..b8137bd98 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java @@ -1,6 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.shared.mongo.service; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Optional; @@ -20,12 +21,16 @@ public class EntityLogMongoService { private final EntityLogDocumentRepository entityLogDocumentRepository; private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; + private final EntityLogDocumentUpdateService entityLogDocumentUpdateService; private final EntityLogDocumentMapper mapper = EntityLogDocumentMapper.INSTANCE; - public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository) { + + public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository, + EntityLogDocumentUpdateService entityLogDocumentUpdateService) { this.entityLogDocumentRepository = entityLogDocumentRepository; this.entityLogEntryDocumentRepository = entityLogEntryDocumentRepository; + this.entityLogDocumentUpdateService = entityLogDocumentUpdateService; } @@ -110,6 +115,7 @@ public class EntityLogMongoService { .toList()); } + public void deleteEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { String entityLogId = mapper.getLogId(dossierId, fileId); @@ -159,6 +165,7 @@ public class EntityLogMongoService { } + public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(mapper.getLogId(dossierId, fileId)) @@ -177,12 +184,36 @@ public class EntityLogMongoService { } - public List findAllEntriesByDossierIdAndFileId(String dossierId, String fileId) { + public List findAllEntityLogEntriesWithContainingNodeIdsWithEntryIdsIn(String dossierId, String fileId, Collection entryIds) { - return entityLogEntryDocumentRepository.findByEntityLogId(mapper.getLogId(dossierId, fileId)) + String entityLogId = mapper.getLogId(dossierId, fileId); + List ids = entryIds.stream() + .map(entryId -> mapper.getLogEntryId(entityLogId, entryId)) + .toList(); + + return entityLogEntryDocumentRepository.findAllByIdAndContainingNodeIdNotEmpty(ids) .stream() .map(mapper::fromLogEntryDocument) .toList(); } + public List findAllEntityLogEntriesWithContainingNodeIds(String dossierId, String fileId) { + + return entityLogEntryDocumentRepository.findByEntityLogIdAndContainingNodeIdNotEmpty(mapper.getLogId(dossierId, fileId)) + .stream() + .map(mapper::fromLogEntryDocument) + .toList(); + } + + public Optional findEntityLogWithoutEntries(String dossierId, String fileId) { + return entityLogDocumentRepository.findEntityLogDocumentWithoutEntriesById(mapper.getLogId(dossierId, fileId)) + .map(mapper::fromLogDocument); + } + + + public void saveEntityLogWithoutEntries(String dossierId, String fileId, EntityLog entityLog) { + entityLogDocumentUpdateService.updateEntityLogDocumentWithoutEntries(dossierId, fileId, entityLog); + } + + } From d447a08c69106520ce63261cfc9755f9aaf7f787 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 27 Mar 2024 17:35:39 +0100 Subject: [PATCH 79/89] RED-8702: Explore document databases to store entityLog * added new repository queries for redaction-service partial entry querying --- .../tests/EntityLogMongoServiceTest.java | 4 +- .../entitylog/EntityLogChanges.java | 4 ++ .../EntityLogDocumentRepository.java | 7 ++- .../EntityLogEntryDocumentRepository.java | 16 ++++++- .../mongo/service/EntityLogMongoService.java | 48 +++++++++++++++---- 5 files changed, 63 insertions(+), 16 deletions(-) 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 220c265a1..88a604235 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 @@ -125,10 +125,10 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT var latest = entityLogMongoService.findLatestAnalysisNumber(TEST_DOSSIER_ID, TEST_FILE3_ID) .orElseThrow(); - var latestChangedEntries = entityLogMongoService.findAllEntityLogEntriesByAnalysisNumber(TEST_DOSSIER_ID, TEST_FILE3_ID, latest); + var latestChangedEntries = entityLogMongoService.findEntityLogEntriesByAnalysisNumber(TEST_DOSSIER_ID, TEST_FILE3_ID, latest); assertEquals(latestChangedEntries.size(), 490); - var manuallyChangedEntries = entityLogMongoService.findAllEntityLogEntriesWithManualChanges(TEST_DOSSIER_ID, TEST_FILE3_ID); + var manuallyChangedEntries = entityLogMongoService.findEntityLogEntriesWithManualChanges(TEST_DOSSIER_ID, TEST_FILE3_ID); assertEquals(manuallyChangedEntries.size(), 1014); String NEW_ENTITY_LOG_ENTRY = """ 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/EntityLogChanges.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/EntityLogChanges.java index e133d701a..dcf5ee6fc 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/EntityLogChanges.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/EntityLogChanges.java @@ -18,4 +18,8 @@ public class EntityLogChanges { private List newEntityLogEntries = new ArrayList<>(); private List updatedEntityLogEntries = new ArrayList<>(); + public boolean hasChanges() { + return !newEntityLogEntries.isEmpty() || !updatedEntityLogEntries.isEmpty(); + } + } diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java index 9f6c9e990..e86c5c124 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogDocumentRepository.java @@ -4,7 +4,6 @@ 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.service.v1.api.shared.mongo.document.EntityLogDocument; @@ -12,11 +11,11 @@ import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.En @Repository public interface EntityLogDocumentRepository extends MongoRepository { - @Query(value = "{ '_id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") - Optional findAnalysisNumberById(@Param("_id") String id); + @Query(value = "{ 'id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") + Optional findAnalysisNumberById(String id); - @Query(value = "{ '_id': ?0 }", fields = "{ 'entityLogEntryDocuments': 0 }") + @Query(value = "{ 'id': ?0 }", fields = "{ 'entityLogEntryDocuments': 0 }") Optional findEntityLogDocumentWithoutEntriesById(String id); } diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index a73896f0e..0872dc0bd 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -1,6 +1,8 @@ package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository; +import java.util.Collection; import java.util.List; +import java.util.Set; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; @@ -14,9 +16,11 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogIdAndManualChangesNotEmpty(String entityLogId); + @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") List findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); + @Query("{ 'entityLogId' : ?0}") List findByEntityLogId(String entityLogId); @@ -25,10 +29,18 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogIdAndContainingNodeIdNotEmpty(String entityLogId); - @Query("{ 'id' : { $in: ?0 }, 'containingNodeId' : { $exists: true, $not: { $size: 0 } } }") - List findAllByIdAndContainingNodeIdNotEmpty(List ids); + @Query("{ 'entityLogId' : ?0 , 'containingNodeId' : { $exists: true, $eq: { $size: 0 } } }") + List findByEntityLogIdAndContainingNodeIdEmpty(String entityLogId); + + + @Query(value = "{ 'id' : { $in: ?0 }, 'containingNodeId' : { $exists: true, $not: { $size: 0 } } }", fields = "{ 'containingNodeId.0': 1 }") + List findContainingNodeIdForAllByIdAndContainingNodeIdNotEmpty(List ids); + + @Query("{ 'entityLogId' : ?0, $or: [ { 'containingNodeId' : { $exists: true, $eq: { $size: 0 } } }, { 'containingNodeId.0' : { $in: ?1 } } ] }") + List findByEntityLogIdAndNotContainedOrFirstContainedByElementInList(String entityLogId, Collection containingNodeIds); @Query(value = "{ 'entityLogId' : ?0}", delete = true) void deleteByEntityLogId(String entityLogId); + } diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java index b8137bd98..fb8c87a97 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; import org.springframework.stereotype.Service; @@ -25,7 +27,8 @@ public class EntityLogMongoService { private final EntityLogDocumentMapper mapper = EntityLogDocumentMapper.INSTANCE; - public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository, + public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, + EntityLogEntryDocumentRepository entityLogEntryDocumentRepository, EntityLogDocumentUpdateService entityLogDocumentUpdateService) { this.entityLogDocumentRepository = entityLogDocumentRepository; @@ -165,8 +168,7 @@ public class EntityLogMongoService { } - - public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { + public List findEntityLogEntriesWithManualChanges(String dossierId, String fileId) { return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(mapper.getLogId(dossierId, fileId)) .stream() @@ -175,7 +177,7 @@ public class EntityLogMongoService { } - public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { + public List findEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(mapper.getLogId(dossierId, fileId), analysisNumber) .stream() @@ -184,20 +186,48 @@ public class EntityLogMongoService { } - public List findAllEntityLogEntriesWithContainingNodeIdsWithEntryIdsIn(String dossierId, String fileId, Collection entryIds) { + public Set findFirstContainingNodeIdForEachEntry(String dossierId, String fileId, Collection entryIds) { String entityLogId = mapper.getLogId(dossierId, fileId); List ids = entryIds.stream() .map(entryId -> mapper.getLogEntryId(entityLogId, entryId)) .toList(); - return entityLogEntryDocumentRepository.findAllByIdAndContainingNodeIdNotEmpty(ids) + return entityLogEntryDocumentRepository.findContainingNodeIdForAllByIdAndContainingNodeIdNotEmpty(ids) + .stream() + .filter(entityLogEntryDocument -> !entityLogEntryDocument.getContainingNodeId().isEmpty()) + .map((EntityLogEntryDocument entityLogEntryDocument) -> entityLogEntryDocument.getContainingNodeId() + .get(0)) + .collect(Collectors.toSet()); + } + + + public List findEntityLogEntriesNotContainedOrFirstContainedByElementInList(String dossierId, String fileId, Collection nodeIds) { + + String entityLogId = mapper.getLogId(dossierId, fileId); + + return entityLogEntryDocumentRepository.findByEntityLogIdAndNotContainedOrFirstContainedByElementInList(entityLogId, nodeIds) .stream() .map(mapper::fromLogEntryDocument) .toList(); } - public List findAllEntityLogEntriesWithContainingNodeIds(String dossierId, String fileId) { + + public List findEntityLogEntriesWithEntryIdsIn(String dossierId, String fileId, Collection entryIds) { + + String entityLogId = mapper.getLogId(dossierId, fileId); + List ids = entryIds.stream() + .map(entryId -> mapper.getLogEntryId(entityLogId, entryId)) + .toList(); + + return entityLogEntryDocumentRepository.findAllById(ids) + .stream() + .map(mapper::fromLogEntryDocument) + .toList(); + } + + + public List findEntityLogEntriesWithContainingNodeIds(String dossierId, String fileId) { return entityLogEntryDocumentRepository.findByEntityLogIdAndContainingNodeIdNotEmpty(mapper.getLogId(dossierId, fileId)) .stream() @@ -205,15 +235,17 @@ public class EntityLogMongoService { .toList(); } + public Optional findEntityLogWithoutEntries(String dossierId, String fileId) { + return entityLogDocumentRepository.findEntityLogDocumentWithoutEntriesById(mapper.getLogId(dossierId, fileId)) .map(mapper::fromLogDocument); } public void saveEntityLogWithoutEntries(String dossierId, String fileId, EntityLog entityLog) { + entityLogDocumentUpdateService.updateEntityLogDocumentWithoutEntries(dossierId, fileId, entityLog); } - } From 7212b436930178beab6f96f9bb32046e83b68f1c Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 28 Mar 2024 11:21:46 +0100 Subject: [PATCH 80/89] RED-8702: Explore document databases to store entityLog * added new endpoints to query entitylog given pages and given starting analysisnumber, also refactored filter logic so that the filter is applied on query * refactored tests for above changes --- .../impl/controller/EntityLogController.java | 22 ++++++++ .../external/resource/EntityLogResource.java | 22 +++++++- .../migration/SaasMigrationService.java | 10 +--- .../AnalysisFlagsCalculationService.java | 2 +- .../processor/service/EntityLogService.java | 55 ++++++++++++++----- .../service/FileManagementStorageService.java | 31 ++++++++++- .../ManualRedactionMapper.java | 4 +- .../ManualRedactionService.java | 2 +- .../ManualRedactionUndoService.java | 4 +- .../src/main/resources/application.yaml | 1 - .../v1/server/integration/tests/FileTest.java | 2 +- .../tests/ManualRedactionTest.java | 34 ++++++------ .../src/test/resources/application.yml | 1 - .../EntityLogEntryDocumentRepository.java | 18 +++++- .../mongo/service/EntityLogMongoService.java | 41 ++++++++++++++ 15 files changed, 196 insertions(+), 53 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java index 0f71800a7..d9039d480 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java @@ -51,4 +51,26 @@ public class EntityLogController implements EntityLogResource { return entityLogResponseMapper.toLogResponse(entityLogService.getFilteredEntityLog(dossierId, fileId, filteredEntityLogRequest)); } + + @PreAuthorize("hasAuthority('" + READ_REDACTION_LOG + "')") + public EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId, + @RequestBody List pageNumbers) { + + accessControlService.checkViewPermissionsToDossier(dossierId); + accessControlService.validateFileResourceExistence(fileId); + return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLogWithEntriesOnPages(dossierId, fileId, pageNumbers)); + } + + + @PreAuthorize("hasAuthority('" + READ_REDACTION_LOG + "')") + public EntityLogResponse getEntityLogWithEntriesAnalysedAfterIteration(@PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId, + @PathVariable(ANALYSIS_NUMBER) Integer analysisNumber) { + + accessControlService.checkViewPermissionsToDossier(dossierId); + accessControlService.validateFileResourceExistence(fileId); + return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLogWithEntriesHavingAnalysisNumberGreaterEquals(dossierId, fileId, analysisNumber)); + } + } diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java index 18beec5f3..9cdb576e0 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java @@ -29,6 +29,8 @@ public interface EntityLogResource { String DOSSIER_ID = "dossierId"; String DOSSIER_ID_PATH_VARIABLE = "/{" + DOSSIER_ID + "}"; + String ANALYSIS_NUMBER = "analysisNumber"; + String ANALYSIS_NUMBER_PATH_VARIABLE = "/{" + ANALYSIS_NUMBER + "}"; String FALSE = "false"; @@ -45,10 +47,24 @@ public interface EntityLogResource { @PostMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/filtered", produces = MediaType.APPLICATION_JSON_VALUE) - @Operation(summary = "Gets the entity log for a fileId grater than the specified date", description = "None") + @Operation(summary = "Gets the entity log for a fileId greater than the specified date", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) EntityLogResponse getFilteredEntityLog(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId, - @RequestBody FilteredEntityLogRequest filteredEntityLogRequest); + @PathVariable(FILE_ID) String fileId, + @RequestBody FilteredEntityLogRequest filteredEntityLogRequest); + + + @PostMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/pages", produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "Gets the entity log for a fileId with all entities found on the given page numbers", description = "None") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) + EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody List pageNumbers); + + + @PostMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + ANALYSIS_NUMBER_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "Gets the entity log for a fileId with all entities being analysed in or after iteration with given number", description = "None") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) + EntityLogResponse getEntityLogWithEntriesAnalysedAfterIteration(@PathVariable(DOSSIER_ID) String dossierId, + @PathVariable(FILE_ID) String fileId, + @PathVariable(ANALYSIS_NUMBER) Integer analysisNumber); } 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 890c3efba..6df54ba82 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 @@ -163,7 +163,7 @@ public class SaasMigrationService implements TenantSyncService { saasMigrationStatusPersistenceService.updateStatus(fileId, SaasMigrationStatus.DOCUMENT_FILES_MIGRATED); - if(fileStatusPersistenceService.getStatus(fileId).getWorkflowStatus().equals(WorkflowStatus.APPROVED)) { + if (fileStatusPersistenceService.getStatus(fileId).getWorkflowStatus().equals(WorkflowStatus.APPROVED)) { manualRedactionProviderService.convertUnprocessedAddToDictionariesToLocalChanges(fileId); } @@ -209,12 +209,10 @@ public class SaasMigrationService implements TenantSyncService { } - //todo: 8702 private boolean entityLogMigrationFilesExist(String dossierId, String fileId) { - return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, ENTITY_LOG)) && storageService.objectExists( - TenantContext.getTenantId(), - StorageIdUtils.getStorageId(dossierId, fileId, FileType.MIGRATED_IDS)); + return storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, ENTITY_LOG)) + && storageService.objectExists(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, FileType.MIGRATED_IDS)); } @@ -259,8 +257,6 @@ public class SaasMigrationService implements TenantSyncService { } - - private int addManualRedactionEntries(List manualRedactionEntriesToAdd) { return manualRedactionService.addManualRedactionEntries(manualRedactionEntriesToAdd, true); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/AnalysisFlagsCalculationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/AnalysisFlagsCalculationService.java index 526c45d9c..98d251bb7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/AnalysisFlagsCalculationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/AnalysisFlagsCalculationService.java @@ -47,7 +47,7 @@ public class AnalysisFlagsCalculationService { long startTime = System.currentTimeMillis(); var file = fileStatusPersistenceService.getStatus(fileId); - var entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), true); + var entityLog = entityLogService.getEntityLog(dossierId, fileId, true); var viewedPagesForCurrentAssignee = viewedPagesPersistenceService.findViewedPages(fileId, file.getAssignee()); 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 2273df9bd..ce8cbeda6 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 @@ -41,27 +41,36 @@ public class EntityLogService { @Observed(name = "EntityLogService", contextualName = "get-entity-log") public EntityLog getEntityLog(String dossierId, String fileId) { - return getEntityLog(dossierId, fileId, Collections.emptyList(), false); + EntityLog entityLog = fileManagementStorageService.getEntityLog(dossierId, fileId); + postProcessEntityLog(dossierId, fileId, entityLog, false); + return entityLog; + } + + @Observed(name = "EntityLogService", contextualName = "get-entity-log") + public EntityLog getEntityLog(String dossierId, String fileId, boolean includeUnProcessed) { + + EntityLog entityLog = fileManagementStorageService.getEntityLog(dossierId, fileId); + postProcessEntityLog(dossierId, fileId, entityLog, includeUnProcessed); + return entityLog; + } + @Observed(name = "EntityLogService", contextualName = "get-entity-log") + public EntityLog getEntityLog(String dossierId, String fileId, List excludedTypes, boolean includeUnProcessed) { + + EntityLog entityLog = fileManagementStorageService.getEntityLogExcludeTypes(dossierId, fileId, excludedTypes); + postProcessEntityLog(dossierId, fileId, entityLog, includeUnProcessed); + return entityLog; } - @Observed(name = "EntityLogService", contextualName = "get-entity-log") - public EntityLog getEntityLog(String dossierId, String fileId, List excludedTypes, boolean includeUnprocessed) { + @Observed(name = "EntityLogService", contextualName = "post-process-entity-log") + private void postProcessEntityLog(String dossierId, String fileId, EntityLog entityLog, boolean includeUnprocessed) { var fileStatus = fileStatusService.getStatus(fileId); - EntityLog entityLog; - - entityLog = fileManagementStorageService.getEntityLog(dossierId, fileId); - if (fileStatus.isExcluded()) { entityLog.setEntityLogEntry(new ArrayList<>()); } - if (excludedTypes != null) { - entityLog.getEntityLogEntry().removeIf(entry -> excludedTypes.contains(entry.getType())); - } - if (includeUnprocessed) { DossierEntity dossier = dossierService.getDossierById(dossierId); ManualRedactions unprocessedManualRedactions = manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.unprocessedOnly()); @@ -81,18 +90,18 @@ public class EntityLogService { Map commentCountPerAnnotationId = commentService.getCommentCounts(fileId); entityLog.getEntityLogEntry() .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getId(), 0))); - - return entityLog; } + @Observed(name = "EntityLogService", contextualName = "get-entity-log") public EntityLog getFilteredEntityLog(String dossierId, String fileId, FilteredEntityLogRequest filteredEntityLogRequest) { if (filteredEntityLogRequest.getSpecifiedDate() == null) { filteredEntityLogRequest.setSpecifiedDate(OffsetDateTime.MIN); } - var entityLog = getEntityLog(dossierId, fileId, filteredEntityLogRequest.getExcludedTypes(), false); + EntityLog entityLog = fileManagementStorageService.getEntityLogExcludeTypes(dossierId, fileId, filteredEntityLogRequest.getExcludedTypes()); + postProcessEntityLog(dossierId, fileId, entityLog, false); var entityLogEntry = entityLog.getEntityLogEntry(); Iterator it = entityLogEntry.iterator(); @@ -122,4 +131,22 @@ public class EntityLogService { return entityLog; } + + @Observed(name = "EntityLogService", contextualName = "get-entity-log") + public EntityLog getEntityLogWithEntriesOnPages(String dossierId, String fileId, List pageNumbers) { + + EntityLog entityLog = fileManagementStorageService.getEntityLogStartingWithEntriesOnPages(dossierId, fileId, pageNumbers); + postProcessEntityLog(dossierId, fileId, entityLog, false); + return entityLog; + } + + + @Observed(name = "EntityLogService", contextualName = "get-entity-log") + public EntityLog getEntityLogWithEntriesHavingAnalysisNumberGreaterEquals(String dossierId, String fileId, Integer analysisNumber) { + + EntityLog entityLog = fileManagementStorageService.getEntityLogStartingFromAnalysisNumber(dossierId, fileId, analysisNumber); + postProcessEntityLog(dossierId, fileId, entityLog, false); + return 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 b315ee8be..46f7395dc 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 @@ -6,6 +6,7 @@ import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; +import java.util.List; import org.apache.commons.io.IOUtils; import org.springframework.stereotype.Service; @@ -103,11 +104,39 @@ public class FileManagementStorageService { public EntityLog getEntityLog(String dossierId, String fileId) { return entityLogMongoService.findEntityLogByDossierIdAndFileId(dossierId, fileId) - .orElseThrow(() -> new NotFoundException(String.format("EntityLog does not exist for Dossier ID \"%s\" and File ID \"%s\"!", dossierId, fileId))); + .orElseThrow(() -> new NotFoundException(getEntityLogNotFoundErrorMessage(dossierId, fileId))); } + public EntityLog getEntityLogExcludeTypes(String dossierId, String fileId, List excludedTypes) { + + return entityLogMongoService.findEntityLogWithoutExcludedEntryTypes(dossierId, fileId, excludedTypes) + .orElseThrow(() -> new NotFoundException(getEntityLogNotFoundErrorMessage(dossierId, fileId))); + + } + + + public EntityLog getEntityLogStartingFromAnalysisNumber(String dossierId, String fileId, Integer analysisNumber) { + + return entityLogMongoService.findEntityLogWithEntriesStartingFromAnalysisNumber(dossierId, fileId, analysisNumber) + .orElseThrow(() -> new NotFoundException(getEntityLogNotFoundErrorMessage(dossierId, fileId))); + + } + public EntityLog getEntityLogStartingWithEntriesOnPages(String dossierId, String fileId, List pageNumbers) { + + return entityLogMongoService.findEntityLogWithEntriesOnPages(dossierId, fileId, pageNumbers) + .orElseThrow(() -> new NotFoundException(getEntityLogNotFoundErrorMessage(dossierId, fileId))); + + } + + + private static String getEntityLogNotFoundErrorMessage(String dossierId, String fileId) { + + return 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) { 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 664b9fc3c..44eafc3f8 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 @@ -83,7 +83,7 @@ public class ManualRedactionMapper { boolean includeUnprocessed) { List requests = new ArrayList<>(); - EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed); + EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, includeUnprocessed); for (var removeRedactionRequest : removeRedactionRequests) { EntityLogEntry entityLogEntry = getEntityLogEntry(entityLog, removeRedactionRequest.getAnnotationId()); var removeRedactionRequestBuilder = RemoveRedactionRequest.builder() @@ -142,7 +142,7 @@ public class ManualRedactionMapper { Set recategorizationRequests, boolean includeUnprocessed) { - EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed); + EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, includeUnprocessed); List requests = new ArrayList<>(); for (RecategorizationRequestModel recategorizationRequest : recategorizationRequests) { EntityLogEntry entityLogEntry = getEntityLogEntry(entityLog, recategorizationRequest.getAnnotationId()); 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 c6fd8a3e9..d8ae08700 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 @@ -277,7 +277,7 @@ public class ManualRedactionService { List response = new ArrayList<>(); List manualResizeRedactionEntities = new ArrayList<>(); - EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed); + EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, includeUnprocessed); for (ResizeRedactionRequest resizeRedactionRequest : resizeRedactionRequests) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java index 467256b36..88c371f4a 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 @@ -206,7 +206,7 @@ public class ManualRedactionUndoService { private void deleteRecategorization(String dossierId, String fileId, List annotationIds, boolean includeUnprocessed) { dossierPersistenceService.getAndValidateDossier(dossierId); - EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), includeUnprocessed); + EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, includeUnprocessed); for (var annotationId : annotationIds) { ManualRecategorizationEntity recategorizationEntity = recategorizationPersistenceService.findRecategorization(fileId, annotationId); @@ -284,7 +284,7 @@ public class ManualRedactionUndoService { private void deleteRemoveRedaction(String dossierId, String fileId, List annotationIds) { dossierPersistenceService.getAndValidateDossier(dossierId); - EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, Collections.emptyList(), true); + EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, true); for (String annotationId : annotationIds) { 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 cd7a95353..79125b8b8 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 @@ -40,7 +40,6 @@ spring: data: mongodb: auto-index-creation: true - # todo: multi-tenancy database: redaction host: ${MONGODB_HOST:localhost} port: 27017 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 7ebcf07e7..781199c37 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 @@ -384,7 +384,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest { 0, 0); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isEqualTo(1); 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 6ecb7df18..cfdb23c37 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 @@ -141,7 +141,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), Mockito.anyBoolean())).thenReturn(entityLog); Assertions.assertThrows(FeignException.Forbidden.class, () -> manualRedactionClient.removeRedactionBulk(dossier.getId(), @@ -335,7 +335,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), @@ -395,7 +395,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), @@ -450,7 +450,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), @@ -545,7 +545,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); 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); + when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), anyBoolean())).thenReturn(entityLog1); var entityLog2 = new EntityLog(1, 1, @@ -564,7 +564,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); 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); + when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), anyBoolean())).thenReturn(entityLog2); // resize redaction in dossier 1 var resizeRedactionDosAndAddToAllDos = ResizeRedactionRequestModel.builder() @@ -710,7 +710,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); 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); + when(entityLogService.getEntityLog(eq(file1.getDossierId()), eq(file1.getFileId()), anyBoolean())).thenReturn(entityLog1); var entityLog2 = new EntityLog(1, 1, @@ -729,7 +729,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); 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); + when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), anyBoolean())).thenReturn(entityLog2); // resize redaction in dossier 1 var resizeRedactionDosAndAddToAllDos = ResizeRedactionRequestModel.builder() @@ -898,7 +898,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); 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); + when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), anyBoolean())).thenReturn(entityLog2); // resize redaction in dossier dict var resizeRedactionDosTemp = ResizeRedactionRequestModel.builder() @@ -1064,7 +1064,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); 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); + when(entityLogService.getEntityLog(eq(file2.getDossierId()), eq(file2.getFileId()), anyBoolean())).thenReturn(entityLog2); // resize redaction in dossier dict var resizeRedactionDosTemp = ResizeRedactionRequestModel.builder() @@ -1188,7 +1188,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), @@ -1273,7 +1273,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), @@ -1453,7 +1453,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); manualRedactionClient.removeRedactionBulk(dossier.getId(), file.getId(), @@ -1652,7 +1652,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), @@ -1957,7 +1957,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0); fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); var recatModel = RecategorizationRequestModel.builder() .type(type.getType()) @@ -2045,8 +2045,8 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { 0, 0, 0); - fileManagementStorageService.storeJSONObject(dossier.getId(), file.getId(), FileType.ENTITY_LOG, entityLog); - when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), any(), anyBoolean())).thenReturn(entityLog); + fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog); + when(entityLogService.getEntityLog(Mockito.any(), Mockito.any(), anyBoolean())).thenReturn(entityLog); var recatModel = RecategorizationRequestModel.builder() .type(type.getType()) 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 7d6a5ccea..43b0e0ce5 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 @@ -22,7 +22,6 @@ spring: data: mongodb: auto-index-creation: true - # todo: multi-tenancy database: redaction host: ${MONGODB_HOST:localhost} port: 27017 diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index 0872dc0bd..622f45bc7 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -2,7 +2,6 @@ package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository import java.util.Collection; import java.util.List; -import java.util.Set; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; @@ -21,6 +20,10 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogIdAndChangesAnalysisNumber(String entityLogId, int analysisNumber); + @Query("{ 'entityLogId' : ?0, 'changes.analysisNumber' : ?1 }") + List findByEntityLogIdAndChangesAnalysisNumberGreaterEquals(String entityLogId, Integer analysisNumber); + + @Query("{ 'entityLogId' : ?0}") List findByEntityLogId(String entityLogId); @@ -34,13 +37,24 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findContainingNodeIdForAllByIdAndContainingNodeIdNotEmpty(List ids); + List findContainingNodeIdForAllByIdAndContainingNodeIdNotEmpty(List ids); + @Query("{ 'entityLogId' : ?0, $or: [ { 'containingNodeId' : { $exists: true, $eq: { $size: 0 } } }, { 'containingNodeId.0' : { $in: ?1 } } ] }") List findByEntityLogIdAndNotContainedOrFirstContainedByElementInList(String entityLogId, Collection containingNodeIds); + @Query("{'entityLogId' : ?0, 'positions': { $elemMatch: { 'pageNumber': { $in: ?0 } } } }") + List findByEntityLogIdAndPositionsPageNumberIn(String entityLogId, List pageNumbers); + + + @Query(value = "{ 'entityLogId': ?0, 'type': { '$not': { '$in': ?1 } } }") + List findEntityLogDocumentByIdAndExcludedTypes(String entityLogId, List excludedTypes); + + @Query(value = "{ 'entityLogId' : ?0}", delete = true) void deleteByEntityLogId(String entityLogId); + + } diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java index fb8c87a97..46b6d9859 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java @@ -243,6 +243,47 @@ public class EntityLogMongoService { } + public Optional findEntityLogWithoutExcludedEntryTypes(String dossierId, String fileId, List excludedTypes) { + + String entityLogId = mapper.getLogId(dossierId, fileId); + Optional optionalEntityLog = entityLogDocumentRepository.findEntityLogDocumentWithoutEntriesById(entityLogId) + .map(mapper::fromLogDocument); + optionalEntityLog.ifPresent(entityLog -> entityLog.getEntityLogEntry() + .addAll(entityLogEntryDocumentRepository.findEntityLogDocumentByIdAndExcludedTypes(entityLogId, excludedTypes) + .stream() + .map(mapper::fromLogEntryDocument) + .toList())); + return optionalEntityLog; + } + + + public Optional findEntityLogWithEntriesOnPages(String dossierId, String fileId, List pageNumbers) { + + String entityLogId = mapper.getLogId(dossierId, fileId); + Optional optionalEntityLog = entityLogDocumentRepository.findEntityLogDocumentWithoutEntriesById(entityLogId) + .map(mapper::fromLogDocument); + optionalEntityLog.ifPresent(entityLog -> entityLog.getEntityLogEntry() + .addAll(entityLogEntryDocumentRepository.findByEntityLogIdAndPositionsPageNumberIn(entityLogId, pageNumbers) + .stream() + .map(mapper::fromLogEntryDocument) + .toList())); + return optionalEntityLog; + } + + public Optional findEntityLogWithEntriesStartingFromAnalysisNumber(String dossierId, String fileId, Integer analysisNumber) { + + String entityLogId = mapper.getLogId(dossierId, fileId); + Optional optionalEntityLog = entityLogDocumentRepository.findEntityLogDocumentWithoutEntriesById(entityLogId) + .map(mapper::fromLogDocument); + optionalEntityLog.ifPresent(entityLog -> entityLog.getEntityLogEntry() + .addAll(entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumberGreaterEquals(entityLogId, analysisNumber) + .stream() + .map(mapper::fromLogEntryDocument) + .toList())); + return optionalEntityLog; + } + + public void saveEntityLogWithoutEntries(String dossierId, String fileId, EntityLog entityLog) { entityLogDocumentUpdateService.updateEntityLogDocumentWithoutEntries(dossierId, fileId, entityLog); From 9ab0910a265f850b7425c75827d755f9a0134fbc Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 28 Mar 2024 11:50:46 +0100 Subject: [PATCH 81/89] RED-8702: Explore document databases to store entityLog * changed indices --- .../service/FileManagementStorageService.java | 2 +- .../tenant/2-create-indices-for-entries.xml | 23 +++-- .../example-create-indices-for-entries.xml | 84 +++++++++++++++++++ .../tests/EntityLogMongoServiceTest.java | 2 +- .../mongo/service/EntityLogMongoService.java | 4 +- 5 files changed, 104 insertions(+), 11 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/example-create-indices-for-entries.xml 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 46f7395dc..12f36e5ba 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 @@ -140,7 +140,7 @@ public class FileManagementStorageService { @SneakyThrows public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { - entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog); + entityLogMongoService.upsertEntityLog(dossierId, fileId, entityLog); } 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 65a215858..6667d00ce 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 @@ -10,24 +10,35 @@ { - "_id": 1, - "positions.pageNumber": 1 + "entityLogId": 1, } - {name: "positions_pageNumber_index"} + {name: "entityLogId_index"} { - "_id": 1, - "changes.analysisNumber": -1 + "entityLogId": 1, + "positions.pageNumber": 1 } - {name: "changes_analysisNumber_index"} + {name: "entityLogId_positionsPageNumber_index"} + + + + + + { + "entityLogId": 1, + "containingNodeId": 1 + } + + + {name: "entityLogId_containingNodeId_index"} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/example-create-indices-for-entries.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/example-create-indices-for-entries.xml new file mode 100644 index 000000000..d32c50108 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/example-create-indices-for-entries.xml @@ -0,0 +1,84 @@ + + + + + + + { + "entityLogId": 1, + } + + + {name: "entityLogId_index"} + + + + + + { + "entityLogId": 1, + "positions.pageNumber": 1 + } + + + {name: "entityLogId_positionsPageNumber_index"} + + + + + + { + "entityLogId": 1, + "changes.analysisNumber": -1 + } + + + {name: "entityLogId_changesAnalysisNumber_index"} + + + + + + { + "entityLogId": 1, + "containingNodeId": 1 + } + + + {name: "entityLogId_containingNodeId_index"} + + + + + + { + "id": 1, + "containingNodeId": 1 + } + + + {name: "id_containingNodeId_index"} + + + + + + { + "entityLogId": 1, + "type": 1 + } + + + {name: "entityLogId_type_index"} + + + + + + + \ No newline at end of file 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 88a604235..8867fc416 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 @@ -247,7 +247,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class); entityLog.setAnalysisNumber(entityLog.getAnalysisNumber() + 1); - entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog); + entityLogMongoService.upsertEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog); found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID); assertTrue(found.isPresent()); diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java index 46b6d9859..4b7e62238 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java @@ -49,12 +49,10 @@ public class EntityLogMongoService { // 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) { + public void upsertEntityLog(String dossierId, String fileId, EntityLog entityLog) { Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(mapper.getLogId(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; } From 2dfbf3f1f370dbc7b39194a4b4f7e176688471c0 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 28 Mar 2024 12:17:43 +0100 Subject: [PATCH 82/89] RED-8702: Explore document databases to store entityLog * updated version for eval --- .../persistence-service-shared-mongo-v1/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts index 778312476..a6235f711 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts @@ -9,7 +9,7 @@ dependencies { api(project(":persistence-service-shared-api-v1")) api("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.16.0") api("com.google.guava:guava:31.1-jre") - api("com.knecon.fforesight:mongo-database-commons:1.0-SNAPSHOT") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo-eval") api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-validation:3.1.3") testImplementation("com.iqser.red.commons:test-commons:2.1.0") From b64a28bb30da3c9f0426b3a19e1a9832845b706d Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 28 Mar 2024 12:29:25 +0100 Subject: [PATCH 83/89] RED-8702: Explore document databases to store entityLog * updated version for eval --- .../v1/processor/service/EntityLogService.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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 ce8cbeda6..c22dd8261 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 @@ -65,20 +65,21 @@ public class EntityLogService { @Observed(name = "EntityLogService", contextualName = "post-process-entity-log") private void postProcessEntityLog(String dossierId, String fileId, EntityLog entityLog, boolean includeUnprocessed) { + EntityLog processedEntityLog = entityLog; var fileStatus = fileStatusService.getStatus(fileId); if (fileStatus.isExcluded()) { - entityLog.setEntityLogEntry(new ArrayList<>()); + processedEntityLog.setEntityLogEntry(new ArrayList<>()); } if (includeUnprocessed) { DossierEntity dossier = dossierService.getDossierById(dossierId); ManualRedactions unprocessedManualRedactions = manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.unprocessedOnly()); - entityLog = entityLogMergeService.mergeEntityLog(unprocessedManualRedactions, entityLog, dossier); + processedEntityLog = entityLogMergeService.mergeEntityLog(unprocessedManualRedactions, processedEntityLog, dossier); } if (fileStatus.getExcludedPages() != null && !fileStatus.getExcludedPages().isEmpty()) { - entityLog.getEntityLogEntry() + processedEntityLog.getEntityLogEntry() .removeIf(entry -> entry.getPositions() .stream() .anyMatch(position -> fileStatus.getExcludedPages().contains(position.getPageNumber())) // @@ -88,7 +89,7 @@ public class EntityLogService { } Map commentCountPerAnnotationId = commentService.getCommentCounts(fileId); - entityLog.getEntityLogEntry() + processedEntityLog.getEntityLogEntry() .forEach(entityLogEntry -> entityLogEntry.setNumberOfComments(commentCountPerAnnotationId.getOrDefault(entityLogEntry.getId(), 0))); } From 3eaeac84657b1500cc088d92ce416e14ae918e87 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 28 Mar 2024 14:06:16 +0100 Subject: [PATCH 84/89] RED-8702: Explore document databases to store entityLog * bugfix --- .../mongo/repository/EntityLogEntryDocumentRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index 622f45bc7..703737020 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -36,7 +36,7 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogIdAndContainingNodeIdEmpty(String entityLogId); - @Query(value = "{ 'id' : { $in: ?0 }, 'containingNodeId' : { $exists: true, $not: { $size: 0 } } }", fields = "{ 'containingNodeId.0': 1 }") + @Query(value = "{ 'id' : { $in: ?0 }, 'containingNodeId' : { $exists: true, $not: { $size: 0 } } }", fields = "{ 'containingNodeId': 1 }") List findContainingNodeIdForAllByIdAndContainingNodeIdNotEmpty(List ids); From d29de295a88676960c0d1b1048777665b622f7a7 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 28 Mar 2024 15:44:50 +0100 Subject: [PATCH 85/89] RED-8702: Explore document databases to store entityLog * bugfix --- .../mongo/repository/EntityLogEntryDocumentRepository.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index 703737020..8b072a581 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -47,8 +47,7 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogIdAndPositionsPageNumberIn(String entityLogId, List pageNumbers); - - @Query(value = "{ 'entityLogId': ?0, 'type': { '$not': { '$in': ?1 } } }") + @Query(value = "{ 'entityLogId': ?0, 'type': { '$nin': ?1 } }") List findEntityLogDocumentByIdAndExcludedTypes(String entityLogId, List excludedTypes); From 1f9b592ac1cd38b889f8fb90991e426bffd74992 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Thu, 28 Mar 2024 16:34:03 +0100 Subject: [PATCH 86/89] RED-8702: Explore document databases to store entityLog * bugfix --- .../api/impl/controller/EntityLogController.java | 5 +++-- .../v1/api/external/resource/EntityLogResource.java | 10 +++++----- .../repository/EntityLogEntryDocumentRepository.java | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java index d9039d480..476ef796e 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java @@ -2,6 +2,7 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_REDACTION_LOG; +import java.util.ArrayList; import java.util.List; import org.springframework.security.access.prepost.PreAuthorize; @@ -37,7 +38,7 @@ public class EntityLogController implements EntityLogResource { accessControlService.checkViewPermissionsToDossier(dossierId); accessControlService.validateFileResourceExistence(fileId); - return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLog(dossierId, fileId, excludedTypes, includeUnprocessed)); + return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLog(dossierId, fileId, excludedTypes == null ? new ArrayList<>() : excludedTypes, includeUnprocessed)); } @@ -55,7 +56,7 @@ public class EntityLogController implements EntityLogResource { @PreAuthorize("hasAuthority('" + READ_REDACTION_LOG + "')") public EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestBody List pageNumbers) { + @RequestParam(value = "pageNumbers") List pageNumbers) { accessControlService.checkViewPermissionsToDossier(dossierId); accessControlService.validateFileResourceExistence(fileId); diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java index 9cdb576e0..1d61fe213 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/EntityLogResource.java @@ -42,11 +42,11 @@ public interface EntityLogResource { @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) EntityLogResponse getEntityLog(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestParam(value = "excludedType", required = false) List excludedTypes, + @RequestParam(value = "excludedTypes", required = false) List excludedTypes, @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed); - @PostMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/filtered", produces = MediaType.APPLICATION_JSON_VALUE) + @GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/filtered", produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Gets the entity log for a fileId greater than the specified date", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) EntityLogResponse getFilteredEntityLog(@PathVariable(DOSSIER_ID) String dossierId, @@ -54,13 +54,13 @@ public interface EntityLogResource { @RequestBody FilteredEntityLogRequest filteredEntityLogRequest); - @PostMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/pages", produces = MediaType.APPLICATION_JSON_VALUE) + @GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/pages", produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Gets the entity log for a fileId with all entities found on the given page numbers", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) - EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody List pageNumbers); + EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = "pageNumbers") List pageNumbers); - @PostMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + ANALYSIS_NUMBER_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) + @GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + ANALYSIS_NUMBER_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Gets the entity log for a fileId with all entities being analysed in or after iteration with given number", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) EntityLogResponse getEntityLogWithEntriesAnalysedAfterIteration(@PathVariable(DOSSIER_ID) String dossierId, diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index 8b072a581..96d38a0d2 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -44,7 +44,7 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogIdAndNotContainedOrFirstContainedByElementInList(String entityLogId, Collection containingNodeIds); - @Query("{'entityLogId' : ?0, 'positions': { $elemMatch: { 'pageNumber': { $in: ?0 } } } }") + @Query("{'entityLogId' : ?0, 'positions': { $elemMatch: { 'pageNumber': { $in: ?1 } } } }") List findByEntityLogIdAndPositionsPageNumberIn(String entityLogId, List pageNumbers); @Query(value = "{ 'entityLogId': ?0, 'type': { '$nin': ?1 } }") From bede56b38ad959297a8495df01a20dcf16e4e80d Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 2 Apr 2024 14:20:04 +0200 Subject: [PATCH 87/89] RED-8702: Explore document databases to store entityLog * bugfix --- .../api/impl/controller/EntityLogController.java | 2 +- .../persistence-service-processor-v1/build.gradle.kts | 2 +- .../ManualRedactionTypeRenameMigration15.java | 2 +- .../utils/AbstractPersistenceServerServiceTest.java | 10 ++-------- .../build.gradle.kts | 2 +- 5 files changed, 6 insertions(+), 12 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java index 476ef796e..3cd51310f 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/EntityLogController.java @@ -33,7 +33,7 @@ public class EntityLogController implements EntityLogResource { @PreAuthorize("hasAuthority('" + READ_REDACTION_LOG + "')") public EntityLogResponse getEntityLog(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestParam(value = "excludedType", required = false) List excludedTypes, + @RequestParam(value = "excludedTypes", required = false) List excludedTypes, @RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed) { accessControlService.checkViewPermissionsToDossier(dossierId); 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 6e88d8e26..b8b3ec863 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -36,7 +36,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:database-tenant-commons:maverick-mongo") + api("com.knecon.fforesight:database-tenant-commons:maverick-mongo-eval") 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") 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 8494b32e2..6286db200 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 @@ -92,7 +92,7 @@ public class ManualRedactionTypeRenameMigration15 extends Migration { } } } - fileManagementStorageService.saveEntityLog(file.getDossierId(), file.getId(), entityLog); + fileManagementStorageService.storeJSONObject(file.getDossierId(), file.getId(), FileType.ENTITY_LOG, entityLog); } } 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 b447b96cc..52c8888fd 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 @@ -104,14 +104,12 @@ import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.Ent 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.mongo.database.commons.liquibase.MongoTenantCreatedEvent; -import com.knecon.fforesight.mongo.database.commons.liquibase.MongoTenantCreatedListener; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import com.knecon.fforesight.tenantcommons.TenantContext; +import com.knecon.fforesight.tenantcommons.TenantCreatedListener; import com.knecon.fforesight.tenantcommons.TenantsClient; +import com.knecon.fforesight.tenantcommons.events.TenantCreatedEvent; import com.knecon.fforesight.tenantcommons.model.AuthDetails; import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; import com.knecon.fforesight.tenantcommons.model.MongoDBConnection; @@ -238,8 +236,6 @@ public abstract class AbstractPersistenceServerServiceTest { protected EncryptionDecryptionService encryptionDecryptionService; @Autowired protected TenantCreatedListener tenantCreatedListener; - @Autowired - protected MongoTenantCreatedListener mongoTenantCreatedListener; private static String[] getAllRoles() { @@ -421,9 +417,7 @@ public abstract class AbstractPersistenceServerServiceTest { try { tenantCreatedListener.createTenant(new TenantCreatedEvent("redaction")); - mongoTenantCreatedListener.createTenant(new MongoTenantCreatedEvent("redaction")); tenantCreatedListener.createTenant(new TenantCreatedEvent("redaction2")); - mongoTenantCreatedListener.createTenant(new MongoTenantCreatedEvent("redaction2")); } catch (Exception e) { e.printStackTrace(); diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts index a6235f711..3306d3dc3 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts @@ -9,7 +9,7 @@ dependencies { api(project(":persistence-service-shared-api-v1")) api("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.16.0") api("com.google.guava:guava:31.1-jre") - api("com.knecon.fforesight:mongo-database-commons:maverick-mongo-eval") + api("com.knecon.fforesight:mongo-database-commons:maverick-mongo-eval2") api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-validation:3.1.3") testImplementation("com.iqser.red.commons:test-commons:2.1.0") From 1806e37d93dbe06258c508a2e6c5cc52502bd367 Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Tue, 2 Apr 2024 16:29:06 +0200 Subject: [PATCH 88/89] RED-8702: Explore document databases to store entityLog * refactoring --- .../mongo/repository/EntityLogEntryDocumentRepository.java | 2 +- .../v1/api/shared/mongo/service/EntityLogMongoService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java index 96d38a0d2..b7afc6026 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/EntityLogEntryDocumentRepository.java @@ -21,7 +21,7 @@ public interface EntityLogEntryDocumentRepository extends MongoRepository findByEntityLogIdAndChangesAnalysisNumberGreaterEquals(String entityLogId, Integer analysisNumber); + List findByEntityLogIdAndChangesAnalysisNumberEquals(String entityLogId, Integer analysisNumber); @Query("{ 'entityLogId' : ?0}") diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java index 4b7e62238..ff3d38da3 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/EntityLogMongoService.java @@ -274,7 +274,7 @@ public class EntityLogMongoService { Optional optionalEntityLog = entityLogDocumentRepository.findEntityLogDocumentWithoutEntriesById(entityLogId) .map(mapper::fromLogDocument); optionalEntityLog.ifPresent(entityLog -> entityLog.getEntityLogEntry() - .addAll(entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumberGreaterEquals(entityLogId, analysisNumber) + .addAll(entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumberEquals(entityLogId, analysisNumber) .stream() .map(mapper::fromLogEntryDocument) .toList())); From 19c95a1a1dd218434a73bc677ccd291d2630a26b Mon Sep 17 00:00:00 2001 From: maverickstuder Date: Wed, 3 Apr 2024 10:20:03 +0200 Subject: [PATCH 89/89] RED-8702: Explore document databases to store entityLog * versions updated --- .../persistence-service-processor-v1/build.gradle.kts | 4 ++-- .../persistence-service-shared-mongo-v1/build.gradle.kts | 2 +- 2 files changed, 3 insertions(+), 3 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 b8b3ec863..7ceec0874 100644 --- a/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-processor-v1/build.gradle.kts @@ -36,8 +36,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:maverick-mongo-eval") - api("com.knecon.fforesight:keycloak-commons:maverick-mongo") + api("com.knecon.fforesight:database-tenant-commons:0.23.0") + api("com.knecon.fforesight:keycloak-commons:0.27.0") 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") diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts b/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts index 3306d3dc3..e7271c0f4 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/build.gradle.kts @@ -9,7 +9,7 @@ dependencies { api(project(":persistence-service-shared-api-v1")) api("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.16.0") api("com.google.guava:guava:31.1-jre") - api("com.knecon.fforesight:mongo-database-commons:maverick-mongo-eval2") + api("com.knecon.fforesight:mongo-database-commons:0.5.0") api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}") api("org.springframework.boot:spring-boot-starter-validation:3.1.3") testImplementation("com.iqser.red.commons:test-commons:2.1.0")