From 1d296c56472a701d1ecfc26a0a2a9caa42b71586 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Mon, 11 Oct 2021 20:51:48 +0300 Subject: [PATCH 1/2] flag calculations for hasUpdates --- .../ViewedPagesPersistenceService.java | 4 +++ .../repository/ViewedPagesRepository.java | 5 +++ .../controller/FileStatusController.java | 1 - .../AnalysisFlagsCalculationService.java | 31 ++++++++++++------- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java index a03eebe72..52bfbd701 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import javax.transaction.Transactional; import java.time.OffsetDateTime; +import java.util.ArrayList; import java.util.List; @Service @@ -49,4 +50,7 @@ public class ViewedPagesPersistenceService { } + public void resetViewedPages(String fileId, String currentReviewer, List viewedPagesToReset) { + viewedPagesRepository.deleteSeenPages(fileId,currentReviewer,viewedPagesToReset); + } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ViewedPagesRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ViewedPagesRepository.java index b08d9defc..a6492b7c4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ViewedPagesRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ViewedPagesRepository.java @@ -2,6 +2,8 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ViewedPageEntity; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; import java.util.List; @@ -11,4 +13,7 @@ public interface ViewedPagesRepository extends JpaRepository findByFileIdAndIdUserId(String fileId, String userId); + @Modifying + @Query("DELETE FROM ViewedPageEntity e where e.id.fileId = :fileId and e.id.userId = :currentReviewer and e.id.page in :viewedPagesToReset") + void deleteSeenPages(String fileId, String currentReviewer, List viewedPagesToReset); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java index 25445f2d5..d02d7184b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java @@ -23,7 +23,6 @@ import static com.iqser.red.service.persistence.management.v1.processor.utils.Ma public class FileStatusController implements StatusResource { private final FileStatusService fileStatusService; - private final DossierService dossierService; private final ExcludeFromAnalysisService excludeFromAnalysis; private final AnalysisFlagsCalculationService analysisFlagsCalculationService; private final ReanalysisRequiredStatusService reanalysisRequiredStatusService; diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java index 66186b731..79c180e1b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java @@ -6,13 +6,17 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.time.OffsetDateTime; +import java.util.ArrayList; import java.util.Map; import java.util.stream.Collectors; + +@Slf4j @Service @RequiredArgsConstructor public class AnalysisFlagsCalculationService { @@ -25,6 +29,8 @@ public class AnalysisFlagsCalculationService { @Async public void calculateFlags(String dossierId, String fileId) { + long startTime = System.nanoTime(); + var file = fileStatusPersistenceService.getStatus(fileId); var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true); @@ -40,7 +46,8 @@ public class AnalysisFlagsCalculationService { boolean hasComments = false; - viewedPagesPersistenceService.findViewedPages(fileId, file.getCurrentReviewer()); + var viewedPagesToReset = new ArrayList(); + for (RedactionLogEntry entry : redactionLog.getRedactionLogEntry()) { if (entry.isExcluded()) { @@ -49,41 +56,43 @@ public class AnalysisFlagsCalculationService { String type = getType(entry.getType()); - if (entry.isRedacted() && !entry.isManual() || entry.isManual() && entry.getStatus() - .equals(AnnotationStatus.APPROVED)) { + if (!hasRedactions && (entry.isRedacted() && !entry.isManual() || entry.isManual() && entry.getStatus() + .equals(AnnotationStatus.APPROVED))) { hasRedactions = true; } - if (entry.isHint() && !type.equals("false_positive")) { + if (!hasHints && (entry.isHint() && !type.equals("false_positive"))) { hasHints = true; } - if (entry.isHint() && type.equals("image") || entry.isImage()) { + if (!hasImages && (type.equals("image") || entry.isImage())) { hasImages = true; } - if (entry.isManual() && entry.getStatus() - .equals(AnnotationStatus.REQUESTED)) { + if (!hasSuggestions && (entry.isManual() && entry.getStatus().equals(AnnotationStatus.REQUESTED))) { hasSuggestions = true; } - if (entry.getComments() != null && !entry.getComments().isEmpty()) { + if (!hasComments && (entry.getComments() != null && !entry.getComments().isEmpty())) { hasComments = true; } var lastChange = entry.getChanges().isEmpty() ? null : entry.getChanges().get(entry.getChanges().size() - 1); var viewedPage = entry.getPositions().isEmpty() ? null : viewedPages.get(entry.getPositions().get(0).getPage()); + if (lastChange != null && lastChange.getDateTime() != null && viewedPage != null && viewedPage.isBefore(lastChange.getDateTime())) { + viewedPagesToReset.add(entry.getPositions().get(0).getPage()); hasUpdates = true; } - if (hasRedactions && hasHints && hasSuggestions && hasImages && hasComments && hasUpdates) { - break; - } } + + viewedPagesPersistenceService.resetViewedPages(fileId, file.getCurrentReviewer(), viewedPagesToReset); fileStatusPersistenceService.updateFlags(fileId, hasRedactions, hasHints, hasImages, hasSuggestions, hasComments, hasUpdates); + + log.info("Flag Calculations for file: {} took: {}ms", fileId, System.currentTimeMillis() - startTime); } From f7c083b347bc302db11d841cf17931898dfb4848 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Mon, 11 Oct 2021 20:54:27 +0300 Subject: [PATCH 2/2] pmd fix --- .../v1/server/service/AnalysisFlagsCalculationService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java index 79c180e1b..48342546c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java @@ -61,7 +61,7 @@ public class AnalysisFlagsCalculationService { hasRedactions = true; } - if (!hasHints && (entry.isHint() && !type.equals("false_positive"))) { + if (!hasHints && entry.isHint() && !type.equals("false_positive")) { hasHints = true; } @@ -69,11 +69,11 @@ public class AnalysisFlagsCalculationService { hasImages = true; } - if (!hasSuggestions && (entry.isManual() && entry.getStatus().equals(AnnotationStatus.REQUESTED))) { + if (!hasSuggestions && entry.isManual() && entry.getStatus().equals(AnnotationStatus.REQUESTED)) { hasSuggestions = true; } - if (!hasComments && (entry.getComments() != null && !entry.getComments().isEmpty())) { + if (!hasComments && entry.getComments() != null && !entry.getComments().isEmpty()) { hasComments = true; }