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 abab62024..56832f035 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 @@ -1,18 +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.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import javax.transaction.Transactional; - -import org.apache.commons.lang3.StringUtils; -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; @@ -22,8 +9,18 @@ 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.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.time.OffsetDateTime; +import java.time.temporal.ChronoUnit; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -165,7 +162,7 @@ public class FileStatusPersistenceService { var fileAttributeEntities = convertFileAttributes(dossierId, file, fileAttributes); fileAttributesRepository.saveAllAndFlush(fileAttributeEntities); - fileRepository.updateLastAttributeChangeDate(fileId,OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); + fileRepository.updateLastAttributeChangeDate(fileId, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); }, () -> { throw new NotFoundException("Unknown file=" + fileId); @@ -329,7 +326,7 @@ public class FileStatusPersistenceService { .findAny().map(FileAttributeConfigEntity::getId) .orElseThrow(() -> new BadRequestException("Invalid File Attribute Id"))); fa.setFileAttributeId(id); - fa.setValue(StringUtils.isBlank(entry.getValue())? null : entry.getValue()); + fa.setValue(StringUtils.isBlank(entry.getValue()) ? null : entry.getValue()); return fa; }).collect(Collectors.toList()); } @@ -354,9 +351,9 @@ public class FileStatusPersistenceService { } - public int countSoftDeletedFiles(String dossierId) { + public int countSoftDeletedFiles(String dossierTemplateId) { - return fileRepository.countSoftDeletedFiles(dossierId); + return fileRepository.countSoftDeletedFiles(dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java index ed29a419c..c4a05af02 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java @@ -133,8 +133,10 @@ public interface FileRepository extends JpaRepository { int overwriteFile(String fileId, String filename, String uploader, ProcessingStatus processingStatus, WorkflowStatus workflowStatus, OffsetDateTime lastUploaded, OffsetDateTime lastUpdated, boolean hasHighlights); - @Query("select count(f) from FileEntity f where f.dossierId = :dossierId and f.deleted is not null and f.hardDeletedTime is null") - int countSoftDeletedFiles(String dossierId); + @Query("select count(f) from FileEntity f inner join DossierEntity d on d.id = f.dossierId where d.dossierTemplateId = :dossierTemplateId" + + " and ((f.deleted is not null and f.hardDeletedTime is null) or " + + " (d.softDeletedTime is not null and d.hardDeletedTime is null)) and d.archivedTime is null") + int countSoftDeletedFiles(String dossierTemplateId); @Query("select distinct f.dossierId from FileEntity f where f.lastUpdated > :since") List findDossierChangeByLastUpdatedIsAfter(OffsetDateTime since); @@ -182,7 +184,7 @@ public interface FileRepository extends JpaRepository { FilePageCountsProjection countPages(String dossierTemplateId); @Query("select count(f) from FileEntity f inner join DossierEntity d on d.id = f.dossierId where " + - "f.hardDeletedTime is not null and f.deleted is not null and " + + "f.hardDeletedTime is null and f.deleted is null and " + "d.dossierTemplateId = :dossierTemplateId and " + "d.softDeletedTime is null and d.hardDeletedTime is null and d.archivedTime is null") int countActiveFiles(String dossierTemplateId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java index b2380f7ec..89709b873 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java @@ -83,7 +83,7 @@ public class DossierTemplateStatsService { dts.setNumberOfActiveDossiers(dossierRepository.countActive(dossierTemplateId)); dts.setNumberOfDeletedDossiers(dossierRepository.countSofDeleted(dossierTemplateId)); dts.setNumberOfActiveFiles(fileRepository.countActiveFiles(dossierTemplateId)); - dts.setNumberOfActiveFiles(fileRepository.countSoftDeletedFiles(dossierTemplateId)); + dts.setNumberOfSoftDeletedFiles(fileRepository.countSoftDeletedFiles(dossierTemplateId)); var processingCounts = fileRepository.countFilesByProcessingStatus(dossierTemplateId); var workflowCounts = fileRepository.countFilesByWorkflowStatus(dossierTemplateId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/AutomaticAnalysisJob.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/AutomaticAnalysisJob.java index ff3bd9347..59abc2695 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/AutomaticAnalysisJob.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/AutomaticAnalysisJob.java @@ -41,7 +41,7 @@ public class AutomaticAnalysisJob implements Job { .getMessageCount(), redactionQueueInfo.getConsumerCount()); // only 1 file in queue var consumerCount = redactionQueueInfo.getConsumerCount(); - if (redactionQueueInfo.getMessageCount() <= consumerCount) { + if (redactionQueueInfo.getMessageCount() <= consumerCount * 5) { // queue up 5 files var allStatuses = getAllRelevantStatuses(); @@ -58,7 +58,7 @@ public class AutomaticAnalysisJob implements Job { if (next.isFullAnalysisRequired()) { log.info("Queued file: {} for automatic full analysis! ", next.getFilename()); - fileStatusService.setStatusFullReprocess(next.getDossierId(), next.getId(), false, true); + fileStatusService.setStatusFullReprocess(next.getDossierId(), next.getId(), false, false); } else if (next.isReanalysisRequired()) { log.info("Queued file: {} for automatic reanalysis! ", next.getFilename()); fileStatusService.setStatusReprocess(next.getDossierId(), next.getId(), false);