From 0ad468257118719b44eb47235c4dfd8f7eb2dab2 Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Mon, 31 Jul 2023 15:51:22 +0300 Subject: [PATCH] RED-7080 - Add removeWatermark flag for dossier template --- ocr-service-v1/ocr-service-server-v1/pom.xml | 2 +- .../ocr/v1/server/client/DossierClient.java | 10 ++++++ .../server/client/DossierTemplateClient.java | 10 ++++++ .../ocr/v1/server/service/DossierService.java | 36 +++++++++++++++++++ .../service/DossierTemplateService.java | 36 +++++++++++++++++++ .../ocr/v1/server/service/OCRService.java | 14 ++++++-- .../server/settings/OcrServiceSettings.java | 1 - 7 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/client/DossierClient.java create mode 100644 ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/client/DossierTemplateClient.java create mode 100644 ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/DossierService.java create mode 100644 ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/DossierTemplateService.java diff --git a/ocr-service-v1/ocr-service-server-v1/pom.xml b/ocr-service-v1/ocr-service-server-v1/pom.xml index 19bd2c8..c3e739f 100644 --- a/ocr-service-v1/ocr-service-server-v1/pom.xml +++ b/ocr-service-v1/ocr-service-server-v1/pom.xml @@ -14,7 +14,7 @@ 0.10.0 - 2.93.0 + 2.118.0 2.10.0 diff --git a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/client/DossierClient.java b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/client/DossierClient.java new file mode 100644 index 0000000..3873353 --- /dev/null +++ b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/client/DossierClient.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.ocr.v1.server.client; + +import org.springframework.cloud.openfeign.FeignClient; + +import com.iqser.red.service.persistence.service.v1.api.internal.resources.DossierResource; + +@FeignClient(name = "DossierResource", url = "${persistence-service.url}") +public interface DossierClient extends DossierResource { + +} diff --git a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/client/DossierTemplateClient.java b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/client/DossierTemplateClient.java new file mode 100644 index 0000000..b9e0e19 --- /dev/null +++ b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/client/DossierTemplateClient.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.ocr.v1.server.client; + +import org.springframework.cloud.openfeign.FeignClient; + +import com.iqser.red.service.persistence.service.v1.api.internal.resources.DossierTemplateResource; + +@FeignClient(name = "DossierTemplateResource", url = "${persistence-service.url}") +public interface DossierTemplateClient extends DossierTemplateResource { + +} diff --git a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/DossierService.java b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/DossierService.java new file mode 100644 index 0000000..8e34eeb --- /dev/null +++ b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/DossierService.java @@ -0,0 +1,36 @@ +package com.iqser.red.service.ocr.v1.server.service; + +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.ocr.v1.server.client.DossierClient; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; + +import feign.FeignException; +import lombok.AccessLevel; +import lombok.RequiredArgsConstructor; +import lombok.experimental.FieldDefaults; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) +public class DossierService { + + DossierClient dossierClient; + + public Dossier getDossier(String dossierId) { + + try { + return dossierClient.getDossierById(dossierId, true, false); + } catch (FeignException e) { + if (e.status() == HttpStatus.NOT_FOUND.value()) { + return null; + } else { + throw e; + } + } + } + +} diff --git a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/DossierTemplateService.java b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/DossierTemplateService.java new file mode 100644 index 0000000..5309c4f --- /dev/null +++ b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/DossierTemplateService.java @@ -0,0 +1,36 @@ +package com.iqser.red.service.ocr.v1.server.service; + +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.ocr.v1.server.client.DossierTemplateClient; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; + +import feign.FeignException; +import lombok.AccessLevel; +import lombok.RequiredArgsConstructor; +import lombok.experimental.FieldDefaults; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) +public class DossierTemplateService { + + DossierTemplateClient dossierTemplateClient; + + public DossierTemplate getDossierTemplate(String dossierTemplateId) { + + try { + return dossierTemplateClient.getDossierTemplateById(dossierTemplateId); + } catch (FeignException e) { + if (e.status() == HttpStatus.NOT_FOUND.value()) { + return null; + } else { + throw e; + } + } + } + +} diff --git a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/OCRService.java b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/OCRService.java index 7f01e69..2c224c7 100644 --- a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/OCRService.java +++ b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/service/OCRService.java @@ -13,11 +13,14 @@ import java.util.Map; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; -import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.pdftronlogic.commons.InvisibleElementRemovalService; import com.iqser.red.service.ocr.v1.api.model.OCRStatusUpdateResponse; +import com.iqser.red.service.ocr.v1.server.client.DossierClient; +import com.iqser.red.service.ocr.v1.server.client.DossierTemplateClient; import com.iqser.red.service.ocr.v1.server.configuration.MessagingConfiguration; import com.iqser.red.service.ocr.v1.server.settings.OcrServiceSettings; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.pdftron.common.PDFNetException; import com.pdftron.pdf.OCRModule; import com.pdftron.pdf.OCROptions; @@ -50,6 +53,10 @@ public class OCRService { private final ImagePositionRetrievalService imagePositionRetrievalService; + private final DossierService dossierService; + + private final DossierTemplateService dossierTemplateService; + /** * First loads the PDF Document from storage. @@ -71,7 +78,10 @@ public class OCRService { InputStream fileStream = fileStorageService.getOriginalFileAsStream(dossierId, fileId); try { - if (settings.isRemoveWatermark()) { + Dossier dossier = dossierService.getDossier(dossierId); + DossierTemplate dossierTemplate = dossierTemplateService.getDossierTemplate(dossier.getDossierTemplateId()); + + if (dossierTemplate.isRemoveWatermark()) { watermarkRemovalService.removeWatermarks(fileStream, transferOutputStream); fileStream.close(); fileStream = new ByteArrayInputStream(transferOutputStream.toByteArray()); diff --git a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/settings/OcrServiceSettings.java b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/settings/OcrServiceSettings.java index f1f60e3..2e3aabe 100644 --- a/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/settings/OcrServiceSettings.java +++ b/ocr-service-v1/ocr-service-server-v1/src/main/java/com/iqser/red/service/ocr/v1/server/settings/OcrServiceSettings.java @@ -9,6 +9,5 @@ import lombok.Data; public class OcrServiceSettings { private int ocrDPI = 300; - private boolean removeWatermark; }