diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/mongo/EntityLogMongoService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/mongo/EntityLogMongoService.java deleted file mode 100644 index 26521f1b..00000000 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/mongo/EntityLogMongoService.java +++ /dev/null @@ -1,301 +0,0 @@ -package com.iqser.red.service.redaction.v1.server.mongo; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; - -import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogDocument; -import com.iqser.red.service.persistence.management.v1.processor.document.EntityLogEntryDocument; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; - -import jakarta.transaction.Transactional; - -@Service -public class EntityLogMongoService { - - private final EntityLogDocumentRepository entityLogDocumentRepository; - private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; - - - public EntityLogMongoService(EntityLogDocumentRepository entityLogDocumentRepository, EntityLogEntryDocumentRepository entityLogEntryDocumentRepository) { - - this.entityLogDocumentRepository = entityLogDocumentRepository; - this.entityLogEntryDocumentRepository = entityLogEntryDocumentRepository; - } - - - @Transactional - public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) { - - EntityLogDocument entityLogDocument = entityLogDocumentRepository.insert(new EntityLogDocument(dossierId, fileId, entityLog)); - - entityLogEntryDocumentRepository.insert(entityLog.getEntityLogEntry() - .stream() - .map(entityLogEntry -> new EntityLogEntryDocument(entityLogDocument.getId(), entityLogEntry)).distinct() - .toList()); - } - - - // this does everything : insert when not found and update if found - // todo: remove and replace when services use insert,update,delete correctly - @Transactional - public void saveEntityLog(String dossierId, String fileId, EntityLog entityLog) { - - Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)); - System.out.println("8702 DEBUG - save entity log"); - if (optionalEntityLogDocument.isEmpty()) { - System.out.println("8702 DEBUG - executing insert"); - // throw new EntityLogDocumentNotFoundException(String.format("Entity log for dossier %s and file %s not found.", dossierId, fileId)); - insertEntityLog(dossierId, fileId, entityLog); - return; - } - - System.out.println("8702 DEBUG - executing update"); - EntityLogDocument oldEntityLogDocument = optionalEntityLogDocument.get(); - List oldEntityLogEntryDocuments = oldEntityLogDocument.getEntityLogEntryDocument(); - System.out.println("8702 DEBUG - oldEntityLogEntryDocuments " + oldEntityLogEntryDocuments.size()); - - EntityLogDocument newEntityLogDocument = new EntityLogDocument(dossierId, fileId, entityLog); - List newEntityLogEntryDocuments = newEntityLogDocument.getEntityLogEntryDocument(); - System.out.println("8702 DEBUG - newEntityLogEntryDocuments " + newEntityLogEntryDocuments.size()); - - List toUpdate = new ArrayList<>(newEntityLogEntryDocuments); - toUpdate.retainAll(oldEntityLogEntryDocuments); - - List toRemove = new ArrayList<>(oldEntityLogEntryDocuments); - toRemove.removeAll(toUpdate); - - List toInsert = new ArrayList<>(newEntityLogEntryDocuments); - toInsert.removeAll(toUpdate); - - toInsert.forEach(System.out::println); - - System.out.println("8702 DEBUG - saving toUpdate " + toUpdate.size()); - entityLogEntryDocumentRepository.saveAll(toUpdate); - System.out.println("8702 DEBUG - deleting toRemove " + toRemove.size()); - entityLogEntryDocumentRepository.deleteAll(toRemove); - System.out.println("8702 DEBUG - inserting toInsert " + toInsert.size()); - System.out.println("8702 DEBUG - inserting toInsert " + toInsert.stream().distinct().toList()); - entityLogEntryDocumentRepository.insert(toInsert.stream().distinct().toList()); - - System.out.println("8702 DEBUG - saving newEntityLogDocument " + newEntityLogDocument.getEntityLogEntryDocument().size()); - entityLogDocumentRepository.save(newEntityLogDocument); - } - - - @Transactional - public void deleteEntityLog(String dossierId, String fileId) { - - String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); - - entityLogDocumentRepository.deleteById(entityLogId); - entityLogEntryDocumentRepository.deleteByEntityLogId(entityLogId); - } - - @Transactional - public void insertEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { - - String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); - - EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); - - List entityLogEntryDocuments = entityLogEntries.stream() - .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) - .toList(); - - entityLogDocument.getEntityLogEntryDocument().addAll(entityLogEntryDocuments); - - entityLogEntryDocumentRepository.insert(entityLogEntryDocuments); - entityLogDocumentRepository.save(entityLogDocument); - } - - - public void updateEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { - - String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); - - entityLogEntryDocumentRepository.saveAll(entityLogEntries.stream() - .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) - .toList()); - } - - - @Transactional - public void deleteEntityLogEntries(String dossierId, String fileId, List entityLogEntries) { - - String entityLogId = EntityLogDocument.getDocumentId(dossierId, fileId); - - EntityLogDocument entityLogDocument = getEntityLogDocument(entityLogId); - - List entityLogEntryDocuments = entityLogEntries.stream() - .map(entityLogEntry -> new EntityLogEntryDocument(entityLogId, entityLogEntry)) - .toList(); - - entityLogDocument.getEntityLogEntryDocument().removeAll(entityLogEntryDocuments); - - entityLogEntryDocumentRepository.deleteAll(entityLogEntryDocuments); - entityLogDocumentRepository.save(entityLogDocument); - } - - - private EntityLogDocument getEntityLogDocument(String entityLogId) { - - Optional optionalEntityLogDocument = entityLogDocumentRepository.findById(entityLogId); - - if (optionalEntityLogDocument.isEmpty()) { - throw new EntityLogDocumentNotFoundException(String.format("Entity log not found for %s", entityLogId)); - } - - return optionalEntityLogDocument.get(); - } - - - public Optional findEntityLogByDossierIdAndFileId(String dossierId, String fileId) { - - return entityLogDocumentRepository.findById(EntityLogDocument.getDocumentId(dossierId, fileId)) - .map(EntityLogMongoService::fromDocument); - } - - - public boolean entityLogDocumentExists(String dossierId, String fileId) { - - return entityLogDocumentRepository.existsById(EntityLogDocument.getDocumentId(dossierId, fileId)); - } - - - public Optional findLatestAnalysisNumber(String dossierId, String fileId) { - - return entityLogDocumentRepository.findAnalysisNumberById(EntityLogDocument.getDocumentId(dossierId, fileId)) - .map(EntityLogDocument::getAnalysisNumber); - } - - - public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { - - return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(EntityLogDocument.getDocumentId(dossierId, fileId)) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - - - public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { - - return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(EntityLogDocument.getDocumentId(dossierId, fileId), analysisNumber) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - - - public List findAllEntriesByDossierIdAndFileId(String dossierId, String fileId) { - - return entityLogEntryDocumentRepository.findByEntityLogId(EntityLogDocument.getDocumentId(dossierId, fileId)) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - - - public Optional findLatestAnalysisNumber(String dossierId, String fileId) { - - return entityLogDocumentRepository.findAnalysisNumberById(EntityLogDocument.getDocumentId(dossierId, fileId)) - .map(EntityLogDocument::getAnalysisNumber); - } - - - public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { - - return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(EntityLogDocument.getDocumentId(dossierId, fileId)) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { - - return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(EntityLogDocument.getDocumentId(dossierId, fileId), analysisNumber) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - - - public Optional findLatestAnalysisNumber(String dossierId, String fileId) { - - return entityLogDocumentRepository.findAnalysisNumberById(EntityLogDocument.getDocumentId(dossierId, fileId)) - .map(EntityLogDocument::getAnalysisNumber); - } - - - public List findAllEntityLogEntriesWithManualChanges(String dossierId, String fileId) { - - return entityLogEntryDocumentRepository.findByEntityLogIdAndManualChangesNotEmpty(EntityLogDocument.getDocumentId(dossierId, fileId)) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - public List findAllEntityLogEntriesByAnalysisNumber(String dossierId, String fileId, int analysisNumber) { - - return entityLogEntryDocumentRepository.findByEntityLogIdAndChangesAnalysisNumber(EntityLogDocument.getDocumentId(dossierId, fileId), analysisNumber) - .stream() - .map(EntityLogMongoService::fromDocument) - .toList(); - } - - - private static EntityLog fromDocument(EntityLogDocument entityLogDocument) { - - EntityLog entityLog = new EntityLog(); - entityLog.setAnalysisVersion(entityLogDocument.getAnalysisVersion()); - entityLog.setAnalysisNumber(entityLogDocument.getAnalysisNumber()); - entityLog.setEntityLogEntry(entityLogDocument.getEntityLogEntryDocument() - .stream() - .map(EntityLogMongoService::fromDocument) - .collect(Collectors.toList())); - entityLog.setLegalBasis(entityLogDocument.getLegalBasis()); - entityLog.setDictionaryVersion(entityLogDocument.getDictionaryVersion()); - entityLog.setDossierDictionaryVersion(entityLogDocument.getDossierDictionaryVersion()); - entityLog.setRulesVersion(entityLogDocument.getRulesVersion()); - entityLog.setLegalBasisVersion(entityLogDocument.getLegalBasisVersion()); - return entityLog; - } - - - private static EntityLogEntry fromDocument(EntityLogEntryDocument entityLogEntryDocument) { - - EntityLogEntry entityLogEntry = new EntityLogEntry(); - entityLogEntry.setId(entityLogEntryDocument.getEntryId()); - entityLogEntry.setType(entityLogEntryDocument.getType()); - entityLogEntry.setEntryType(entityLogEntryDocument.getEntryType()); - entityLogEntry.setState(entityLogEntryDocument.getState()); - entityLogEntry.setValue(entityLogEntryDocument.getValue()); - entityLogEntry.setReason(entityLogEntryDocument.getReason()); - entityLogEntry.setMatchedRule(entityLogEntryDocument.getMatchedRule()); - entityLogEntry.setLegalBasis(entityLogEntryDocument.getLegalBasis()); - entityLogEntry.setContainingNodeId(entityLogEntryDocument.getContainingNodeId()); - entityLogEntry.setClosestHeadline(entityLogEntryDocument.getClosestHeadline()); - entityLogEntry.setSection(entityLogEntryDocument.getSection()); - entityLogEntry.setPositions(entityLogEntryDocument.getPositions()); - entityLogEntry.setTextBefore(entityLogEntryDocument.getTextBefore()); - entityLogEntry.setTextAfter(entityLogEntryDocument.getTextAfter()); - entityLogEntry.setStartOffset(entityLogEntryDocument.getStartOffset()); - entityLogEntry.setEndOffset(entityLogEntryDocument.getEndOffset()); - entityLogEntry.setImageHasTransparency(entityLogEntryDocument.isImageHasTransparency()); - entityLogEntry.setDictionaryEntry(entityLogEntryDocument.isDictionaryEntry()); - entityLogEntry.setDossierDictionaryEntry(entityLogEntryDocument.isDossierDictionaryEntry()); - entityLogEntry.setExcluded(entityLogEntryDocument.isExcluded()); - entityLogEntry.setChanges(entityLogEntryDocument.getChanges()); - entityLogEntry.setManualChanges(entityLogEntryDocument.getManualChanges()); - entityLogEntry.setEngines(entityLogEntryDocument.getEngines()); - entityLogEntry.setReference(entityLogEntryDocument.getReference()); - entityLogEntry.setImportedRedactionIntersections(entityLogEntryDocument.getImportedRedactionIntersections()); - entityLogEntry.setNumberOfComments(entityLogEntryDocument.getNumberOfComments()); - return entityLogEntry; - } - -}