diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStats.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStats.java index 6466a2c74..2dfa2888b 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStats.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStats.java @@ -4,6 +4,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus; import lombok.*; +import java.time.OffsetDateTime; import java.util.Map; @Data @@ -25,4 +26,6 @@ public class DossierStats { private boolean hasNoFlagsFilePresent; // true if at least one file in the dossier has none of the other flags private Map fileCountPerProcessingStatus; private Map fileCountPerWorkflowStatus; + private OffsetDateTime lastFileUpdateDate; + private OffsetDateTime fileManipulationDate; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java index 7fc44223b..eb939fbb5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierStatsService.java @@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -87,7 +88,12 @@ public class DossierStatsService { var fileCountPerWorkflowStatus = files.stream().collect(Collectors.toMap(FileModel::getWorkflowStatus, e -> 1, Math::addExact)); dossierStats.setFileCountPerWorkflowStatus(fileCountPerWorkflowStatus); + + + files.stream().sorted(Comparator.comparing(FileModel::getLastUpdated, Comparator.nullsLast(Comparator.reverseOrder()))) + .findFirst().ifPresent((file) -> dossierStats.setLastFileUpdateDate(file.getLastUpdated())); + files.stream().sorted(Comparator.comparing(FileModel::getFileManipulationDate, Comparator.nullsLast(Comparator.reverseOrder()))) + .findFirst().ifPresent((file) -> dossierStats.setFileManipulationDate(file.getFileManipulationDate())); return dossierStats; } - } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java index 2a05257b9..8f4c70d6e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java @@ -14,6 +14,7 @@ import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; +import java.time.OffsetDateTime; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -23,6 +24,10 @@ import static org.assertj.core.api.Assertions.assertThat; public class DossierStatsTest extends AbstractPersistenceServerServiceTest { private static final int NUMBER_PAGES_ANALYZED = 5; + private static final OffsetDateTime NOW = OffsetDateTime.now(); + private static final OffsetDateTime OLDER_1 = NOW.minusSeconds(5); + private static final OffsetDateTime OLDER_2 = NOW.minusSeconds(15); + @Autowired private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; @@ -51,6 +56,7 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest { var file2 = fileTesterAndProvider.testAndProvideFile(dossier1, "file2"); assertThat(fileClient.getDossierStatus(dossier1.getId()).size()).isEqualTo(2); + // alter file 1 var loadedFile1 = fileClient.getFileStatus(dossier1.getId(), file1.getId()); assertThat(loadedFile1.isHasRedactions()).isFalse(); @@ -59,14 +65,19 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest { file.setHasRedactions(true); file.setHasHints(true); file.setHasUpdates(true); + file.setLastUpdated(NOW); + file.setFileManipulationDate(null); fileRepository.save(file); }); loadedFile1 = fileClient.getFileStatus(dossier1.getId(), file1.getId()); assertThat(loadedFile1.isHasRedactions()).isTrue(); + assertThat(loadedFile1.getLastUpdated()).isEqualTo(NOW); // alter file 2 fileRepository.findById(file2.getId()).ifPresent((file) -> { file.setHasSuggestions(true); + file.setLastUpdated(OLDER_1); + file.setFileManipulationDate(OLDER_2); fileRepository.save(file); }); @@ -74,11 +85,19 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest { dossier2 = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "Dossier2"); var file3 = fileTesterAndProvider.testAndProvideFile(dossier2, "file3"); var file4 = fileTesterAndProvider.testAndProvideFile(dossier2, "file4"); + //alter file 2 + fileRepository.findById(file3.getId()).ifPresent((file) -> { + file.setLastUpdated(OLDER_1); + file.setFileManipulationDate(null); + fileRepository.save(file); + }); //alter file 4 fileRepository.findById(file4.getId()).ifPresent((file) -> { file.setHasHints(true); file.setWorkflowStatus(WorkflowStatus.APPROVED); + file.setLastUpdated(OLDER_2); + file.setFileManipulationDate(OLDER_2); fileRepository.save(file); }); } @@ -95,6 +114,8 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest { assertThat(dossierStats.isHasUpdatesFilePresent()).isTrue(); assertThat(dossierStats.isHasNoFlagsFilePresent()).isFalse(); assertThat(dossierStats.getFileCountPerProcessingStatus().get(ProcessingStatus.PROCESSING)).isEqualTo(2); + assertThat(dossierStats.getLastFileUpdateDate()).isEqualTo(NOW); + assertThat(dossierStats.getFileManipulationDate()).isEqualTo(OLDER_2); } @Test @@ -116,5 +137,7 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest { assertThat(dossierStats.isHasNoFlagsFilePresent()).isTrue(); assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.NEW)).isEqualTo(1); assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.APPROVED)).isEqualTo(1); + assertThat(dossierStats.getLastFileUpdateDate()).isEqualTo(OLDER_1); + assertThat(dossierStats.getFileManipulationDate()).isEqualTo(OLDER_2); } }