RED-3246: As an admin I want to clone a dossier template

This commit is contained in:
aoezyetimoglu 2022-03-21 18:11:37 +01:00
parent e274eb4844
commit ce0a9bfd0b
2 changed files with 60 additions and 8 deletions

View File

@ -25,6 +25,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
@ -33,6 +34,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; 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.DictionaryEntryType;
import com.iqser.red.storage.commons.service.StorageService; import com.iqser.red.storage.commons.service.StorageService;
@ -57,6 +60,7 @@ public class DossierTemplateCloneService {
private final WatermarkService watermarkService; private final WatermarkService watermarkService;
private final ColorsService colorsService; private final ColorsService colorsService;
private final StorageService storageService; private final StorageService storageService;
private final DossierStatusPersistenceService dossierStatusPersistenceService;
public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) { public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
@ -109,6 +113,9 @@ public class DossierTemplateCloneService {
//set colors //set colors
cloneColors(dossierTemplate.getId(), clonedDossierTemplate.getId()); cloneColors(dossierTemplate.getId(), clonedDossierTemplate.getId());
//set dossier status
cloneDossierStates(dossierTemplate.getId(), clonedDossierTemplate.getId());
dossierTemplateRepository.save(clonedDossierTemplate); dossierTemplateRepository.save(clonedDossierTemplate);
}, () -> { }, () -> {
@ -243,4 +250,20 @@ public class DossierTemplateCloneService {
colorsService.saveColors(clonedColors); colorsService.saveColors(clonedColors);
} }
private void cloneDossierStates(String dossierTemplateId, String clonedDossierTemplateId) {
var states = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId);
for (var state : states) {
var clonedState = CreateOrUpdateDossierStatusRequest.builder()
.name(state.getName())
.description(state.getDescription())
.color(state.getColor())
.dossierTemplateId(clonedDossierTemplateId)
.rank(state.getRank())
.build();
dossierStatusPersistenceService.createOrUpdateDossierStatus(clonedState);
}
}
} }

View File

@ -21,6 +21,7 @@ import org.springframework.boot.test.mock.mockito.MockBean;
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient;
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient;
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
@ -50,6 +51,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Re
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig;
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.dossier.file.FileAttributeType;
@ -88,6 +90,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
@Autowired @Autowired
private WatermarkClient watermarkClient; private WatermarkClient watermarkClient;
@Autowired
private DossierStatusClient dossierStatusClient;
@Test @Test
public void testDossierTemplate() { public void testDossierTemplate() {
@ -185,8 +190,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
.build(); .build();
var createdType1 = dictionaryClient.addType(type); var createdType1 = dictionaryClient.addType(type);
var createdType2 = dictionaryClient.addType(type2); var createdType2 = dictionaryClient.addType(type2);
var loadedType1 = dictionaryClient.getDictionaryForType(createdType1.getId(),null); var loadedType1 = dictionaryClient.getDictionaryForType(createdType1.getId(), null);
var loadedType2 = dictionaryClient.getDictionaryForType(createdType2.getId(),null); var loadedType2 = dictionaryClient.getDictionaryForType(createdType2.getId(), null);
dictionaryClient.addEntries(loadedType1.getTypeId(), List.of("entry1", "entry2"), false, false, DictionaryEntryType.ENTRY); dictionaryClient.addEntries(loadedType1.getTypeId(), List.of("entry1", "entry2"), false, false, DictionaryEntryType.ENTRY);
dictionaryClient.addEntries(loadedType2.getTypeId(), List.of("entry3", "entry4"), false, false, DictionaryEntryType.FALSE_POSITIVE); dictionaryClient.addEntries(loadedType2.getTypeId(), List.of("entry3", "entry4"), false, false, DictionaryEntryType.FALSE_POSITIVE);
dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder() dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder()
@ -225,7 +230,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
.storageId("storageId") .storageId("storageId")
.uploadDate(OffsetDateTime.now()) .uploadDate(OffsetDateTime.now())
.build(); .build();
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder().template("some text".getBytes(StandardCharsets.UTF_8)).dossierTemplateId(dossierTemplate.getId()).fileName("Report Template").activeByDefault(true).multiFileReport(false).build()); reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
.template("some text".getBytes(StandardCharsets.UTF_8))
.dossierTemplateId(dossierTemplate.getId())
.fileName("Report Template")
.activeByDefault(true)
.multiFileReport(false)
.build());
watermarkClient.saveWatermark(dossierTemplate.getId(), Watermark.builder() watermarkClient.saveWatermark(dossierTemplate.getId(), Watermark.builder()
.dossierTemplateId(dossierTemplate.getId()) .dossierTemplateId(dossierTemplate.getId())
.fontSize(10) .fontSize(10)
@ -250,6 +261,14 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
.manualRedactionColor("#bbbbbb") .manualRedactionColor("#bbbbbb")
.build(); .build();
dictionaryClient.setColors(dossierTemplate.getId(), col); dictionaryClient.setColors(dossierTemplate.getId(), col);
var dossierStatus = CreateOrUpdateDossierStatusRequest.builder()
.name("dossStatus1")
.description("dossier status description")
.color("#115599")
.rank(456)
.dossierTemplateId(dossierTemplate.getId())
.build();
dossierStatusClient.createOrUpdateDossierStatus(dossierStatus);
var allTemplates = dossierTemplateClient.getAllDossierTemplates(); var allTemplates = dossierTemplateClient.getAllDossierTemplates();
assertThat(allTemplates.size()).isEqualTo(1); assertThat(allTemplates.size()).isEqualTo(1);
@ -267,13 +286,23 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user"); assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user");
assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user"); assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user");
assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()).get(0).getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel()); assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId())
assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()).get(0).getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader()); .get(0)
assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()).getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName()); .getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel());
assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()).get(0).getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName()); assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId())
.get(0)
.getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader());
assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId())
.getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName());
assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId())
.get(0)
.getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName());
assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkClient.getWatermark(clonedDT.getId()).getText()); assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkClient.getWatermark(clonedDT.getId()).getText());
assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAdd()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAdd()); assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAdd()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAdd());
assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId()).get(0).getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank()); assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId())
.get(0)
.getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank());
assertThat(dossierStatusClient.getAllDossierStatuses(List.of(dossierTemplate.getId()))).isEqualTo(dossierStatusClient.getAllDossierStatuses(List.of(clonedDT.getId())));
} }
} }