Pull request #273: RED-3505 - Show files and dossiers in a combined trash
Merge in RED/persistence-service from feature/RED-3505 to master * commit '5c46e819de79293d223ab7833d998fa0c465f69d': RED-3505 - Show files and dossiers in a combined trash
This commit is contained in:
commit
2b29fcafa1
@ -47,6 +47,11 @@ public interface StatusResource {
|
||||
@GetMapping(value = STATUS_PATH + DELETED_PATH + DOSSIER_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
List<FileModel> getSoftDeletedDossierStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId);
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
@GetMapping(value = STATUS_PATH + DELETED_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
List<FileModel> getSoftDeletedForDossierList(@RequestBody List<String> dossierIds);
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
@GetMapping(value = STATUS_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
|
||||
@ -231,6 +231,11 @@ public class FileStatusPersistenceService {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<FileEntity> getSoftDeletedFiles(List<String> dossierIds) {
|
||||
|
||||
return fileRepository.getSoftDeletedFiles(dossierIds);
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void hardDelete(String fileId) {
|
||||
|
||||
@ -153,6 +153,9 @@ public interface FileRepository extends JpaRepository<FileEntity, String> {
|
||||
@Query("update FileEntity f set f.lastFileAttributeChange = :date, f.lastUpdated = :date")
|
||||
void updateLastAttributeChangeDate(OffsetDateTime date);
|
||||
|
||||
@Query("select f from FileEntity f where f.deleted is not null and f.hardDeletedTime is null and f.dossierId in :dossierIds")
|
||||
List<FileEntity> getSoftDeletedFiles(List<String> dossierIds);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -58,6 +58,10 @@ public class FileStatusController implements StatusResource {
|
||||
.sorted((f11, f21) -> f21.getDeleted().compareTo(f11.getDeleted())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<FileModel> getSoftDeletedForDossierList(@RequestBody List<String> dossierIds) {
|
||||
return fileStatusService.getSoftDeletedForDossierList(dossierIds);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public FileModel getFileStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
|
||||
@ -91,6 +91,13 @@ public class FileStatusService {
|
||||
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
|
||||
}
|
||||
|
||||
public List<FileModel> getSoftDeletedForDossierList(List<String> dossierIds) {
|
||||
var fileEntities = fileStatusPersistenceService.getSoftDeletedFiles(dossierIds);
|
||||
var convertedList = convert(fileEntities, FileModel.class, new FileModelMapper());
|
||||
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
|
||||
// return convertedList;
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public FileModel getStatus(String fileId) {
|
||||
|
||||
@ -23,6 +23,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@ -114,7 +115,7 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
||||
.dossierId(null)
|
||||
.build());
|
||||
|
||||
assertThat(addedType).isNotNull();
|
||||
assertThat(addedType3).isNotNull();
|
||||
var entries3 = new ArrayList<String>();
|
||||
entries3.add("entry1");
|
||||
entries3.add("entry2");
|
||||
@ -125,11 +126,25 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
||||
|
||||
var dossierTemplate4 = provideTestTemplate("dossierTemp4");
|
||||
|
||||
var dossierTemplate5 = provideTestTemplate("dossierTemp5");
|
||||
|
||||
var addedType5 = dictionaryClient.addType(Type.builder()
|
||||
.type("type dossier5")
|
||||
.label("5")
|
||||
.hexColor("#fcba03")
|
||||
.rank(100)
|
||||
.description("Something")
|
||||
.addToDictionaryAction(false)
|
||||
.dossierTemplateId(dossierTemplate5.getId())
|
||||
.build());
|
||||
assertThat(addedType5).isNotNull();
|
||||
|
||||
Set<String> dossierTemplateIds = new HashSet<>();
|
||||
dossierTemplateIds.add(dossier.getDossierTemplateId());
|
||||
dossierTemplateIds.add(dossierTemplate2.getId());
|
||||
dossierTemplateIds.add(dossierTemplate3.getId());
|
||||
dossierTemplateIds.add(dossierTemplate4.getId());
|
||||
dossierTemplateIds.add(dossierTemplate5.getId());
|
||||
|
||||
List<DossierTemplateStats> dossierTemplateStatsList = dossierTemplateStatsClient.getDossierTemplateStats(dossierTemplateIds);
|
||||
assertThat(dossierTemplateStatsList.size()).isEqualTo(dossierTemplateIds.size());
|
||||
@ -159,6 +174,23 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
||||
dictionarySummaryList = dossierTemplateStats2.getDictionarySummaryList();
|
||||
assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_2)).findAny().get().getEntriesCount()).isEqualTo(entries2.size() - entries22.size());
|
||||
|
||||
// delete all entries, stats should be updated
|
||||
var entries23 = new ArrayList<String>();
|
||||
entries23.add(entries2.get(0));
|
||||
entries23.add(entries2.get(1));
|
||||
|
||||
dictionaryClient.deleteEntries(addedType2.getTypeId(), entries23, DictionaryEntryType.ENTRY);
|
||||
var entries23loaded = dictionaryClient.getEntriesForType(addedType2.getTypeId(), DictionaryEntryType.ENTRY);
|
||||
assertThat(entries23loaded.stream().filter(e -> !e.isDeleted()).collect(Collectors.toList())).isEmpty();
|
||||
|
||||
dossierTemplateStatsList = dossierTemplateStatsClient.getDossierTemplateStats(dossierTemplateIds);
|
||||
|
||||
assertThat(dossierTemplateStatsList.size()).isEqualTo(dossierTemplateIds.size());
|
||||
DossierTemplateStats dossierTemplateStats23 = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossierTemplate2.getId())).findAny().get();
|
||||
|
||||
dictionarySummaryList = dossierTemplateStats23.getDictionarySummaryList();
|
||||
assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_2)).findAny().isEmpty()).isTrue();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -17,6 +17,8 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do
|
||||
import com.iqser.red.service.redaction.v1.model.AnalyzeResult;
|
||||
import com.iqser.red.service.redaction.v1.model.MessageType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
@Autowired
|
||||
@ -160,4 +162,31 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testGetSoftDeletedForDossierList() {
|
||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
|
||||
fileProcessingClient.analysisSuccessful(dossier.getId(), file.getId(), AnalyzeResult.builder()
|
||||
.manualRedactions(new ManualRedactions())
|
||||
.messageType(MessageType.ANALYSE)
|
||||
.analysisVersion(100)
|
||||
.fileId(file.getId())
|
||||
.dossierId(dossier.getId())
|
||||
.build());
|
||||
var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.PROCESSED);
|
||||
|
||||
// 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();
|
||||
|
||||
var fileList = fileClient.getSoftDeletedForDossierList(List.of(dossier.getId()));
|
||||
assertThat(fileList.size()).isEqualTo(1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user