RED-10334: Wrong engine for add-to-dict dossier-level while auto-analysis is disabled

This commit is contained in:
Maverick Studer 2024-10-31 14:40:36 +01:00
parent 3fbed91ed0
commit 20bed836c3
4 changed files with 71 additions and 4 deletions

View File

@ -49,13 +49,13 @@ public class ManualRedactionEntryEntity implements IBaseAnnotation {
@Column
private boolean rectangle;
@Column
private boolean addToDictionary;
private boolean addToDictionary; //true, true
@Column
private boolean addToAllDossiers;
private boolean addToAllDossiers; //true, false
@Column
@Deprecated
private boolean addToDossierDictionary;
private boolean addToDossierDictionary; //false, true
@Column
@Enumerated(EnumType.STRING)

View File

@ -94,7 +94,7 @@ public class PendingEntryFactory {
.endOffset(-1)
.changes(Collections.emptyList())
.manualChanges(manualChanges)
.engines(new HashSet<>(Set.of(Engine.DICTIONARY)))
.engines(new HashSet<>(Set.of(manualRedactionEntry.isAddToDossierDictionary() ? Engine.DOSSIER_DICTIONARY : Engine.DICTIONARY)))
.reference(Collections.emptySet())
.importedRedactionIntersections(Collections.emptySet())
.build();

View File

@ -42,6 +42,7 @@ public class AddRedactionPersistenceService {
manualRedactionEntry.setTypeId(addRedactionRequest.getDictionaryTypeId());
manualRedactionEntry.setDictionaryEntryType(addRedactionRequest.getDictionaryEntryType());
manualRedactionEntry.setSection(addRedactionRequest.getSection());
manualRedactionEntry.setAddToDossierDictionary(manualRedactionEntry.isAddToDictionary() && !manualRedactionEntry.isAddToAllDossiers());
return manualRedactionRepository.saveAndFlush(manualRedactionEntry);

View File

@ -19,10 +19,12 @@ import static org.mockito.Mockito.when;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
@ -57,6 +59,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RecategorizationPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.queue.SearchTermOccurrencesResponseReceiver;
import com.iqser.red.service.persistence.management.v1.processor.service.redactionlog.RedactionRequest;
import com.iqser.red.service.persistence.management.v1.processor.utils.DossierMapper;
import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult;
import com.iqser.red.service.persistence.service.v1.api.shared.model.BulkLocalResponse;
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel;
@ -91,6 +94,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.Remo
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.RemoveRedactionRequestModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ResizeRedactionRequestModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Point;
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
import feign.FeignException;
@ -4090,4 +4094,66 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
assertEquals(allManualRedactions.getRecategorizations().size(), 1);
}
@Test
public void testPendingEntryFactoryEngineBasedOnAddToDossierDictionary() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
var file = fileTesterAndProvider.testAndProvideFile(dossier);
var type = typeProvider.testAndProvideType(dossierTemplate, null, "typeEngineTest", false);
assertThat(type.isDossierDictionaryOnly()).isFalse();
AddRedactionRequestModel addRedactionAllDossiers = AddRedactionRequestModel.builder()
.positions(List.of(Rectangle.builder().topLeftX(10).topLeftY(10).width(50).height(50).page(1).build()))
.section("Test Section")
.addToDictionary(true)
.addToAllDossiers(true)
.type(type.getType())
.reason("Adding to all dossiers")
.value("TestValueAllDossiers")
.legalBasis("Legal Basis")
.sourceId("SourceId1")
.build();
manualRedactionClient.addRedactionBulk(dossier.getId(), file.getId(), Set.of(addRedactionAllDossiers));
AddRedactionRequestModel addRedactionSingleDossier = AddRedactionRequestModel.builder()
.positions(List.of(Rectangle.builder().topLeftX(20).topLeftY(20).width(30).height(30).page(2).build()))
.section("Test Section Single Dossier")
.addToDictionary(true)
.addToAllDossiers(false)
.type(type.getType())
.reason("Adding to single dossier")
.value("TestValueSingleDossier")
.legalBasis("Legal Basis")
.sourceId("SourceId2")
.build();
manualRedactionClient.addRedactionBulk(dossier.getId(), file.getId(), Set.of(addRedactionSingleDossier));
var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), true, true);
DossierEntity dossierEntity = MagicConverter.convert(dossier, DossierEntity.class);
EntityLog updatedEntityLog = entityLogMergeService.mergeEntityLog(
allManualRedactions,
new EntityLog(),
dossierEntity
);
var entityLogEntries = updatedEntityLog.getEntityLogEntry();
assertThat(entityLogEntries).hasSize(2);
for (EntityLogEntry entry : entityLogEntries) {
if (entry.getValue().equals("TestValueAllDossiers")) {
// Should have Engine.DICTIONARY
assertThat(entry.getEngines()).containsExactlyInAnyOrder(Engine.DICTIONARY);
} else if (entry.getValue().equals("TestValueSingleDossier")) {
// Should have Engine.DOSSIER_DICTIONARY
assertThat(entry.getEngines()).containsExactlyInAnyOrder(Engine.DOSSIER_DICTIONARY);
} else {
throw new AssertionError("Unexpected EntityLogEntry value: " + entry.getValue());
}
}
}
}