diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLog.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLog.java index 6fb43ff6..e93b81db 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLog.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLog.java @@ -13,4 +13,8 @@ public class RedactionLog { private List redactionLogEntry; + private long dictionaryVersion = -1; + + private long rulesVersion = -1; + } 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 53495750..a86fd12f 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 @@ -3,18 +3,21 @@ package com.iqser.red.service.redaction.v1.server.controller; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.iqser.red.service.redaction.v1.model.RedactionLog; +import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; import com.iqser.red.service.redaction.v1.model.RedactionRequest; 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.exception.RedactionException; +import com.iqser.red.service.redaction.v1.server.redaction.service.DictionaryService; import com.iqser.red.service.redaction.v1.server.redaction.service.DroolsExecutionService; import com.iqser.red.service.redaction.v1.server.redaction.service.EntityRedactionService; import com.iqser.red.service.redaction.v1.server.segmentation.PdfSegmentationService; @@ -36,6 +39,7 @@ public class RedactionController implements RedactionResource { private final EntityRedactionService entityRedactionService; private final PdfFlattenService pdfFlattenService; private final DroolsExecutionService droolsExecutionService; + private final DictionaryService dictionaryService; @Override public RedactionResult redact(@RequestBody RedactionRequest redactionRequest) { @@ -49,10 +53,10 @@ public class RedactionController implements RedactionResource { if (redactionRequest.isFlatRedaction()) { PDDocument flatDocument = pdfFlattenService.flattenPDF(pdDocument); - return convert(flatDocument, classifiedDoc.getPages().size(), new RedactionLog(classifiedDoc.getRedactionLogEntities())); + return convert(flatDocument, classifiedDoc.getPages().size(), classifiedDoc.getRedactionLogEntities()); } - return convert(pdDocument, classifiedDoc.getPages().size(), new RedactionLog(classifiedDoc.getRedactionLogEntities())); + return convert(pdDocument, classifiedDoc.getPages().size(), classifiedDoc.getRedactionLogEntities()); } catch (IOException e) { throw new RedactionException(e); @@ -130,14 +134,14 @@ public class RedactionController implements RedactionResource { return convert(document, numberOfPages, null); } - private RedactionResult convert(PDDocument document, int numberOfPages, RedactionLog redactionLog) throws IOException { + private RedactionResult convert(PDDocument document, int numberOfPages, List redactionLogEntities) throws IOException { try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { document.save(byteArrayOutputStream); return RedactionResult.builder() .document(byteArrayOutputStream.toByteArray()) .numberOfPages(numberOfPages) - .redactionLog(redactionLog) + .redactionLog(new RedactionLog(redactionLogEntities, dictionaryService.getDictionaryVersion(), droolsExecutionService.getRulesVersion())) .build(); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DictionaryService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DictionaryService.java index 203096b3..bcd9d572 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DictionaryService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DictionaryService.java @@ -27,6 +27,7 @@ public class DictionaryService { private final DictionaryClient dictionaryClient; + @Getter private long dictionaryVersion = -1; @Getter diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DroolsExecutionService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DroolsExecutionService.java index 9e05f0e0..bb03f77e 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DroolsExecutionService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DroolsExecutionService.java @@ -18,6 +18,7 @@ import com.iqser.red.service.redaction.v1.server.client.RulesClient; import com.iqser.red.service.redaction.v1.server.exception.RulesValidationException; import com.iqser.red.service.redaction.v1.server.redaction.model.Section; +import lombok.Getter; import lombok.RequiredArgsConstructor; @Service @@ -29,6 +30,7 @@ public class DroolsExecutionService { @Autowired private KieContainer kieContainer; + @Getter private long rulesVersion = -1; public Section executeRules(Section section) { diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/must_redact.txt b/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/must_redact.txt index 1be96842..34387b57 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/must_redact.txt +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/dictionaries/must_redact.txt @@ -1,3 +1,3 @@ Batches Produced at CTL -for determination of residues \ No newline at end of file +determination of residues \ No newline at end of file