Merge branch 'master' of ssh://git.knecon.com:22222/redactmanager/persistence-service into RED-6855

This commit is contained in:
Corina Olariu 2023-06-19 10:31:46 +03:00
commit afb22f4f52
8 changed files with 56 additions and 76 deletions

View File

@ -23,7 +23,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierChange;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type;
import com.iqser.red.service.search.v1.model.IndexMessageType;
import lombok.RequiredArgsConstructor;
@ -53,7 +52,6 @@ public class DossierManagementService {
var dossier = dossierService.addDossier(dossierRequest);
addDossierDictionary(dossier.getDossierTemplateId(), dossier.getId());
return MagicConverter.convert(dossier, Dossier.class, new DossierMapper());
}
@ -275,24 +273,4 @@ public class DossierManagementService {
}
private void addDossierDictionary(String dossierTemplateId, String dossierId) {
dictionaryManagementService.addType(Type.builder()
.type(fileManagementServiceSettings.getDossierDictionarySettings().getName())
.dossierTemplateId(dossierTemplateId)
.hexColor(fileManagementServiceSettings.getDossierDictionarySettings().getHexColor())
.rank(fileManagementServiceSettings.getDossierDictionarySettings().getRank())
.isHint(fileManagementServiceSettings.getDossierDictionarySettings().isHint())
.isCaseInsensitive(fileManagementServiceSettings.getDossierDictionarySettings().isCaseInsensitive())
.isRecommendation(fileManagementServiceSettings.getDossierDictionarySettings().isRecommendation())
.description(fileManagementServiceSettings.getDossierDictionarySettings().getDescription())
.addToDictionaryAction(fileManagementServiceSettings.getDossierDictionarySettings().isAddToDictionaryAction())
.dossierId(dossierId)
.hasDictionary(true)
.systemManaged(true)
.dossierDictionaryOnly(true)
.build());
}
}

View File

