Merge branch 'RED-10259-bp' into 'release/2.589.x'
RED-10259: Failed recategorize on annotation after re-upload file without keeping changes See merge request redactmanager/persistence-service!799
This commit is contained in:
commit
2f42e96b25
@ -56,6 +56,7 @@ public class RecategorizationPersistenceService {
|
||||
entity.setValue(request.getValue());
|
||||
}
|
||||
entity.setProcessedDate(null);
|
||||
entity.setSoftDeletedTime(null);
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
||||
@ -99,23 +99,6 @@ public class Application implements ApplicationContextAware {
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(value = "cors.enabled", havingValue = "true")
|
||||
public WebMvcConfigurer corsConfigurer() {
|
||||
|
||||
return new WebMvcConfigurer() {
|
||||
|
||||
@Override
|
||||
public void addCorsMappings(CorsRegistry registry) {
|
||||
|
||||
log.info("Cross Origin Requests are enabled !!!");
|
||||
registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "DELETE", "PUT", "HEAD");
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
public DictionaryMergeService dictionaryMergeService() {
|
||||
|
||||
|
||||
@ -18,12 +18,12 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@ -31,7 +31,6 @@ import org.junit.jupiter.api.Test;
|
||||
import org.mockito.stubbing.Answer;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileProcessingClient;
|
||||
@ -44,6 +43,8 @@ import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvid
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRecategorizationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.model.ManualChangesQueryOptions;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService;
|
||||
@ -51,10 +52,10 @@ import com.iqser.red.service.persistence.management.v1.processor.service.Dossier
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogMergeService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionProviderService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
|
||||
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.service.v1.api.shared.model.AnalyzeResult;
|
||||
@ -121,7 +122,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
private FileStatusPersistenceService fileStatusPersistenceService;
|
||||
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
private FileStatusService fileStatusService;
|
||||
|
||||
@Autowired
|
||||
private FileClient fileClient;
|
||||
@ -138,15 +139,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private DictionaryManagementService dictionaryManagementService;
|
||||
|
||||
@Autowired
|
||||
private EntryPersistenceService entryPersistenceService;
|
||||
|
||||
@Autowired
|
||||
private FileProcessingClient fileProcessingClient;
|
||||
|
||||
@Autowired
|
||||
private ManualRedactionService manualRedactionService;
|
||||
|
||||
@Autowired
|
||||
private ManualRedactionProviderService manualRedactionProviderService;
|
||||
|
||||
@ -159,6 +154,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private SearchTermOccurrencesResponseReceiver searchTermOccurrencesResponseReceiver;
|
||||
|
||||
@Autowired
|
||||
private RecategorizationPersistenceService recategorizationPersistenceService;
|
||||
|
||||
|
||||
@Test
|
||||
public void testRemoveToDossierTemplateWithDossierDictionaryOnlyTrue() {
|
||||
@ -4030,4 +4028,92 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
|
||||
when(entityLogService.getEntityLog(any(), any())).thenAnswer(answer);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testReaddSameImageRecatsAfterFullFileOverwrite() {
|
||||
|
||||
// Step 1: Prepare file
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
|
||||
// Step 2: Do recategorizations
|
||||
var type1 = typeProvider.testAndProvideType(dossierTemplate, dossier, "Type1", false, 66);
|
||||
var type2 = typeProvider.testAndProvideType(dossierTemplate, dossier, "Type2", false, 100);
|
||||
|
||||
List<String> entries = List.of("Luke Skywalker");
|
||||
dictionaryClient.addEntry(type1.getType(), type1.getDossierTemplateId(), entries, false, null, DictionaryEntryType.ENTRY);
|
||||
|
||||
// Create an annotation
|
||||
var annotationId = "AnnotationId";
|
||||
var entityLog = new EntityLog(1,
|
||||
1,
|
||||
List.of(EntityLogEntry.builder()
|
||||
.id(annotationId)
|
||||
.type(type1.getType())
|
||||
.value("Luke Skywalker")
|
||||
.dictionaryEntry(true)
|
||||
.entryType(EntryType.IMAGE)
|
||||
.state(EntryState.APPLIED)
|
||||
.build()),
|
||||
null,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog);
|
||||
|
||||
when(entityLogService.getEntityLog(any(), any(), anyBoolean())).thenReturn(entityLog);
|
||||
|
||||
Set<RecategorizationRequestModel> recategorizationRequests = Set.of(RecategorizationRequestModel.builder()
|
||||
.type(type2.getType())
|
||||
.annotationId(annotationId)
|
||||
.addToDictionary(false)
|
||||
.addToAllDossiers(false)
|
||||
.legalBasis("")
|
||||
.section("section")
|
||||
.value("Luke Skywalker")
|
||||
.build());
|
||||
manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), recategorizationRequests, true);
|
||||
|
||||
var allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true);
|
||||
assertEquals(allManualRedactions.getRecategorizations().size(), 1);
|
||||
|
||||
List<ManualRecategorizationEntity> recats = recategorizationPersistenceService.findEntriesByFileIdAndOptions(file.getId(),
|
||||
ManualChangesQueryOptions.builder()
|
||||
.includeDeletions(true)
|
||||
.build());
|
||||
assertEquals(recats.size(), 1);
|
||||
assertEquals(annotationId, recats.get(0).getId().getAnnotationId());
|
||||
assertNull(recats.get(0).getSoftDeletedTime());
|
||||
|
||||
// Step 3: file overwrite
|
||||
fileStatusService.overwriteFile(file.getDossierId(), file.getId(), "testUploader", file.getFilename(), false, false);
|
||||
|
||||
fileManagementStorageService.saveEntityLog(dossier.getId(), file.getId(), entityLog);
|
||||
|
||||
allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true);
|
||||
assertEquals(allManualRedactions.getRecategorizations().size(), 0);
|
||||
recats = recategorizationPersistenceService.findEntriesByFileIdAndOptions(file.getId(),
|
||||
ManualChangesQueryOptions.builder()
|
||||
.includeDeletions(true)
|
||||
.build());
|
||||
assertEquals(recats.size(), 1);
|
||||
assertEquals(annotationId, recats.get(0).getId().getAnnotationId());
|
||||
assertNotNull(recats.get(0).getSoftDeletedTime());
|
||||
|
||||
// Step 4: Do the same recategorizations again
|
||||
manualRedactionClient.recategorizeBulk(dossier.getId(), file.getId(), recategorizationRequests, true);
|
||||
|
||||
allManualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId(), false, true);
|
||||
recats = recategorizationPersistenceService.findEntriesByFileIdAndOptions(file.getId(),
|
||||
ManualChangesQueryOptions.builder()
|
||||
.includeDeletions(true)
|
||||
.build());
|
||||
assertEquals(recats.size(), 1);
|
||||
assertEquals(annotationId, recats.get(0).getId().getAnnotationId());
|
||||
assertNull(recats.get(0).getSoftDeletedTime());
|
||||
assertEquals(allManualRedactions.getRecategorizations().size(), 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user