diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeEntity.java index 848643d08..eaa0880e7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileAttributeEntity.java @@ -8,10 +8,14 @@ import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.Table; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; @Data @Entity +@AllArgsConstructor +@NoArgsConstructor @Table(name = "file_attribute") public class FileAttributeEntity { @@ -23,6 +27,8 @@ public class FileAttributeEntity { @Data @Embeddable + @NoArgsConstructor + @AllArgsConstructor public static class FileAttributeEntityId implements Serializable { @Column(name = "file_id") diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java index 8ac3dc2e2..8e6f37f2d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java @@ -23,6 +23,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus; +import com.iqser.red.service.redaction.v1.model.FileAttribute; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -224,6 +225,33 @@ public class FileStatusPersistenceService { } + @Transactional(value = Transactional.TxType.REQUIRES_NEW) + public void addFileAttributes(String dossierId, String fileId, Set fileAttributes) { + + fileRepository.findById(fileId).ifPresentOrElse((file) -> { + if (file.isSoftOrHardDeleted()) { + return; + } + + var dossier = dossierService.getAndValidateDossier(dossierId); + List configuration = fileAttributeConfigPersistenceService.getFileAttributes(dossier.getDossierTemplateId()); + + fileAttributes.forEach(attributeToAdd -> { + var configId = configuration.stream().filter(c -> c.getLabel().equals(attributeToAdd.getLabel())).map(c -> c.getId()).findFirst(); + if (configId.isPresent()) { + var fileAttributeEntity = new FileAttributeEntity(new FileAttributeEntity.FileAttributeEntityId(fileId, configId.get()), attributeToAdd.getValue()); + fileAttributesRepository.saveAndFlush(fileAttributeEntity); + } + }); + + fileRepository.updateLastAttributeChangeDate(fileId, file.getLastProcessed()); + + }, () -> { + throw new NotFoundException("Unknown file=" + fileId); + }); + } + + @Transactional public void deleteFileAttributes(String fileId) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusProcessingUpdateService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusProcessingUpdateService.java index fa0a557dc..8e445c836 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusProcessingUpdateService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusProcessingUpdateService.java @@ -72,6 +72,10 @@ public class FileStatusProcessingUpdateService { manualRedactionService.updateProcessedDate(fileId, analyzeResult.getManualRedactions()); analysisFlagsCalculationService.calculateFlags(dossierId, fileId); + + if (analyzeResult.getAddedFileAttributes() != null && !analyzeResult.getAddedFileAttributes().isEmpty()) { + fileStatusPersistenceService.addFileAttributes(dossierId, fileId, analyzeResult.getAddedFileAttributes()); + } } } diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index b76a43926..e495dae07 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -25,7 +25,7 @@ - 3.155.0 + 3.206.0 2.39.0 3.140.0 3.63.0