Merge branch 'RED-7891' into 'master'
RED-7891: Fixed Nullpointer when adding importedRedactions Closes RED-7891 See merge request redactmanager/redaction-service!192
This commit is contained in:
commit
d116a2bea3
@ -16,7 +16,7 @@ val layoutParserVersion = "0.74.0"
|
|||||||
val jacksonVersion = "2.15.2"
|
val jacksonVersion = "2.15.2"
|
||||||
val droolsVersion = "9.44.0.Final"
|
val droolsVersion = "9.44.0.Final"
|
||||||
val pdfBoxVersion = "3.0.0"
|
val pdfBoxVersion = "3.0.0"
|
||||||
val persistenceServiceVersion = "2.231.0"
|
val persistenceServiceVersion = "2.242.0"
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
all {
|
all {
|
||||||
|
|||||||
@ -2,18 +2,21 @@ package com.iqser.red.service.redaction.v1.server.service;
|
|||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedaction;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Point;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Rectangle;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
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.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.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.EntryType;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Position;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Position;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Point;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Rectangle;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.imported.ImportedRedaction;
|
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.imported.ImportedRedactions;
|
|
||||||
import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService;
|
import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService;
|
||||||
|
|
||||||
import io.micrometer.core.annotation.Timed;
|
import io.micrometer.core.annotation.Timed;
|
||||||
@ -85,7 +88,7 @@ public class ImportedRedactionService {
|
|||||||
.type(IMPORTED_REDACTION_TYPE)
|
.type(IMPORTED_REDACTION_TYPE)
|
||||||
.imported(true)
|
.imported(true)
|
||||||
.redacted(true)
|
.redacted(true)
|
||||||
.positions(importedRedaction.getPositions())
|
.positions(importedRedaction.getPositions().stream().map(this::normalize).collect(Collectors.toList()))
|
||||||
.color(getColor(IMPORTED_REDACTION_TYPE, dossierTemplateId))
|
.color(getColor(IMPORTED_REDACTION_TYPE, dossierTemplateId))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
@ -106,7 +109,7 @@ public class ImportedRedactionService {
|
|||||||
.type(IMPORTED_REDACTION_TYPE).entryType(EntryType.ENTITY)
|
.type(IMPORTED_REDACTION_TYPE).entryType(EntryType.ENTITY)
|
||||||
.imported(true)
|
.imported(true)
|
||||||
.state(EntryState.APPLIED)
|
.state(EntryState.APPLIED)
|
||||||
.positions(toPositions(importedRedaction.getPositions()))
|
.positions(importedRedaction.getPositions())
|
||||||
.color(getColor(IMPORTED_REDACTION_TYPE, dossierTemplateId))
|
.color(getColor(IMPORTED_REDACTION_TYPE, dossierTemplateId))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
@ -138,7 +141,7 @@ public class ImportedRedactionService {
|
|||||||
if (importedRedactions.getImportedRedactions().containsKey(rectangle.getPage())) {
|
if (importedRedactions.getImportedRedactions().containsKey(rectangle.getPage())) {
|
||||||
var importedRedactionsOnPage = importedRedactions.getImportedRedactions().get(rectangle.getPage());
|
var importedRedactionsOnPage = importedRedactions.getImportedRedactions().get(rectangle.getPage());
|
||||||
for (ImportedRedaction importedRedaction : importedRedactionsOnPage) {
|
for (ImportedRedaction importedRedaction : importedRedactionsOnPage) {
|
||||||
for (Rectangle importedRedactionPosition : importedRedaction.getPositions()) {
|
for (Position importedRedactionPosition : importedRedaction.getPositions()) {
|
||||||
if (rectOverlap(normalizedRectangle, normalize(importedRedactionPosition))) {
|
if (rectOverlap(normalizedRectangle, normalize(importedRedactionPosition))) {
|
||||||
if (redactionLogEntry.getImportedRedactionIntersections() == null) {
|
if (redactionLogEntry.getImportedRedactionIntersections() == null) {
|
||||||
redactionLogEntry.setImportedRedactionIntersections(new HashSet<>());
|
redactionLogEntry.setImportedRedactionIntersections(new HashSet<>());
|
||||||
@ -159,7 +162,7 @@ public class ImportedRedactionService {
|
|||||||
if (importedRedactions.getImportedRedactions().containsKey(rectangle.getPageNumber())) {
|
if (importedRedactions.getImportedRedactions().containsKey(rectangle.getPageNumber())) {
|
||||||
var importedRedactionsOnPage = importedRedactions.getImportedRedactions().get(rectangle.getPageNumber());
|
var importedRedactionsOnPage = importedRedactions.getImportedRedactions().get(rectangle.getPageNumber());
|
||||||
for (ImportedRedaction importedRedaction : importedRedactionsOnPage) {
|
for (ImportedRedaction importedRedaction : importedRedactionsOnPage) {
|
||||||
for (Rectangle importedRedactionPosition : importedRedaction.getPositions()) {
|
for (Position importedRedactionPosition : importedRedaction.getPositions()) {
|
||||||
if (rectOverlap(normalizedRectangle, normalize(importedRedactionPosition))) {
|
if (rectOverlap(normalizedRectangle, normalize(importedRedactionPosition))) {
|
||||||
if (redactionLogEntry.getImportedRedactionIntersections() == null) {
|
if (redactionLogEntry.getImportedRedactionIntersections() == null) {
|
||||||
redactionLogEntry.setImportedRedactionIntersections(new HashSet<>());
|
redactionLogEntry.setImportedRedactionIntersections(new HashSet<>());
|
||||||
|
|||||||
@ -4,13 +4,13 @@ import java.io.File;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
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.componentlog.ComponentLog;
|
||||||
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.EntityLog;
|
||||||
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.FileType;
|
||||||
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.RedactionLog;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.imported.ImportedRedactions;
|
|
||||||
import com.iqser.red.service.redaction.v1.server.client.model.NerEntitiesModel;
|
import com.iqser.red.service.redaction.v1.server.client.model.NerEntitiesModel;
|
||||||
import com.iqser.red.service.redaction.v1.server.model.document.DocumentData;
|
import com.iqser.red.service.redaction.v1.server.model.document.DocumentData;
|
||||||
import com.iqser.red.service.redaction.v1.server.utils.exception.NotFoundException;
|
import com.iqser.red.service.redaction.v1.server.utils.exception.NotFoundException;
|
||||||
|
|||||||
@ -263,6 +263,32 @@ public class RedactionIntegrationTest extends AbstractRedactionIntegrationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void importedRedactionsTest() throws IOException {
|
||||||
|
|
||||||
|
ClassPathResource importedRedactionClasspathResource = new ClassPathResource("files/ImportedRedactions/18 Chlorothalonil RAR 08 Volume 3CA B 6a Oct 2017.IMPORTED_REDACTIONS.json");
|
||||||
|
storageService.storeObject(TenantContext.getTenantId(), RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.IMPORTED_REDACTIONS), importedRedactionClasspathResource.getInputStream());
|
||||||
|
|
||||||
|
|
||||||
|
AnalyzeRequest request = uploadFileToStorage("files/ImportedRedactions/18 Chlorothalonil RAR 08 Volume 3CA B 6a Oct 2017.pdf");
|
||||||
|
System.out.println("Start Full integration test");
|
||||||
|
analyzeDocumentStructure(LayoutParsingType.REDACT_MANAGER, request);
|
||||||
|
System.out.println("Finished structure analysis");
|
||||||
|
AnalyzeResult result = analyzeService.analyze(request);
|
||||||
|
System.out.println("Finished analysis");
|
||||||
|
var entityLog = redactionStorageService.getEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID);
|
||||||
|
|
||||||
|
AnnotateResponse annotateResponse = annotationService.annotate(AnnotateRequest.builder().dossierId(TEST_DOSSIER_ID).fileId(TEST_FILE_ID).build());
|
||||||
|
|
||||||
|
String outputFileName = OsUtils.getTemporaryDirectory() + "/Annotated.pdf";
|
||||||
|
|
||||||
|
try (FileOutputStream fileOutputStream = new FileOutputStream(outputFileName)) {
|
||||||
|
fileOutputStream.write(annotateResponse.getDocument());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void titleExtraction() throws IOException {
|
public void titleExtraction() throws IOException {
|
||||||
|
|
||||||
@ -1084,6 +1110,7 @@ public class RedactionIntegrationTest extends AbstractRedactionIntegrationTest {
|
|||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@Disabled
|
||||||
public void testImportedRedactions() throws IOException {
|
public void testImportedRedactions() throws IOException {
|
||||||
|
|
||||||
String outputFileName = OsUtils.getTemporaryDirectory() + "/ImportedRedactions.pdf";
|
String outputFileName = OsUtils.getTemporaryDirectory() + "/ImportedRedactions.pdf";
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user