Merge branch 'master' of ssh://git.knecon.com:22222/redactmanager/persistence-service into RED-6855
This commit is contained in:
commit
afb22f4f52
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -76,6 +76,9 @@ public class AddRedactionPersistenceService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public List<ManualRedactionEntryEntity> findAddRedactions(String fileId, boolean includeDeletions) {
|
||||
|
||||
return manualRedactionRepository.findByFileIdIncludeDeletions(fileId, includeDeletions);
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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();
|
||||
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user