@ -9,10 +9,8 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.UnexpectedRollbackException;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity;
@ -24,7 +22,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.LegalBasisChangePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter;
import com.iqser.red.service.persistence.management.v1.processor.utils.ManualImageRecategorizationMapper;
import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionMapper;
import com.iqser.red.service.persistence.management.v1.processor.utils.ManualResizeRedactionMapper;
@ -82,6 +79,13 @@ public class ManualRedactionProviderService {
}
@Transactional
public ManualRedactionEntry getAddRedaction(String fileId, String annotationId){
return convert(addRedactionPersistenceService.findAddRedaction(fileId, annotationId), ManualRedactionEntry.class, new ManualRedactionMapper());
}
private Set<ManualRedactionEntry> convertEntriesToAdd(List<ManualRedactionEntryEntity> source) {
return source.stream().map(entry -> convert(entry, ManualRedactionEntry.class, new ManualRedactionMapper())).collect(Collectors.toSet());

View File

@ -10,7 +10,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
@ -43,7 +42,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter;
import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionMapper;
import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.MessageType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AddRedactionRequest;
@ -57,7 +55,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.RemoveRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
@ -140,10 +137,10 @@ public class ManualRedactionService {
reprocess(dossierId, fileId);
} else {
var manualTextRedactions = MagicConverter.convert(response.stream()
.map(r -> getAddRedaction(fileId, r.getAnnotationId()))
var manualTextRedactions = response.stream()
.map(r -> manualRedactionProviderService.getAddRedaction(fileId, r.getAnnotationId()))
.filter(m -> !m.isAddToDictionary() && !m.isRectangle())
.collect(Collectors.toList()), ManualRedactionEntry.class, new ManualRedactionMapper());
.toList();
if (!manualTextRedactions.isEmpty()) {
ManualRedactions manualRedactions = ManualRedactions.builder().entriesToAdd(new HashSet<>(manualTextRedactions)).build();

View File

@ -76,6 +76,9 @@ public class AddRedactionPersistenceService {
}
public List<ManualRedactionEntryEntity> findAddRedactions(String fileId, boolean includeDeletions) {
return manualRedactionRepository.findByFileIdIncludeDeletions(fileId, includeDeletions);

View File

@ -1,17 +0,0 @@
package com.iqser.red.service.persistence.management.v1.processor.settings;
import lombok.Data;
@Data
public class DossierDictionarySettings {
private String name = "dossier_redaction";
private String hexColor = "#9398a0";
private int rank = 1500;
private boolean hint;
private boolean caseInsensitive;
private boolean recommendation;
private String description = "Entries in this dictionary will only be redacted in this dossier";
private boolean addToDictionaryAction;
}

View File

@ -47,6 +47,5 @@ public class FileManagementServiceSettings {
private String applicationName = "RedactManager";
private Set<String> defaultFilterTypes = new HashSet<>();
private Set<String> defaultFilterHintTypes = new HashSet<>();
private DossierDictionarySettings dossierDictionarySettings = new DossierDictionarySettings();
}

View File

@ -7,6 +7,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.stream.IntStream;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -17,7 +18,9 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTem
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.management.v1.processor.utils.multitenancy.TenantContext;
import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.TypeValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.UpdateTypeValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
@ -41,6 +44,13 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
private DossierTemplateClient dossierTemplateClient;
@BeforeEach
public void createDossierRedactionDictionary() {
TenantContext.setTenantId("redaction");
}
@Test
public void testAddFalsePositiveAndFalseRecommendation() {
@ -90,6 +100,7 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
public void testAddEntriesWithStopWord() {
var dossier = dossierTesterAndProvider.provideTestDossier();
createDossierRedactionsDictionary(dossier.getDossierTemplateId());
var typeId = "dossier_redaction";
var entries = new ArrayList<String>();
entries.add("age");
@ -106,40 +117,42 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
public void testAddEntriesWithStopWord2() {
var dossier = dossierTesterAndProvider.provideTestDossier();
var typeId = "dossier_redaction";
createDossierRedactionsDictionary(dossier.getDossierTemplateId());
var type = "dossier_redaction";
var entries = new ArrayList<String>();
entries.add("age");
entries.add("p");
try {
dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(400);
}
entries.remove(1);
entries.add("5");
try {
dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(400);
}
entries.remove(1);
entries.add("12");
try {
dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(400);
}
entries.remove(1);
entries.add(";");
try {
dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(400);
}
entries.remove(1);
entries.add("");
dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY);
}
@ -266,11 +279,10 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
.build());
assertThat(returnedtype1.isDossierDictionaryOnly()).isTrue();
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), null, false).getTypes().size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getId(), false).getTypes().size()).isEqualTo(3);
var dictionary = dictionaryClient.getDictionaryForType(returnedtype1.getType(), dossier.getDossierTemplateId(), dossier2.getId());
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier2.getId(), false).getTypes().size()).isEqualTo(3);
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getId(), false).getTypes().size()).isEqualTo(2);
var dictionary = dictionaryClient.getDictionaryForType(returnedtype1.getType(), dossier.getDossierTemplateId(), dossier2.getId());
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier2.getId(), false).getTypes().size()).isEqualTo(2);
}
@ -326,19 +338,7 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var type = CreateTypeValue.builder()
.type("dossier_redaction")
.label("Dossier Redactions")
.hexColor("#fcba03")
.rank(100)
.hint(false)
.description("Something")
.hasDictionary(true)
.addToDictionaryAction(false)
.dossierTemplateId(dossierTemplate.getId())
.build();
var createdType = dictionaryClient.addType(type);
var createdType = createDossierRedactionsDictionary(dossierTemplate.getId());
var word1 = "Luke Skywalker";
var word2 = "Anakin Skywalker";
@ -363,7 +363,7 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
entries.add(word3);
dictionaryClient.addEntry(createdType.getType(), createdType.getDossierTemplateId(), entries, false, null, DictionaryEntryType.ENTRY);
var dictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), null);
var dictionary = dictionaryClient.getDictionaryForType(createdType.getType(), createdType.getDossierTemplateId(), null);
assertThat(dictionary.getEntries().size()).isEqualTo(5);
}
@ -424,4 +424,22 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
}
private TypeValue createDossierRedactionsDictionary(String dossierTemplateId){
return dictionaryClient.addType(CreateTypeValue.builder()
.type("dossier_redaction")
.label("Dossier Redaction")
.addToDictionaryAction(true)
.hasDictionary(true)
.hint(false)
.rank(100)
.dossierTemplateId(dossierTemplateId)
.hexColor("#FFFFFF")
.recommendationHexColor("#FFFFFF")
.build());
}
}

View File

@ -1,7 +1,6 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.time.OffsetDateTime;
@ -107,8 +106,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
var dossier = dossierTesterAndProvider.provideTestDossier();
var returnedTypes = dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getDossierId(), false);
assertThat(returnedTypes.getTypes().size()).isEqualTo(1);
assertThat(returnedTypes.getTypes().get(0).isDossierDictionaryOnly()).isTrue();
assertThat(returnedTypes.getTypes().size()).isEqualTo(0);
var watermark = new WatermarkModel();
watermark.setName("watermark name");