Merge branch 'RED-8702-fix' into 'master'
RED-8702: Explore document databases to store entityLog Closes RED-8702 See merge request redactmanager/persistence-service!445
This commit is contained in:
commit
b002f7d544
@ -32,7 +32,7 @@ public class EntityLogController implements EntityLogResource {
|
||||
@PreAuthorize("hasAuthority('" + READ_REDACTION_LOG + "')")
|
||||
public EntityLogResponse getEntityLog(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = "excludedTypes", required = false) List<String> excludedTypes,
|
||||
@RequestParam(value = "excludedTypes", required = false, defaultValue = "") List<String> excludedTypes,
|
||||
@RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed) {
|
||||
|
||||
accessControlService.checkViewPermissionsToDossier(dossierId);
|
||||
|
||||
@ -40,7 +40,7 @@ public interface EntityLogResource {
|
||||
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")})
|
||||
EntityLogResponse getEntityLog(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = "excludedTypes", required = false) List<String> excludedTypes,
|
||||
@RequestParam(value = "excludedTypes", required = false, defaultValue = "") List<String> excludedTypes,
|
||||
@RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed);
|
||||
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ public class EntityLogInternalController implements EntityLogResource {
|
||||
@Override
|
||||
public EntityLog getEntityLog(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = "excludedType", required = false) List<String> excludedTypes,
|
||||
@RequestParam(value = "excludedType", required = false, defaultValue = "") List<String> excludedTypes,
|
||||
@RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed) {
|
||||
|
||||
return entityLogService.getEntityLog(dossierId, fileId, excludedTypes, includeUnprocessed);
|
||||
|
||||
@ -30,7 +30,7 @@ public interface EntityLogResource {
|
||||
@GetMapping(value = InternalApi.BASE_PATH + ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
EntityLog getEntityLog(@PathVariable(DOSSIER_ID) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = "excludedType", required = false) List<String> excludedTypes,
|
||||
@RequestParam(value = "excludedType", required = false, defaultValue = "") List<String> excludedTypes,
|
||||
@RequestParam(value = "includeUnprocessed", required = false, defaultValue = FALSE) boolean includeUnprocessed);
|
||||
|
||||
}
|
||||
|
||||
@ -140,7 +140,7 @@ public class FileManagementStorageService {
|
||||
@SneakyThrows
|
||||
public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) {
|
||||
|
||||
entityLogMongoService.upsertEntityLog(dossierId, fileId, entityLog);
|
||||
entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
|
||||
EntityLog entityLogToStore = objectMapper.readValue(file.getInputStream(), EntityLog.class);
|
||||
|
||||
entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE1_ID, entityLogToStore);
|
||||
entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE1_ID, entityLogToStore);
|
||||
|
||||
var optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE1_ID);
|
||||
assertTrue(optionalEntityLog.isPresent());
|
||||
@ -63,7 +63,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
file = new ClassPathResource(String.format(ENTITY_LOG2));
|
||||
entityLogToStore = objectMapper.readValue(file.getInputStream(), EntityLog.class);
|
||||
|
||||
entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE2_ID, entityLogToStore);
|
||||
entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE2_ID, entityLogToStore);
|
||||
|
||||
optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE2_ID);
|
||||
assertTrue(optionalEntityLog.isPresent());
|
||||
@ -89,7 +89,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
|
||||
EntityLog entityLogToStore = objectMapper.readValue(file.getInputStream(), EntityLog.class);
|
||||
|
||||
entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE1_ID, entityLogToStore);
|
||||
entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE1_ID, entityLogToStore);
|
||||
|
||||
var optionalEntityLog = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE1_ID);
|
||||
assertTrue(optionalEntityLog.isPresent());
|
||||
@ -115,7 +115,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
|
||||
EntityLog entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class);
|
||||
|
||||
entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog);
|
||||
entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog);
|
||||
|
||||
Optional<EntityLog> found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID);
|
||||
assertTrue(found.isPresent());
|
||||
@ -217,7 +217,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
|
||||
EntityLogEntry entityLogEntry = objectMapper.readValue(NEW_ENTITY_LOG_ENTRY, EntityLogEntry.class);
|
||||
|
||||
entityLogMongoService.insertEntityLogEntries(TEST_DOSSIER_ID, TEST_FILE3_ID, List.of(entityLogEntry));
|
||||
entityLogMongoService.saveEntityLogEntries(TEST_DOSSIER_ID, TEST_FILE3_ID, List.of(entityLogEntry));
|
||||
|
||||
found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID);
|
||||
assertTrue(found.isPresent());
|
||||
@ -236,7 +236,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
|
||||
EntityLog entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class);
|
||||
|
||||
entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog);
|
||||
entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog);
|
||||
|
||||
Optional<EntityLog> found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID);
|
||||
assertTrue(found.isPresent());
|
||||
@ -247,7 +247,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class);
|
||||
entityLog.setAnalysisNumber(entityLog.getAnalysisNumber() + 1);
|
||||
|
||||
entityLogMongoService.upsertEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog);
|
||||
entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog);
|
||||
|
||||
found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID);
|
||||
assertTrue(found.isPresent());
|
||||
@ -257,7 +257,6 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
public void testUpdateEntityLogWithoutEntries() {
|
||||
@ -268,7 +267,7 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
|
||||
EntityLog entityLog = objectMapper.readValue(file.getInputStream(), EntityLog.class);
|
||||
|
||||
entityLogMongoService.insertEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog);
|
||||
entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE3_ID, entityLog);
|
||||
|
||||
Optional<EntityLog> found = entityLogMongoService.findEntityLogByDossierIdAndFileId(TEST_DOSSIER_ID, TEST_FILE3_ID);
|
||||
assertTrue(found.isPresent());
|
||||
@ -288,4 +287,22 @@ public class EntityLogMongoServiceTest extends AbstractPersistenceServerServiceT
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
public void testGetWithNullExcludedTypes() {
|
||||
|
||||
var file = new ClassPathResource(String.format(ENTITY_LOG1));
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.registerModule(new JavaTimeModule());
|
||||
|
||||
EntityLog entityLogToStore = objectMapper.readValue(file.getInputStream(), EntityLog.class);
|
||||
|
||||
entityLogMongoService.saveEntityLog(TEST_DOSSIER_ID, TEST_FILE1_ID, entityLogToStore);
|
||||
|
||||
var optionalEntityLog = entityLogMongoService.findEntityLogWithoutExcludedEntryTypes(TEST_DOSSIER_ID, TEST_FILE1_ID, null);
|
||||
assertTrue(optionalEntityLog.isPresent());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -48,6 +48,17 @@ public class EntityLogMongoService {
|
||||
}
|
||||
|
||||
|
||||
public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) {
|
||||
|
||||
EntityLogDocument entityLogDocument = entityLogDocumentRepository.save(mapper.toLogDocument(dossierId, fileId, entityLog));
|
||||
|
||||
entityLogEntryDocumentRepository.saveAll(entityLog.getEntityLogEntry()
|
||||
.stream()
|
||||
.map(entityLogEntry -> mapper.toLogEntryDocument(entityLogDocument.getId(), entityLogEntry))
|
||||
.toList());
|
||||
}
|
||||
|
||||
|
||||
// this does everything : insert when not found and update if found
|
||||
public void upsertEntityLog(String dossierId, String fileId, EntityLog entityLog) {
|
||||
|
||||
@ -106,6 +117,23 @@ public class EntityLogMongoService {
|
||||
entityLogDocumentRepository.save(entityLogDocument);
|
||||
}
|
||||
|
||||
public void saveEntityLogEntries(String dossierId, String fileId, List<EntityLogEntry> entityLogEntries) {
|
||||
|
||||
String entityLogId = mapper.getLogId(dossierId, fileId);
|
||||
|
||||
EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId);
|
||||
|
||||
List<EntityLogEntryDocument> entityLogEntryDocuments = entityLogEntries.stream()
|
||||
.map(entityLogEntry -> mapper.toLogEntryDocument(entityLogId, entityLogEntry))
|
||||
.toList();
|
||||
|
||||
entityLogDocument.getEntityLogEntryDocuments().addAll(entityLogEntryDocuments);
|
||||
|
||||
entityLogEntryDocumentRepository.saveAll(entityLogEntryDocuments);
|
||||
entityLogDocumentRepository.save(entityLogDocument);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void updateEntityLogEntries(String dossierId, String fileId, List<EntityLogEntry> entityLogEntries) {
|
||||
|
||||
@ -236,11 +264,12 @@ public class EntityLogMongoService {
|
||||
|
||||
public Optional<EntityLog> findEntityLogWithoutExcludedEntryTypes(String dossierId, String fileId, List<String> excludedTypes) {
|
||||
|
||||
var excludedTypesNonNull = excludedTypes == null ? new ArrayList<String>() : excludedTypes;
|
||||
String entityLogId = mapper.getLogId(dossierId, fileId);
|
||||
Optional<EntityLog> optionalEntityLog = entityLogDocumentRepository.findEntityLogDocumentWithoutEntriesById(entityLogId)
|
||||
.map(mapper::fromLogDocument);
|
||||
optionalEntityLog.ifPresent(entityLog -> entityLog.getEntityLogEntry()
|
||||
.addAll(entityLogEntryDocumentRepository.findEntityLogDocumentByIdAndExcludedTypes(entityLogId, excludedTypes)
|
||||
.addAll(entityLogEntryDocumentRepository.findEntityLogDocumentByIdAndExcludedTypes(entityLogId, excludedTypesNonNull)
|
||||
.stream()
|
||||
.map(mapper::fromLogEntryDocument)
|
||||
.toList()));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user