RED-3587 - Return the most recent file modification date in the dossier stats
- add the recent lastUpdated file date and the recent fileManipulation date - add junit tests
This commit is contained in:
parent
762009bc4f
commit
066134be34
@ -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 com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Data
|
@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 boolean hasNoFlagsFilePresent; // true if at least one file in the dossier has none of the other flags
|
||||||
private Map<ProcessingStatus, Integer> fileCountPerProcessingStatus;
|
private Map<ProcessingStatus, Integer> fileCountPerProcessingStatus;
|
||||||
private Map<WorkflowStatus, Integer> fileCountPerWorkflowStatus;
|
private Map<WorkflowStatus, Integer> fileCountPerWorkflowStatus;
|
||||||
|
private OffsetDateTime lastFileUpdateDate;
|
||||||
|
private OffsetDateTime fileManipulationDate;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
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));
|
var fileCountPerWorkflowStatus = files.stream().collect(Collectors.toMap(FileModel::getWorkflowStatus, e -> 1, Math::addExact));
|
||||||
dossierStats.setFileCountPerWorkflowStatus(fileCountPerWorkflowStatus);
|
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;
|
return dossierStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -23,6 +24,10 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
|
public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
|
||||||
|
|
||||||
private static final int NUMBER_PAGES_ANALYZED = 5;
|
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
|
@Autowired
|
||||||
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
|
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
|
||||||
|
|
||||||
@ -51,6 +56,7 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
|
|||||||
var file2 = fileTesterAndProvider.testAndProvideFile(dossier1, "file2");
|
var file2 = fileTesterAndProvider.testAndProvideFile(dossier1, "file2");
|
||||||
|
|
||||||
assertThat(fileClient.getDossierStatus(dossier1.getId()).size()).isEqualTo(2);
|
assertThat(fileClient.getDossierStatus(dossier1.getId()).size()).isEqualTo(2);
|
||||||
|
|
||||||
// alter file 1
|
// alter file 1
|
||||||
var loadedFile1 = fileClient.getFileStatus(dossier1.getId(), file1.getId());
|
var loadedFile1 = fileClient.getFileStatus(dossier1.getId(), file1.getId());
|
||||||
assertThat(loadedFile1.isHasRedactions()).isFalse();
|
assertThat(loadedFile1.isHasRedactions()).isFalse();
|
||||||
@ -59,14 +65,19 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
|
|||||||
file.setHasRedactions(true);
|
file.setHasRedactions(true);
|
||||||
file.setHasHints(true);
|
file.setHasHints(true);
|
||||||
file.setHasUpdates(true);
|
file.setHasUpdates(true);
|
||||||
|
file.setLastUpdated(NOW);
|
||||||
|
file.setFileManipulationDate(null);
|
||||||
fileRepository.save(file);
|
fileRepository.save(file);
|
||||||
});
|
});
|
||||||
loadedFile1 = fileClient.getFileStatus(dossier1.getId(), file1.getId());
|
loadedFile1 = fileClient.getFileStatus(dossier1.getId(), file1.getId());
|
||||||
assertThat(loadedFile1.isHasRedactions()).isTrue();
|
assertThat(loadedFile1.isHasRedactions()).isTrue();
|
||||||
|
assertThat(loadedFile1.getLastUpdated()).isEqualTo(NOW);
|
||||||
|
|
||||||
// alter file 2
|
// alter file 2
|
||||||
fileRepository.findById(file2.getId()).ifPresent((file) -> {
|
fileRepository.findById(file2.getId()).ifPresent((file) -> {
|
||||||
file.setHasSuggestions(true);
|
file.setHasSuggestions(true);
|
||||||
|
file.setLastUpdated(OLDER_1);
|
||||||
|
file.setFileManipulationDate(OLDER_2);
|
||||||
fileRepository.save(file);
|
fileRepository.save(file);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -74,11 +85,19 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
|
|||||||
dossier2 = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "Dossier2");
|
dossier2 = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "Dossier2");
|
||||||
var file3 = fileTesterAndProvider.testAndProvideFile(dossier2, "file3");
|
var file3 = fileTesterAndProvider.testAndProvideFile(dossier2, "file3");
|
||||||
var file4 = fileTesterAndProvider.testAndProvideFile(dossier2, "file4");
|
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
|
//alter file 4
|
||||||
fileRepository.findById(file4.getId()).ifPresent((file) -> {
|
fileRepository.findById(file4.getId()).ifPresent((file) -> {
|
||||||
file.setHasHints(true);
|
file.setHasHints(true);
|
||||||
file.setWorkflowStatus(WorkflowStatus.APPROVED);
|
file.setWorkflowStatus(WorkflowStatus.APPROVED);
|
||||||
|
file.setLastUpdated(OLDER_2);
|
||||||
|
file.setFileManipulationDate(OLDER_2);
|
||||||
fileRepository.save(file);
|
fileRepository.save(file);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -95,6 +114,8 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
|
|||||||
assertThat(dossierStats.isHasUpdatesFilePresent()).isTrue();
|
assertThat(dossierStats.isHasUpdatesFilePresent()).isTrue();
|
||||||
assertThat(dossierStats.isHasNoFlagsFilePresent()).isFalse();
|
assertThat(dossierStats.isHasNoFlagsFilePresent()).isFalse();
|
||||||
assertThat(dossierStats.getFileCountPerProcessingStatus().get(ProcessingStatus.PROCESSING)).isEqualTo(2);
|
assertThat(dossierStats.getFileCountPerProcessingStatus().get(ProcessingStatus.PROCESSING)).isEqualTo(2);
|
||||||
|
assertThat(dossierStats.getLastFileUpdateDate()).isEqualTo(NOW);
|
||||||
|
assertThat(dossierStats.getFileManipulationDate()).isEqualTo(OLDER_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -116,5 +137,7 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest {
|
|||||||
assertThat(dossierStats.isHasNoFlagsFilePresent()).isTrue();
|
assertThat(dossierStats.isHasNoFlagsFilePresent()).isTrue();
|
||||||
assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.NEW)).isEqualTo(1);
|
assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.NEW)).isEqualTo(1);
|
||||||
assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.APPROVED)).isEqualTo(1);
|
assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.APPROVED)).isEqualTo(1);
|
||||||
|
assertThat(dossierStats.getLastFileUpdateDate()).isEqualTo(OLDER_1);
|
||||||
|
assertThat(dossierStats.getFileManipulationDate()).isEqualTo(OLDER_2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user