RED-2200 - Dossier Template export and import
- fix problems for reports.
This commit is contained in:
parent
43e36ddff4
commit
132d8c5a0e
@ -26,6 +26,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.im
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@ -73,6 +74,8 @@ public class DossierTemplateImportService {
|
||||
private final ReportTemplateService reportTemplateService;
|
||||
private final DictionaryService dictionaryService;
|
||||
private final EntryPersistenceService entryPersistenceService;
|
||||
private final ReportTemplatePersistenceService reportTemplatePersistenceService;
|
||||
private final StorageService storageService;
|
||||
private final ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
public String importDossierTemplate(@RequestBody ImportDossierTemplateRequest request) {
|
||||
@ -155,6 +158,26 @@ public class DossierTemplateImportService {
|
||||
this.deleteTypes(currentTypes, new HashSet<>());
|
||||
}
|
||||
|
||||
//set report templates
|
||||
var existingReports = reportTemplatePersistenceService.findByDossierTemplateId(dossierTemplateId);
|
||||
|
||||
List<String> reportsUpdated = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(request.getReportTemplateUploadRequests())) {
|
||||
request.getReportTemplateUploadRequests().forEach(reportRequest -> {
|
||||
reportRequest.setDossierTemplateId(dossierTemplateId);
|
||||
var report = reportTemplateService.uploadTemplate(reportRequest);
|
||||
reportsUpdated.add(report.getTemplateId());
|
||||
});
|
||||
}
|
||||
// delete the reports that were not in the import
|
||||
existingReports.forEach(r -> {
|
||||
String storageId = r.getStorageId();
|
||||
if (!reportsUpdated.contains(r.getTemplateId())) {
|
||||
storageService.deleteObject(storageId);
|
||||
reportTemplatePersistenceService.delete(r.getTemplateId());
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
// creates new dossier template
|
||||
if (StringUtils.isEmpty(dossierTemplateMeta.getName())) {
|
||||
@ -222,6 +245,14 @@ public class DossierTemplateImportService {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//set report templates
|
||||
if (CollectionUtils.isNotEmpty(request.getReportTemplateUploadRequests())) {
|
||||
request.getReportTemplateUploadRequests().forEach(reportRequest -> {
|
||||
reportRequest.setDossierTemplateId(dossierTemplateId);
|
||||
reportTemplateService.uploadTemplate(reportRequest);
|
||||
});
|
||||
}
|
||||
}
|
||||
// set legal basis
|
||||
if (CollectionUtils.isNotEmpty(request.getLegalBases())) {
|
||||
@ -234,13 +265,6 @@ public class DossierTemplateImportService {
|
||||
convert(request.getFileAttributesGeneralConfiguration(), FileAttributesGeneralConfigurationEntity.class));
|
||||
}
|
||||
|
||||
//set report templates
|
||||
if (CollectionUtils.isNotEmpty(request.getReportTemplateUploadRequests())) {
|
||||
request.getReportTemplateUploadRequests().forEach(reportRequest -> {
|
||||
reportRequest.setDossierTemplateId(dossierTemplateId);
|
||||
reportTemplateService.uploadTemplate(reportRequest);
|
||||
});
|
||||
}
|
||||
return dossierTemplateId;
|
||||
}
|
||||
|
||||
|
||||
@ -19,6 +19,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.FileAttributeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.importexport.ExportDownloadRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.importexport.ImportDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
||||
@ -35,6 +36,7 @@ import java.time.OffsetDateTime;
|
||||
import java.util.*;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
import static org.assertj.core.api.Assertions.as;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
@ -81,6 +83,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private StorageService storageService;
|
||||
|
||||
@Autowired
|
||||
private LegalBasisClient legalBasisClient;
|
||||
|
||||
@Test
|
||||
public void testDownload() {
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
@ -361,6 +366,21 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(statuses).isNotEmpty();
|
||||
assertThat(statuses.get(0).getStatus()).isEqualTo(DownloadStatusValue.READY);
|
||||
|
||||
// add legal basis
|
||||
legalBasisClient.addOrUpdateLegalBasis(dossierTemplate.getId(), new LegalBasis("name2", "description2", "reason2"));
|
||||
var legalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId());
|
||||
assertThat(legalBasis.size()).isEqualTo(2);
|
||||
|
||||
//add report
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||
.template("some text2222".getBytes(StandardCharsets.UTF_8))
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.fileName("Report Template 2")
|
||||
.activeByDefault(true)
|
||||
.multiFileReport(false)
|
||||
.build());
|
||||
var reports = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||
assertThat(reports.size()).isEqualTo(2);
|
||||
ImportDossierTemplateRequest request1 = ImportDossierTemplateRequest.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.updateExistingDossierTemplate(true)
|
||||
@ -374,6 +394,12 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(updatedDossierTemplate.getDateModified()).isNotNull();
|
||||
assertThat(watermarkClient.getWatermarksForDossierTemplateId(updatedDossierTemplate.getId()).size()).isEqualTo(1);
|
||||
|
||||
reports = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
|
||||
assertThat(reports.size()).isEqualTo(1);
|
||||
|
||||
legalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId());
|
||||
assertThat(legalBasis.size()).isEqualTo(1);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -454,6 +480,46 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
public void testImportDossierTemplateUpdateTemplate() {
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
setupDossierTemplate(dossierTemplate);
|
||||
// prepare an archive
|
||||
dossierTemplateClient.prepareExportDownload(ExportDownloadRequest.builder()
|
||||
.userId("1")
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.build());
|
||||
String storageId = StorageIdUtils.getStorageId("1", dossierTemplate.getId());
|
||||
dossierTemplateClient.createExportDownload("1", storageId);
|
||||
|
||||
var statuses = downloadClient.getDownloadStatus("1");
|
||||
assertThat(statuses).isNotEmpty();
|
||||
assertThat(statuses.get(0).getStatus()).isEqualTo(DownloadStatusValue.READY);
|
||||
|
||||
ImportDossierTemplateRequest request1 = ImportDossierTemplateRequest.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.updateExistingDossierTemplate(true)
|
||||
.userId("1")
|
||||
.archive(storageService.getObject(storageId).getInputStream().readAllBytes())
|
||||
.build();
|
||||
|
||||
assertThat(dossierTemplate.getDateModified()).isNull();
|
||||
var fileAttributes = fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId());
|
||||
assertThat(fileAttributes.get(0).isPrimaryAttribute()).isTrue();
|
||||
var updatedDossierTemplate = dossierTemplateClient.importDossierTemplate(request1);
|
||||
var allDossierTemplates = dossierTemplateClient.getAllDossierTemplates();
|
||||
assertThat(allDossierTemplates.size()).isEqualTo(1);
|
||||
assertThat(updatedDossierTemplate.getDateModified()).isNotNull();
|
||||
assertThat(updatedDossierTemplate.getId()).isEqualTo(dossierTemplate.getId());
|
||||
var typeIdForT = "t:" + dossierTemplate.getId();
|
||||
var updatedEntries = dictionaryClient.getEntriesForType("t:" + dossierTemplate.getId(), null, DictionaryEntryType.ENTRY);
|
||||
assertThat(updatedEntries.size()).isEqualTo(2);
|
||||
fileAttributes = fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId());
|
||||
assertThat(fileAttributes.get(0).isPrimaryAttribute()).isTrue();
|
||||
|
||||
}
|
||||
|
||||
private void setupDossierTemplate(DossierTemplate dossierTemplate) {
|
||||
Type type = Type.builder()
|
||||
.type("t")
|
||||
@ -470,9 +536,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.label("t.getLabel()")
|
||||
.dossierId(null)
|
||||
.version(23)
|
||||
.entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t:" + dossierTemplate.getId()).build()))
|
||||
.falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t:" + dossierTemplate.getId()).build()))
|
||||
.falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t:" + dossierTemplate.getId()).build()))
|
||||
.hasDictionary(true)
|
||||
.systemManaged(false)
|
||||
.build();
|
||||
@ -491,9 +557,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.label("t2.getLabel()")
|
||||
.dossierId(null)
|
||||
.version(23)
|
||||
.entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t2.getType()").build()))
|
||||
.falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t2.getType()").build()))
|
||||
.falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t2.getType()").build()))
|
||||
.entries(List.of(DictionaryEntry.builder().entryId(1011).value("dictEntry1").version(23).deleted(false).typeId("t2:" + dossierTemplate.getId()).build()))
|
||||
.falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2011).value("dictEntry2").version(23).deleted(false).typeId("t2:" + dossierTemplate.getId()).build()))
|
||||
.falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3011).value("dictEntry3").version(23).deleted(false).typeId("t2:" + dossierTemplate.getId()).build()))
|
||||
.hasDictionary(true)
|
||||
.systemManaged(false)
|
||||
.build();
|
||||
@ -527,17 +593,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.type(FileAttributeType.TEXT)
|
||||
.placeholder("placeholderFile")
|
||||
.build()));
|
||||
ReportTemplateEntity rte = ReportTemplateEntity.builder()
|
||||
.templateId("templateId")
|
||||
.dossierTemplate(convert(dossierTemplate, DossierTemplateEntity.class))
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.dossiers(null)
|
||||
.activeByDefault(false)
|
||||
.fileName("rte")
|
||||
.multiFileReport(false)
|
||||
.storageId("storageId")
|
||||
.uploadDate(OffsetDateTime.now())
|
||||
.build();
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||
.template("some text".getBytes(StandardCharsets.UTF_8))
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user