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)
|
@GetMapping(value = STATUS_PATH + DELETED_PATH + DOSSIER_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
List<FileModel> getSoftDeletedDossierStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId);
|
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
|
@ResponseBody
|
||||||
@ResponseStatus(value = HttpStatus.OK)
|
@ResponseStatus(value = HttpStatus.OK)
|
||||||
@GetMapping(value = STATUS_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
@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());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<FileEntity> getSoftDeletedFiles(List<String> dossierIds) {
|
||||||
|
|
||||||
|
return fileRepository.getSoftDeletedFiles(dossierIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void hardDelete(String fileId) {
|
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")
|
@Query("update FileEntity f set f.lastFileAttributeChange = :date, f.lastUpdated = :date")
|
||||||
void updateLastAttributeChangeDate(OffsetDateTime 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());
|
.sorted((f11, f21) -> f21.getDeleted().compareTo(f11.getDeleted())).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<FileModel> getSoftDeletedForDossierList(@RequestBody List<String> dossierIds) {
|
||||||
|
return fileStatusService.getSoftDeletedForDossierList(dossierIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FileModel getFileStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
public FileModel getFileStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||||
|
|||||||
@ -91,6 +91,13 @@ public class FileStatusService {
|
|||||||
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
|
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
|
@Transactional
|
||||||
public FileModel getStatus(String fileId) {
|
public FileModel getStatus(String fileId) {
|
||||||
|
|||||||
@ -23,6 +23,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
@ -114,7 +115,7 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
|||||||
.dossierId(null)
|
.dossierId(null)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
assertThat(addedType).isNotNull();
|
assertThat(addedType3).isNotNull();
|
||||||
var entries3 = new ArrayList<String>();
|
var entries3 = new ArrayList<String>();
|
||||||
entries3.add("entry1");
|
entries3.add("entry1");
|
||||||
entries3.add("entry2");
|
entries3.add("entry2");
|
||||||
@ -125,11 +126,25 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
|||||||
|
|
||||||
var dossierTemplate4 = provideTestTemplate("dossierTemp4");
|
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<>();
|
Set<String> dossierTemplateIds = new HashSet<>();
|
||||||
dossierTemplateIds.add(dossier.getDossierTemplateId());
|
dossierTemplateIds.add(dossier.getDossierTemplateId());
|
||||||
dossierTemplateIds.add(dossierTemplate2.getId());
|
dossierTemplateIds.add(dossierTemplate2.getId());
|
||||||
dossierTemplateIds.add(dossierTemplate3.getId());
|
dossierTemplateIds.add(dossierTemplate3.getId());
|
||||||
dossierTemplateIds.add(dossierTemplate4.getId());
|
dossierTemplateIds.add(dossierTemplate4.getId());
|
||||||
|
dossierTemplateIds.add(dossierTemplate5.getId());
|
||||||
|
|
||||||
List<DossierTemplateStats> dossierTemplateStatsList = dossierTemplateStatsClient.getDossierTemplateStats(dossierTemplateIds);
|
List<DossierTemplateStats> dossierTemplateStatsList = dossierTemplateStatsClient.getDossierTemplateStats(dossierTemplateIds);
|
||||||
assertThat(dossierTemplateStatsList.size()).isEqualTo(dossierTemplateIds.size());
|
assertThat(dossierTemplateStatsList.size()).isEqualTo(dossierTemplateIds.size());
|
||||||
@ -159,6 +174,23 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
|||||||
dictionarySummaryList = dossierTemplateStats2.getDictionarySummaryList();
|
dictionarySummaryList = dossierTemplateStats2.getDictionarySummaryList();
|
||||||
assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_2)).findAny().get().getEntriesCount()).isEqualTo(entries2.size() - entries22.size());
|
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.AnalyzeResult;
|
||||||
import com.iqser.red.service.redaction.v1.model.MessageType;
|
import com.iqser.red.service.redaction.v1.model.MessageType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
public class FileProcessingTest extends AbstractPersistenceServerServiceTest {
|
||||||
|
|
||||||
@Autowired
|
@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