merged stuff
This commit is contained in:
commit
a973e0789b
@ -56,14 +56,15 @@ public class DigitalSignatureService {
|
||||
@Transactional
|
||||
public void updateDigitalSignature(DigitalSignatureEntity digitalSignatureModel) {
|
||||
|
||||
digitalSignatureRepository.findById(DigitalSignatureEntity.ID).ifPresentOrElse(digitalSignature -> {
|
||||
digitalSignature.setCertificateName(digitalSignatureModel.getCertificateName());
|
||||
digitalSignature.setLocation(digitalSignatureModel.getLocation());
|
||||
digitalSignature.setContactInfo(digitalSignatureModel.getContactInfo());
|
||||
digitalSignature.setReason(digitalSignatureModel.getReason());
|
||||
}, () -> {
|
||||
int updateCount = digitalSignatureRepository.updateDigitalSignature(DigitalSignatureEntity.ID,
|
||||
digitalSignatureModel.getReason(),
|
||||
digitalSignatureModel.getLocation(),
|
||||
digitalSignatureModel.getContactInfo(),
|
||||
digitalSignatureModel.getCertificateName());
|
||||
if (updateCount == 0) {
|
||||
throw new NotFoundException("Digital Signature Not found");
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -77,36 +77,30 @@ public class AddRedactionPersistenceService {
|
||||
|
||||
@Transactional
|
||||
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
|
||||
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime));
|
||||
manualRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void undelete(String fileId, String annotationId) {
|
||||
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null));
|
||||
manualRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
|
||||
|
||||
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
|
||||
mre.setProcessedDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
mre.setStatus(annotationStatus);
|
||||
});
|
||||
|
||||
|
||||
manualRedactionRepository.updateStatus(new AnnotationEntityId(annotationId, fileId),
|
||||
OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS),
|
||||
annotationStatus);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary) {
|
||||
|
||||
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
|
||||
mre.setProcessedDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
mre.setStatus(annotationStatus);
|
||||
mre.setAddToDictionary(isAddOrRemoveFromDictionary);
|
||||
});
|
||||
|
||||
manualRedactionRepository.updateStatus(new AnnotationEntityId(annotationId, fileId),
|
||||
OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS),
|
||||
annotationStatus,
|
||||
isAddOrRemoveFromDictionary);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -55,16 +55,12 @@ public class CommentPersistenceService {
|
||||
@Transactional
|
||||
public void softDelete(long commentId, OffsetDateTime softDeletedTime) {
|
||||
|
||||
commentRepository.findById(commentId).ifPresent(mre -> {
|
||||
mre.setSoftDeletedTime(softDeletedTime);
|
||||
});
|
||||
commentRepository.updateSoftDelete(commentId, softDeletedTime);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void undelete(long commentId) {
|
||||
commentRepository.findById(commentId).ifPresent(mre -> {
|
||||
mre.setSoftDeletedTime(null);
|
||||
});
|
||||
commentRepository.updateSoftDelete(commentId, null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ public class DossierAttributePersistenceService {
|
||||
@Transactional
|
||||
public void updateDossierAttribute(String dossierId, String dossierAttributeId, String dossierAttributeValue) {
|
||||
|
||||
dossierAttributeRepository.findById(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId)).ifPresent(dossierAttribute -> dossierAttribute.setValue(dossierAttributeValue));
|
||||
dossierAttributeRepository.updateDossierAttribute(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId), dossierAttributeValue);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -16,9 +16,7 @@ import javax.transaction.Transactional;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
|
||||
|
||||
@ -66,14 +64,6 @@ public class DossierPersistenceService {
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateReportTemplateIds(String dossierId, Set<String> reportTemplateIds) {
|
||||
dossierRepository.findById(dossierId).ifPresent(dossier -> {
|
||||
dossier.setReportTemplates(reportTemplateRepository.findAllById(reportTemplateIds));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public DossierEntity getAndValidateDossier(String dossierId) {
|
||||
// check whether the dossierId exists and is not deleted
|
||||
var dossier = findByDossierId(dossierId);
|
||||
@ -95,44 +85,24 @@ public class DossierPersistenceService {
|
||||
}
|
||||
|
||||
|
||||
public List<DossierEntity> findSoftDeletedDossiers() {
|
||||
|
||||
return findAllDossiers().stream().filter(d -> d.getSoftDeletedTime() != null).collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void hardDelete(String dossierId) {
|
||||
dossierRepository.findById(dossierId).ifPresent(dossier -> {
|
||||
dossier.setHardDeletedTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossier.setStatus(DossierStatus.DELETED);
|
||||
dossier.setSoftDeletedTime(dossier.getSoftDeletedTime() == null ? OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS) : dossier.getSoftDeletedTime());
|
||||
});
|
||||
dossierRepository.hardDelete(dossierId, DossierStatus.DELETED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void undelete(String dossierId) {
|
||||
dossierRepository.findById(dossierId).ifPresent(dossier -> {
|
||||
if (dossier.getHardDeletedTime() != null) {
|
||||
throw new BadRequestException("Cannot undelete a hard-deleted dossier!");
|
||||
}
|
||||
dossier.setStatus(DossierStatus.ACTIVE);
|
||||
dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossier.setSoftDeletedTime(null);
|
||||
});
|
||||
int updateCount = dossierRepository.undelete(dossierId, DossierStatus.ACTIVE, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
if (updateCount == 0) {
|
||||
throw new BadRequestException("Cannot undelete a hard-deleted dossier!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void markDossierAsDeleted(String dossierId, OffsetDateTime softDeletedTime) {
|
||||
dossierRepository.findById(dossierId).ifPresent(dossier -> {
|
||||
dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossier.setStatus(DossierStatus.DELETED);
|
||||
dossier.setSoftDeletedTime(softDeletedTime);
|
||||
});
|
||||
dossierRepository.markDossierAsDeleted(dossierId, DossierStatus.DELETED, softDeletedTime, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
}
|
||||
|
||||
public boolean hasChangesSince(OffsetDateTime since) {
|
||||
|
||||
@ -45,26 +45,19 @@ public class DownloadStatusPersistenceService {
|
||||
@Transactional
|
||||
public void updateStatus(String storageId, DownloadStatusValue status) {
|
||||
|
||||
downloadStatusRepository.findById(storageId).ifPresent(downloadStatus -> downloadStatus.setStatus(status));
|
||||
downloadStatusRepository.updateStatus(storageId, status);
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateStatus(String storageId, DownloadStatusValue status, long fileSize) {
|
||||
downloadStatusRepository.findById(storageId).ifPresent(downloadStatus -> {
|
||||
downloadStatus.setStatus(status);
|
||||
downloadStatus.setFileSize(fileSize);
|
||||
});
|
||||
downloadStatusRepository.updateStatus(storageId, status, fileSize);
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateLastDownload(String storageId) {
|
||||
|
||||
downloadStatusRepository.findById(storageId).ifPresent(downloadStatus -> {
|
||||
downloadStatus.setLastDownload(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
});
|
||||
|
||||
downloadStatusRepository.updateLastDownload(storageId, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
}
|
||||
|
||||
|
||||
@ -88,7 +81,6 @@ public class DownloadStatusPersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public List<DownloadStatusEntity> getStatus() {
|
||||
|
||||
return downloadStatusRepository.findAll();
|
||||
|
||||
@ -1,16 +1,5 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
|
||||
@ -21,9 +10,17 @@ 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 lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@ -35,6 +32,7 @@ public class FileStatusPersistenceService {
|
||||
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
|
||||
private final DossierPersistenceService dossierService;
|
||||
|
||||
|
||||
public void createStatus(String dossierId, String fileId, String filename, String uploader) {
|
||||
|
||||
FileEntity file = new FileEntity();
|
||||
@ -58,6 +56,9 @@ public class FileStatusPersistenceService {
|
||||
int analysisVersion) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setNumberOfPages(numberOfPages);
|
||||
file.setProcessingStatus(ProcessingStatus.PROCESSED);
|
||||
file.setDictionaryVersion(dictionaryVersion);
|
||||
@ -66,7 +67,7 @@ public class FileStatusPersistenceService {
|
||||
file.setAnalysisDuration(duration);
|
||||
file.setDossierDictionaryVersion(dossierDictionaryVersion);
|
||||
file.setAnalysisVersion(analysisVersion);
|
||||
file.setNumberOfAnalyses(file.getNumberOfAnalyses()+1);
|
||||
file.setNumberOfAnalyses(file.getNumberOfAnalyses() + 1);
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setLastProcessed(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
}, () -> {
|
||||
@ -77,8 +78,13 @@ public class FileStatusPersistenceService {
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateFlags(String fileId, boolean hasRedactions, boolean hasHints, boolean hasImages, boolean hasSuggestions, boolean hasComments, boolean hasUpdates) {
|
||||
fileRepository.updateFlags(fileId, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), hasRedactions, hasHints, hasImages, hasSuggestions, hasComments, hasUpdates);
|
||||
public void updateFlags(String fileId, boolean hasRedactions, boolean hasHints, boolean hasImages,
|
||||
boolean hasSuggestions, boolean hasComments, boolean hasUpdates) {
|
||||
|
||||
if (isFileDeleted(fileId)) {
|
||||
return;
|
||||
}
|
||||
fileRepository.updateFlags(fileId, OffsetDateTime.now(), hasRedactions, hasHints, hasImages, hasSuggestions, hasComments, hasUpdates);
|
||||
}
|
||||
|
||||
|
||||
@ -86,6 +92,9 @@ public class FileStatusPersistenceService {
|
||||
public void updateWorkflowStatus(String fileId, WorkflowStatus workflowStatus, boolean approval) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setWorkflowStatus(workflowStatus);
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setApprovalDate(approval ? OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS) : null);
|
||||
@ -93,13 +102,16 @@ public class FileStatusPersistenceService {
|
||||
throw new NotFoundException("Unknown file=" + fileId);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateProcessingStatus(String fileId, ProcessingStatus processingStatus) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setProcessingStatus(processingStatus);
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
}, () -> {
|
||||
@ -107,10 +119,14 @@ public class FileStatusPersistenceService {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void setUpdateStatusIndexingSuccessful(String fileId) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setProcessingStatus(ProcessingStatus.PROCESSED);
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setLastIndexed(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
@ -120,10 +136,14 @@ public class FileStatusPersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateLastOCRTime(String fileId, OffsetDateTime time) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setLastOCRTime(time);
|
||||
}, () -> {
|
||||
@ -132,10 +152,14 @@ public class FileStatusPersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateHasComments(String fileId, boolean hasComments) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setHasAnnotationComments(hasComments);
|
||||
}, () -> {
|
||||
@ -143,10 +167,14 @@ public class FileStatusPersistenceService {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateLastManualRedaction(String fileId, OffsetDateTime date) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setLastManualRedaction(date);
|
||||
}, () -> {
|
||||
@ -155,10 +183,15 @@ public class FileStatusPersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void setUpdateLastManualRedactionAndHasSuggestions(String fileId, OffsetDateTime date, boolean hasSuggestions) {
|
||||
public void setUpdateLastManualRedactionAndHasSuggestions(String fileId, OffsetDateTime date,
|
||||
boolean hasSuggestions) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setLastManualRedaction(date);
|
||||
file.setHasSuggestions(hasSuggestions);
|
||||
@ -168,12 +201,16 @@ public class FileStatusPersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional(value = Transactional.TxType.REQUIRES_NEW)
|
||||
public void setFileAttributes(String dossierId, String fileId, Map<String, String> fileAttributes) {
|
||||
|
||||
fileAttributesRepository.deleteByFileId(fileId);
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
var fileAttributeEntities = convertFileAttributes(dossierId, file, fileAttributes);
|
||||
file.setLastFileAttributeChange(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
@ -184,10 +221,14 @@ public class FileStatusPersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void setExcludedPages(String fileId, Set<Integer> excludedPages) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setLastManualRedaction(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setExcludedPages(excludedPages);
|
||||
@ -195,7 +236,6 @@ public class FileStatusPersistenceService {
|
||||
throw new NotFoundException("Unknown file=" + fileId);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -207,13 +247,17 @@ public class FileStatusPersistenceService {
|
||||
|
||||
|
||||
public List<FileEntity> getStatusesForDossier(String dossierId) {
|
||||
|
||||
return fileRepository.findByDossierId(dossierId);
|
||||
}
|
||||
|
||||
|
||||
public List<FileEntity> getAllStatuses() {
|
||||
|
||||
return fileRepository.findAll();
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void softDelete(String fileId, OffsetDateTime softDeletedTime) {
|
||||
|
||||
@ -225,14 +269,16 @@ public class FileStatusPersistenceService {
|
||||
throw new NotFoundException("Unknown file=" + fileId);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void hardDelete(String fileId) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
file.setProcessingStatus(ProcessingStatus.DELETED);
|
||||
file.setDeleted(file.getDeleted() == null ? OffsetDateTime.now()
|
||||
.truncatedTo(ChronoUnit.MILLIS) : file.getDeleted());
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setDeleted(file.getDeleted() == null ? OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS) : file.getDeleted());
|
||||
file.setHardDeletedTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
@ -244,6 +290,7 @@ public class FileStatusPersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void undelete(String fileId) {
|
||||
|
||||
@ -259,24 +306,33 @@ public class FileStatusPersistenceService {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void setCurrentReviewer(String fileId, String currentReviewer, String lastReviewer) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setCurrentReviewer(currentReviewer);
|
||||
file.setLastReviewer(lastReviewer);
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setWorkflowStatus(currentReviewer == null ? WorkflowStatus.UNASSIGNED :WorkflowStatus.UNDER_REVIEW);
|
||||
file.setWorkflowStatus(currentReviewer == null ? WorkflowStatus.UNASSIGNED : WorkflowStatus.UNDER_REVIEW);
|
||||
file.setWorkflowStatus(currentReviewer == null ? WorkflowStatus.UNASSIGNED : WorkflowStatus.UNDER_REVIEW);
|
||||
}, () -> {
|
||||
throw new NotFoundException("Unknown file=" + fileId);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void toggleExclusion(String fileId, boolean excluded) {
|
||||
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
if (isFileDeleted(file)) {
|
||||
return;
|
||||
}
|
||||
file.setExcluded(excluded);
|
||||
file.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
file.setLastProcessed(null);
|
||||
@ -298,6 +354,7 @@ public class FileStatusPersistenceService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void overwriteFile(String fileId, String uploader, String filename) {
|
||||
|
||||
@ -330,7 +387,10 @@ public class FileStatusPersistenceService {
|
||||
});
|
||||
}
|
||||
|
||||
private List<FileAttributeEntity> convertFileAttributes(String dossierId, FileEntity file, Map<String, String> fileAttributesMap) {
|
||||
|
||||
private List<FileAttributeEntity> convertFileAttributes(String dossierId, FileEntity file,
|
||||
Map<String, String> fileAttributesMap) {
|
||||
|
||||
var dossier = dossierService.getAndValidateDossier(dossierId);
|
||||
List<FileAttributeConfigEntity> configuration = fileAttributeConfigPersistenceService.getFileAttributes(dossier.getDossierTemplateId());
|
||||
|
||||
@ -338,15 +398,38 @@ public class FileStatusPersistenceService {
|
||||
var fa = new FileAttributeEntity();
|
||||
fa.setFileAttributeId(new FileAttributeEntity.FileAttributeEntityId());
|
||||
fa.setFile(file);
|
||||
fa.setFileAttributeConfig(configuration.stream().filter(c -> c.getId().equals(entry.getKey())).findAny().orElseThrow(() ->
|
||||
new BadRequestException("Invalid File Attribute Id")));
|
||||
fa.setFileAttributeConfig(configuration.stream()
|
||||
.filter(c -> c.getId().equals(entry.getKey()))
|
||||
.findAny()
|
||||
.orElseThrow(() -> new BadRequestException("Invalid File Attribute Id")));
|
||||
fa.setValue(entry.getValue());
|
||||
return fa;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
private boolean isFileDeleted(FileEntity file) {
|
||||
|
||||
if (file == null || file.getDeleted() != null || file.getHardDeletedTime() != null || ProcessingStatus.DELETED.equals(file.getProcessingStatus())) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private boolean isFileDeleted(String fileId) {
|
||||
|
||||
AtomicBoolean isFileDeleted = new AtomicBoolean(false);
|
||||
fileRepository.findById(fileId).ifPresentOrElse((file) -> {
|
||||
isFileDeleted.set(isFileDeleted(file));
|
||||
}, () -> {
|
||||
throw new NotFoundException("Unknown file=" + fileId);
|
||||
});
|
||||
|
||||
return isFileDeleted.get();
|
||||
}
|
||||
|
||||
public boolean hasChangesSince(String dossierId, OffsetDateTime since) {
|
||||
return fileRepository.existsByDossierIdAndLastUpdatedIsAfter(dossierId,since);
|
||||
return fileRepository.existsByDossierIdAndLastUpdatedIsAfter(dossierId, since);
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,10 +36,8 @@ public class ForceRedactionPersistenceService {
|
||||
|
||||
@Transactional
|
||||
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
|
||||
forceRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
|
||||
mre.setProcessedDate(OffsetDateTime.now());
|
||||
mre.setStatus(annotationStatus);
|
||||
});
|
||||
forceRedactionRepository.updateStatus(new AnnotationEntityId(annotationId, fileId), annotationStatus,
|
||||
OffsetDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@ -50,12 +48,12 @@ public class ForceRedactionPersistenceService {
|
||||
|
||||
@Transactional
|
||||
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
|
||||
forceRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime));
|
||||
forceRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void undelete(String fileId, String annotationId) {
|
||||
forceRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null));
|
||||
forceRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
|
||||
}
|
||||
|
||||
public ManualForceRedactionEntity findForceRedaction(String fileId, String annotationId) {
|
||||
|
||||
@ -35,11 +35,8 @@ public class ImageRecategorizationPersistenceService {
|
||||
@Transactional
|
||||
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
|
||||
|
||||
imageRecategorizationRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
|
||||
mre.setProcessedDate(OffsetDateTime.now());
|
||||
mre.setStatus(annotationStatus);
|
||||
});
|
||||
|
||||
imageRecategorizationRepository.updateStatus(new AnnotationEntityId(annotationId, fileId), annotationStatus,
|
||||
OffsetDateTime.now());
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@ -50,12 +47,12 @@ public class ImageRecategorizationPersistenceService {
|
||||
@Transactional
|
||||
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
|
||||
|
||||
imageRecategorizationRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime));
|
||||
imageRecategorizationRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void undelete(String fileId, String annotationId) {
|
||||
imageRecategorizationRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null));
|
||||
imageRecategorizationRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
|
||||
}
|
||||
|
||||
public ManualImageRecategorizationEntity findRecategorization(String fileId, String annotationId) {
|
||||
|
||||
@ -41,24 +41,20 @@ public class LegalBasisChangePersistenceService {
|
||||
@Transactional
|
||||
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
|
||||
|
||||
legalBasisChangeRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime));
|
||||
legalBasisChangeRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void undelete(String fileId, String annotationId) {
|
||||
legalBasisChangeRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null));
|
||||
legalBasisChangeRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
|
||||
|
||||
legalBasisChangeRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
|
||||
mre.setProcessedDate(OffsetDateTime.now());
|
||||
mre.setStatus(annotationStatus);
|
||||
});
|
||||
|
||||
|
||||
legalBasisChangeRepository.updateStatus(new AnnotationEntityId(annotationId, fileId), annotationStatus,
|
||||
OffsetDateTime.now());
|
||||
}
|
||||
|
||||
public ManualLegalBasisChangeEntity findLegalBasisChange(String fileId, String annotationId) {
|
||||
|
||||
@ -47,16 +47,18 @@ public class NotificationPersistenceService {
|
||||
|
||||
@Transactional
|
||||
public void setReadDate(String userId, long notificationId, OffsetDateTime readDate) {
|
||||
notificationRepository.findByIdAndUserId(notificationId, userId).ifPresentOrElse(notification -> notification.setReadDate(readDate), () -> {
|
||||
int countUpdate = notificationRepository.setReadDate(userId, notificationId, readDate);
|
||||
if (countUpdate == 0) {
|
||||
throw new NotFoundException("Notification not found");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void softDelete(String userId, long notificationId) {
|
||||
notificationRepository.findByIdAndUserId(notificationId, userId).ifPresentOrElse(notification -> notification.setSoftDeleted(OffsetDateTime.now()), () -> {
|
||||
int countUpdate = notificationRepository.softDelete(userId, notificationId, OffsetDateTime.now());
|
||||
if (countUpdate == 0) {
|
||||
throw new NotFoundException("Notification not found");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -55,33 +55,24 @@ public class RemoveRedactionPersistenceService {
|
||||
|
||||
@Transactional
|
||||
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
|
||||
removeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime));
|
||||
|
||||
removeRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void undelete(String fileId, String annotationId) {
|
||||
removeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null));
|
||||
removeRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
|
||||
|
||||
removeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
|
||||
mre.setProcessedDate(OffsetDateTime.now());
|
||||
mre.setStatus(annotationStatus);
|
||||
});
|
||||
|
||||
removeRedactionRepository.updateStatus(new AnnotationEntityId(annotationId, fileId), annotationStatus, OffsetDateTime.now());
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary) {
|
||||
|
||||
removeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
|
||||
mre.setProcessedDate(OffsetDateTime.now());
|
||||
mre.setStatus(annotationStatus);
|
||||
mre.setRemoveFromDictionary(isAddOrRemoveFromDictionary);
|
||||
});
|
||||
|
||||
removeRedactionRepository.updateStatusAndRemoveFromDictionary(new AnnotationEntityId(annotationId, fileId),
|
||||
annotationStatus, OffsetDateTime.now(), isAddOrRemoveFromDictionary);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,10 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface CommentRepository extends JpaRepository<CommentEntity, Long> {
|
||||
@ -12,4 +15,8 @@ public interface CommentRepository extends JpaRepository<CommentEntity, Long> {
|
||||
List<CommentEntity> findByFileId(String fileId);
|
||||
|
||||
boolean existsByFileIdAndSoftDeletedTimeIsNull(String fileId);
|
||||
|
||||
@Modifying
|
||||
@Query("update CommentEntity c set c.softDeletedTime = :softDeleteTime where c.id = :id")
|
||||
int updateSoftDelete(long id, OffsetDateTime softDeleteTime);
|
||||
}
|
||||
|
||||
@ -2,6 +2,17 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import javax.persistence.Column;
|
||||
|
||||
public interface DigitalSignatureRepository extends JpaRepository<DigitalSignatureEntity, String> {
|
||||
|
||||
|
||||
@Modifying
|
||||
@Query("update DigitalSignatureEntity e set e.reason = :reason, e.location = :location, e.contactInfo = :contactInfo, e.certificateName= :certificateName " +
|
||||
"where e.id = :id")
|
||||
int updateDigitalSignature(String id, String reason, String location, String contactInfo, String certificateName);
|
||||
|
||||
}
|
||||
|
||||
@ -19,4 +19,8 @@ public interface DossierAttributeRepository extends JpaRepository<DossierAttribu
|
||||
@Modifying
|
||||
@Query("DELETE FROM DossierAttributeEntity e WHERE e.dossierAttributeConfig.id = :id")
|
||||
void deleteByDossierAttributeConfigId(String id);
|
||||
|
||||
@Modifying
|
||||
@Query("update DossierAttributeEntity dae set dae.value = :dossierAttributeValue where dae.id = :dossierAttributeId")
|
||||
void updateDossierAttribute(DossierAttributeEntity.DossierAttributeEntityId dossierAttributeId, String dossierAttributeValue);
|
||||
}
|
||||
|
||||
@ -1,12 +1,34 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
public interface DossierRepository extends JpaRepository<DossierEntity, String> {
|
||||
|
||||
@Modifying
|
||||
@Query("update DossierEntity d set d.status = :dossierStatus, d.hardDeletedTime = :hardDeletedTime, d.lastUpdated = :lastUpdated," +
|
||||
" d.softDeletedTime = " +
|
||||
"case " +
|
||||
"when d.softDeletedTime is null then :hardDeletedTime " +
|
||||
"when d.softDeletedTime is not null then d.softDeletedTime " +
|
||||
"end " +
|
||||
"where d.id = :dossierId")
|
||||
void hardDelete(String dossierId, DossierStatus dossierStatus, OffsetDateTime hardDeletedTime, OffsetDateTime lastUpdated);
|
||||
|
||||
@Modifying
|
||||
@Query("update DossierEntity d set d.status = :dossierStatus, d.softDeletedTime = null, d.lastUpdated = :lastUpdated where d.id = :dossierId" +
|
||||
" and d.hardDeletedTime is null")
|
||||
int undelete(String dossierId, DossierStatus dossierStatus, OffsetDateTime lastUpdated);
|
||||
|
||||
@Modifying
|
||||
@Query("update DossierEntity d set d.status = :dossierStatus, d.softDeletedTime = :softDeletedTime, d.lastUpdated = :lastUpdated where d.id = :dossierId")
|
||||
void markDossierAsDeleted(String dossierId, DossierStatus dossierStatus, OffsetDateTime softDeletedTime, OffsetDateTime lastUpdated);
|
||||
|
||||
boolean existsByLastUpdatedIsAfter(OffsetDateTime since);
|
||||
|
||||
}
|
||||
|
||||
@ -1,10 +1,26 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatusValue;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface DownloadStatusRepository extends JpaRepository<DownloadStatusEntity, String> {
|
||||
List<DownloadStatusEntity> findAllByUserId(String userId);
|
||||
|
||||
@Modifying
|
||||
@Query("update DownloadStatusEntity ds set ds.status = :status where ds.storageId = :storageId")
|
||||
void updateStatus(String storageId, DownloadStatusValue status);
|
||||
|
||||
@Modifying
|
||||
@Query("update DownloadStatusEntity ds set ds.status = :status, ds.fileSize = :fileSize where ds.storageId = :storageId")
|
||||
void updateStatus(String storageId, DownloadStatusValue status, long fileSize);
|
||||
|
||||
@Modifying
|
||||
@Query("update DownloadStatusEntity ds set ds.lastDownload = :lastDownload where ds.storageId = :storageId")
|
||||
void updateLastDownload(String storageId, OffsetDateTime lastDownload);
|
||||
}
|
||||
|
||||
@ -2,11 +2,26 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface ForceRedactionRepository extends JpaRepository<ManualForceRedactionEntity, AnnotationEntityId> {
|
||||
|
||||
List<ManualForceRedactionEntity> findByIdFileId(String fileId);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualForceRedactionEntity mfr set mfr.status = :annotationStatus, mfr.processedDate = :processedDate " +
|
||||
"where mfr.id = :annotationEntityId")
|
||||
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualForceRedactionEntity mfr set mfr.softDeletedTime = :softDeletedTime " +
|
||||
"where mfr.id = :annotationEntityId")
|
||||
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);
|
||||
|
||||
}
|
||||
|
||||
@ -2,10 +2,25 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualImageRecategorizationEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface ImageRecategorizationRepository extends JpaRepository<ManualImageRecategorizationEntity, AnnotationEntityId> {
|
||||
List<ManualImageRecategorizationEntity> findByIdFileId(String fileId);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualImageRecategorizationEntity mir set mir.status = :annotationStatus, mir.processedDate = :processedDate " +
|
||||
"where mir.id = :annotationEntityId")
|
||||
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualImageRecategorizationEntity mir set mir.softDeletedTime = :softDeletedTime " +
|
||||
"where mir.id = :annotationEntityId")
|
||||
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);
|
||||
|
||||
}
|
||||
|
||||
@ -2,11 +2,25 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface LegalBasisChangeRepository extends JpaRepository<ManualLegalBasisChangeEntity, AnnotationEntityId> {
|
||||
|
||||
List<ManualLegalBasisChangeEntity> findByIdFileId(String fileId);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualLegalBasisChangeEntity mlbc set mlbc.status = :annotationStatus, mlbc.processedDate = :processedDate " +
|
||||
"where mlbc.id = :annotationEntityId")
|
||||
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualLegalBasisChangeEntity mlbc set mlbc.softDeletedTime = :softDeletedTime " +
|
||||
"where mlbc.id = :annotationEntityId")
|
||||
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);
|
||||
}
|
||||
|
||||
@ -2,11 +2,29 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface ManualRedactionRepository extends JpaRepository<ManualRedactionEntryEntity, AnnotationEntityId> {
|
||||
|
||||
List<ManualRedactionEntryEntity> findByIdFileId(String fileId);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualRedactionEntryEntity m set m.softDeletedTime = :softDeleteTime where m.id = :id")
|
||||
void updateSoftDelete(AnnotationEntityId id, OffsetDateTime softDeleteTime);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualRedactionEntryEntity m set m.processedDate = :processedDate, m.status = :annotationStatus" +
|
||||
" where m.id = :id")
|
||||
void updateStatus(AnnotationEntityId id, OffsetDateTime processedDate, AnnotationStatus annotationStatus);
|
||||
|
||||
@Modifying
|
||||
@Query("update ManualRedactionEntryEntity m set m.processedDate = :processedDate, m.status = :annotationStatus," +
|
||||
" m.addToDictionary = :isAddOrRemoveFromDictionary where m.id = :id")
|
||||
void updateStatus(AnnotationEntityId id, OffsetDateTime processedDate, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary);
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.notification.NotificationEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
@ -21,4 +22,16 @@ public interface NotificationRepository extends JpaRepository<NotificationEntity
|
||||
List<NotificationEntity> findNotSeenForUser(String userId);
|
||||
|
||||
Optional<NotificationEntity> findByIdAndUserId(long notificationId, String userId);
|
||||
|
||||
@Modifying
|
||||
@Query("update NotificationEntity n set n.seenDate = :seenDate where n.id = :notificationId and n.userId = :userId")
|
||||
int setSeenDate(String userId, long notificationId, OffsetDateTime seenDate);
|
||||
|
||||
@Modifying
|
||||
@Query("update NotificationEntity n set n.readDate = :readDate where n.id = :notificationId and n.userId = :userId")
|
||||
int setReadDate(String userId, long notificationId, OffsetDateTime readDate);
|
||||
|
||||
@Modifying
|
||||
@Query("update NotificationEntity n set n.softDeleted = :softDeleted where n.id = :notificationId and n.userId = :userId")
|
||||
int softDelete(String userId, long notificationId, OffsetDateTime softDeleted);
|
||||
}
|
||||
|
||||
@ -2,11 +2,32 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface RemoveRedactionRepository extends JpaRepository<IdRemovalEntity, AnnotationEntityId> {
|
||||
|
||||
List<IdRemovalEntity> findByIdFileId(String fileId);
|
||||
|
||||
@Modifying
|
||||
@Query("update IdRemovalEntity idr set idr.softDeletedTime = :softDeletedTime " +
|
||||
"where idr.id = :annotationEntityId")
|
||||
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);
|
||||
|
||||
@Modifying
|
||||
@Query("update IdRemovalEntity idr set idr.status = :annotationStatus, idr.processedDate = :processedDate " +
|
||||
"where idr.id = :annotationEntityId")
|
||||
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);
|
||||
|
||||
@Modifying
|
||||
@Query("update IdRemovalEntity idr set idr.status = :annotationStatus, idr.processedDate = :processedDate, " +
|
||||
"idr.removeFromDictionary = :removeFromDictionary where idr.id = :annotationEntityId")
|
||||
void updateStatusAndRemoveFromDictionary(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate,
|
||||
boolean removeFromDictionary);
|
||||
|
||||
}
|
||||
|
||||
@ -1,17 +1,19 @@
|
||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileProcessingClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||
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.AnalyzeResult;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
@ -27,8 +29,13 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private FileClient fileClient;
|
||||
|
||||
@Autowired
|
||||
private UploadClient uploadClient;
|
||||
|
||||
|
||||
@Test
|
||||
public void testFileProcessing() {
|
||||
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
@ -39,42 +46,85 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||
var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.ERROR);
|
||||
|
||||
|
||||
fileProcessingClient.analysisSuccessful(dossier.getId(), file.getId(), AnalyzeResult.builder()
|
||||
.analysisVersion(100)
|
||||
.fileId(file.getId())
|
||||
.dossierId(dossier.getId()).build());
|
||||
.dossierId(dossier.getId())
|
||||
.build());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED);
|
||||
assertThat(loadedFile.getAnalysisVersion()).isEqualTo(100);
|
||||
|
||||
|
||||
fileProcessingClient.ocrFailed(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.ERROR);
|
||||
|
||||
|
||||
fileProcessingClient.ocrSuccessful(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.PROCESSING);
|
||||
assertThat(loadedFile.getLastOCRTime()).isNotNull();
|
||||
|
||||
|
||||
fileProcessingClient.indexing(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.INDEXING);
|
||||
assertThat(loadedFile.getLastIndexed()).isNull();
|
||||
|
||||
|
||||
fileProcessingClient.indexingFailed(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.ERROR);
|
||||
|
||||
|
||||
fileProcessingClient.indexingSuccessful(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED);
|
||||
assertThat(loadedFile.getLastIndexed()).isNotNull();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testFileProcessingAfterDeletion() {
|
||||
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
|
||||
assertThat(file.getLastOCRTime()).isNull();
|
||||
|
||||
fileProcessingClient.analysisFailed(dossier.getId(), file.getId());
|
||||
var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.ERROR);
|
||||
|
||||
fileProcessingClient.analysisSuccessful(dossier.getId(), file.getId(), AnalyzeResult.builder()
|
||||
.analysisVersion(100)
|
||||
.fileId(file.getId())
|
||||
.dossierId(dossier.getId())
|
||||
.build());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED);
|
||||
assertThat(loadedFile.getAnalysisVersion()).isEqualTo(100);
|
||||
|
||||
// Delete file
|
||||
uploadClient.deleteFile(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.DELETED);
|
||||
assertThat(loadedFile.getDeleted()).isNotNull();
|
||||
|
||||
fileProcessingClient.ocrSuccessful(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.DELETED);
|
||||
|
||||
fileProcessingClient.indexing(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.DELETED);
|
||||
|
||||
fileProcessingClient.indexingFailed(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.DELETED);
|
||||
|
||||
fileProcessingClient.indexingSuccessful(dossier.getId(), file.getId());
|
||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.DELETED);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user