Merge branch 'RED-8971' into 'master'

RED-8971: Changing Vertebrate Study to 'Yes' has no effect

Closes RED-8971

See merge request redactmanager/redaction-service!375
This commit is contained in:
Maverick Studer 2024-04-17 09:09:53 +02:00
commit 5a91b01f92
3 changed files with 89 additions and 4 deletions

View File

@ -49,9 +49,12 @@ public class EntityChangeLogService {
EntityLogEntry previousEntity = optionalPreviousEntity.get();
entityLogEntry.getChanges().addAll(previousEntity.getChanges());
if (!previousEntity.getState().equals(entityLogEntry.getState())) {
ChangeType changeType = calculateChangeType(entityLogEntry.getState(), previousEntity.getState());
entityLogEntry.getChanges().add(new Change(analysisNumber, changeType, now));
if (!previousEntity.equals(entityLogEntry)) {
if(!previousEntity.getState().equals(entityLogEntry.getState())) {
ChangeType changeType = calculateChangeType(entityLogEntry.getState(), previousEntity.getState());
entityLogEntry.getChanges().add(new Change(analysisNumber, changeType, now));
}
toUpdate.add(entityLogEntry);
}
}

View File

@ -150,7 +150,8 @@ public class RedactionIntegrationTest extends RulesIntegrationTest {
public void testFludioxonilDuplicatedImageEntries() {
AnalyzeRequest request = prepareStorage("files/Fludioxonil/Fludioxonil_duplicates.pdf",
"files/cv_service_empty_response.json", "files/image_info_fludioxonil_duplicates.json");
"files/cv_service_empty_response.json",
"files/image_info_fludioxonil_duplicates.json");
analyzeDocumentStructure(LayoutParsingType.REDACT_MANAGER, request);
AnalyzeResult result = analyzeService.analyze(request);
@ -1553,6 +1554,85 @@ public class RedactionIntegrationTest extends RulesIntegrationTest {
}
@Test
public void testChangeVertebrate() throws IOException {
String EFSA_SANITISATION_RULES = loadFromClassPath("drools/efsa_sanitisation.drl");
when(rulesClient.getRules(TEST_DOSSIER_TEMPLATE_ID, RuleFileType.ENTITY)).thenReturn(JSONPrimitive.of(EFSA_SANITISATION_RULES));
String fileName = "files/new/crafted document.pdf";
ClassPathResource responseJson = new ClassPathResource("files/crafted_document.NER_ENTITIES.json");
storageService.storeObject(TenantContext.getTenantId(),
RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.NER_ENTITIES),
responseJson.getInputStream());
long start = System.currentTimeMillis();
AnalyzeRequest request = uploadFileToStorage(fileName);
FileAttribute vertebrateYes = FileAttribute.builder().id("fileAttributeId").label("Vertebrate Study").placeholder("{fileattributes.vertebrateStudy}").value("Yes").build();
request.setFileAttributes(List.of(vertebrateYes));
analyzeDocumentStructure(LayoutParsingType.REDACT_MANAGER, request);
request.setAnalysisNumber(1);
AnalyzeResult result = analyzeService.analyze(request);
var entityLog = redactionStorageService.getEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID);
var listCBI_0_0 = entityLog.getEntityLogEntry()
.stream()
.filter(entityLogEntry -> entityLogEntry.getMatchedRule().startsWith("CBI.0.0"))
.toList();
var listCBI_0_1 = entityLog.getEntityLogEntry()
.stream()
.filter(entityLogEntry -> entityLogEntry.getMatchedRule().startsWith("CBI.0.1"))
.toList();
FileAttribute vertebrateNo = FileAttribute.builder().id("fileAttributeId").label("Vertebrate Study").placeholder("{fileattributes.vertebrateStudy}").value("No").build();
request.setFileAttributes(List.of(vertebrateNo));
analyzeDocumentStructure(LayoutParsingType.REDACT_MANAGER, request);
request.setAnalysisNumber(2);
result = analyzeService.analyze(request);
var entityLog2 = redactionStorageService.getEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID);
var list2CBI_0_0 = entityLog2.getEntityLogEntry()
.stream()
.filter(entityLogEntry -> entityLogEntry.getMatchedRule().startsWith("CBI.0.0"))
.toList();
var list2CBI_0_1 = entityLog2.getEntityLogEntry()
.stream()
.filter(entityLogEntry -> entityLogEntry.getMatchedRule().startsWith("CBI.0.1"))
.toList();
assertEquals(listCBI_0_0.size(), list2CBI_0_1.size());
assertEquals(listCBI_0_1.size(), list2CBI_0_0.size());
request.setFileAttributes(List.of(vertebrateYes));
analyzeDocumentStructure(LayoutParsingType.REDACT_MANAGER, request);
request.setAnalysisNumber(3);
result = analyzeService.analyze(request);
var entityLog3 = redactionStorageService.getEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID);
var list3CBI_0_0 = entityLog3.getEntityLogEntry()
.stream()
.filter(entityLogEntry -> entityLogEntry.getMatchedRule().startsWith("CBI.0.0"))
.toList();
var list3CBI_0_1 = entityLog3.getEntityLogEntry()
.stream()
.filter(entityLogEntry -> entityLogEntry.getMatchedRule().startsWith("CBI.0.1"))
.toList();
assertEquals(list3CBI_0_0.size(), list2CBI_0_1.size());
assertEquals(list3CBI_0_1.size(), list2CBI_0_0.size());
}
private IdRemoval getIdRemoval(String id) {
return IdRemoval.builder()

View File

@ -2,6 +2,8 @@ image-service.url: "http://image-service-v1:8080"
persistence-service.url: "http://persistence-service-v1:8080"
entity-recognition-service.url: "localhost:8080"
logging.type: ${LOGGING_TYPE:CONSOLE}
ribbon:
ConnectTimeout: 600000
ReadTimeout: 600000