From bf89e42fcf597033a17acc63919f62aed6640285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thierry=20G=C3=B6ckel?= Date: Thu, 9 Jul 2020 13:47:31 +0200 Subject: [PATCH] DEV: Update rules on each redaction request. --- .../redaction-service-server-v1/pom.xml | 15 +++++--- .../v1/server/client/RulesClient.java | 9 +++++ .../controller/RedactionController.java | 35 ++++++++++++++++--- 3 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/RulesClient.java diff --git a/redaction-service-v1/redaction-service-server-v1/pom.xml b/redaction-service-v1/redaction-service-server-v1/pom.xml index 8e717507..c80053ce 100644 --- a/redaction-service-v1/redaction-service-server-v1/pom.xml +++ b/redaction-service-v1/redaction-service-server-v1/pom.xml @@ -31,6 +31,16 @@ + + com.iqser.red.service + redaction-service-api-v1 + ${project.version} + + + com.iqser.red.service + configuration-service-api-v1 + 0.9.0 + org.drools drools-core @@ -46,11 +56,6 @@ jts-core 1.16.1 - - com.iqser.red.service - redaction-service-api-v1 - ${project.version} - com.iqser.gin4.commons diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/RulesClient.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/RulesClient.java new file mode 100644 index 00000000..2923df83 --- /dev/null +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/client/RulesClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.redaction.v1.server.client; + +import org.springframework.cloud.openfeign.FeignClient; + +import com.iqser.red.service.configuration.v1.api.resource.RulesResource; + +@FeignClient(name = RulesResource.SERVICE_NAME, url = "http://" + RulesResource.SERVICE_NAME + ":8080") +public interface RulesClient extends RulesResource { +} \ No newline at end of file diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java index deb70100..f46a600a 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java @@ -13,6 +13,7 @@ import com.iqser.red.service.redaction.v1.model.RedactionResult; import com.iqser.red.service.redaction.v1.resources.RedactionResource; import com.iqser.red.service.redaction.v1.server.classification.model.Document; import com.iqser.red.service.redaction.v1.server.classification.model.Page; +import com.iqser.red.service.redaction.v1.server.client.RulesClient; import com.iqser.red.service.redaction.v1.server.exception.RedactionException; import com.iqser.red.service.redaction.v1.server.redaction.service.DroolsExecutionService; import com.iqser.red.service.redaction.v1.server.redaction.service.EntityRedactionService; @@ -24,9 +25,7 @@ import com.iqser.red.service.redaction.v1.server.visualization.service.PdfFlatte import com.iqser.red.service.redaction.v1.server.visualization.service.PdfVisualisationService; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -@Slf4j @RestController @RequiredArgsConstructor public class RedactionController implements RedactionResource { @@ -37,11 +36,15 @@ public class RedactionController implements RedactionResource { private final EntityRedactionService entityRedactionService; private final PdfFlattenService pdfFlattenService; private final DroolsExecutionService droolsExecutionService; + private final RulesClient rulesClient; + private long rulesVersion = -1; + @Override public RedactionResult redact(@RequestBody RedactionRequest redactionRequest) { try (PDDocument pdDocument = PDDocument.load(new ByteArrayInputStream(redactionRequest.getDocument()))) { + updateRules(); pdDocument.setAllSecurityToBeRemoved(true); Document classifiedDoc = pdfSegmentationService.parseDocument(pdDocument); @@ -58,12 +61,14 @@ public class RedactionController implements RedactionResource { } catch (IOException e) { throw new RedactionException(e); } + } - + @Override public RedactionResult classify(@RequestBody RedactionRequest pdfSegmentationRequest) { try (PDDocument pdDocument = PDDocument.load(new ByteArrayInputStream(pdfSegmentationRequest.getDocument()))) { + updateRules(); pdDocument.setAllSecurityToBeRemoved(true); Document classifiedDoc = pdfSegmentationService.parseDocument(pdDocument); @@ -74,12 +79,14 @@ public class RedactionController implements RedactionResource { } catch (IOException e) { throw new RedactionException(e); } + } - + @Override public RedactionResult sections(@RequestBody RedactionRequest redactionRequest) { try (PDDocument pdDocument = PDDocument.load(new ByteArrayInputStream(redactionRequest.getDocument()))) { + updateRules(); pdDocument.setAllSecurityToBeRemoved(true); Document classifiedDoc = pdfSegmentationService.parseDocument(pdDocument); @@ -90,11 +97,14 @@ public class RedactionController implements RedactionResource { } catch (IOException e) { throw new RedactionException(e); } + } - + @Override public RedactionResult htmlTables(@RequestBody RedactionRequest redactionRequest) { + try (PDDocument pdDocument = PDDocument.load(new ByteArrayInputStream(redactionRequest.getDocument()))) { + updateRules(); pdDocument.setAllSecurityToBeRemoved(true); Document classifiedDoc = pdfSegmentationService.parseDocument(pdDocument); @@ -114,17 +124,21 @@ public class RedactionController implements RedactionResource { } catch (IOException e) { throw new RedactionException(e); } + } + @Override public String getRules() { return droolsExecutionService.getRules(); } + @Override public void updateRules(@RequestBody String rules) { droolsExecutionService.updateRules(rules); } private RedactionResult convert(PDDocument document, int numberOfPages) throws IOException { + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { document.save(byteArrayOutputStream); return RedactionResult.builder() @@ -132,6 +146,17 @@ public class RedactionController implements RedactionResource { .numberOfPages(numberOfPages) .build(); } + + } + + private void updateRules() { + + long version = rulesClient.getVersion(); + if (version > rulesVersion) { + rulesVersion = version; + updateRules(rulesClient.getRules().getRules()); + } + } } \ No newline at end of file