Pull request #316: RED-3246 ps10
Merge in RED/persistence-service from RED-3246-ps10 to master * commit '8fa416e39e1df6d113ca89e710f1623145c68ab1': RED-3246: As an admin I want to clone a dossier template RED-3246: As an admin I want to clone a dossier template RED-3246: As an admin I want to clone a dossier template RED-3246: As an admin I want to clone a dossier template
This commit is contained in:
commit
a53a566b42
@ -8,6 +8,7 @@ import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -24,14 +25,19 @@ 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.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.DossierStatusPersistenceService;
|
||||
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.FileAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
||||
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.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.type.DictionaryEntryType;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -48,11 +54,13 @@ public class DossierTemplateCloneService {
|
||||
private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
|
||||
private final DictionaryPersistenceService dictionaryPersistenceService;
|
||||
private final EntryPersistenceService entryPersistenceService;
|
||||
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
|
||||
private final ReportTemplatePersistenceService reportTemplatePersistenceService;
|
||||
private final WatermarkService watermarkService;
|
||||
private final ColorsService colorsService;
|
||||
private final StorageService storageService;
|
||||
private final DossierStatusPersistenceService dossierStatusPersistenceService;
|
||||
|
||||
|
||||
public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
||||
@ -86,7 +94,7 @@ public class DossierTemplateCloneService {
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
//set dictionaries
|
||||
clonedDossierTemplate.setDossierTypes(cloneDictionaries(dossierTemplate.getId(), clonedDossierTemplate.getId()));
|
||||
clonedDossierTemplate.setDossierTypes(cloneDictionariesWithEntries(dossierTemplate.getId(), clonedDossierTemplate.getId()));
|
||||
|
||||
//set dossier attributes
|
||||
cloneDossierAttributesConfig(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
@ -105,6 +113,9 @@ public class DossierTemplateCloneService {
|
||||
//set colors
|
||||
cloneColors(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
//set dossier status
|
||||
cloneDossierStates(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
}, () -> {
|
||||
@ -126,7 +137,7 @@ public class DossierTemplateCloneService {
|
||||
}
|
||||
|
||||
|
||||
private List<TypeEntity> cloneDictionaries(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
private List<TypeEntity> cloneDictionariesWithEntries(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
List<TypeEntity> clonedTypes = new ArrayList<>();
|
||||
var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId);
|
||||
@ -134,6 +145,11 @@ public class DossierTemplateCloneService {
|
||||
TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null, t.isHasDictionary(), t.isSystemManaged());
|
||||
te.setDossierTemplateId(clonedDossierTemplateId);
|
||||
clonedTypes.add(te);
|
||||
for (DictionaryEntryType det : DictionaryEntryType.values()) {
|
||||
var baseDictionaryEntries = entryPersistenceService.getEntries(t.getId(), det, null);
|
||||
List<String> entries = baseDictionaryEntries.stream().map(baseDictionaryEntry -> baseDictionaryEntry.getValue()).collect(Collectors.toList());
|
||||
entryPersistenceService.addEntry(te.getId(), entries, te.getVersion(), det);
|
||||
}
|
||||
}
|
||||
return clonedTypes;
|
||||
}
|
||||
@ -234,4 +250,20 @@ public class DossierTemplateCloneService {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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.DossierAttributeConfigClient;
|
||||
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.FileAttributeConfigClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
|
||||
@ -50,10 +51,13 @@ 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.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.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.DossierStatusInfo;
|
||||
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.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;
|
||||
|
||||
import feign.FeignException;
|
||||
@ -87,6 +91,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private WatermarkClient watermarkClient;
|
||||
|
||||
@Autowired
|
||||
private DossierStatusClient dossierStatusClient;
|
||||
|
||||
|
||||
@Test
|
||||
public void testDossierTemplate() {
|
||||
@ -145,8 +152,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
|
||||
Type type = Type.builder()
|
||||
.id("t.id")
|
||||
.type("t.getType()")
|
||||
.type("t")
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.hexColor("#ddddd")
|
||||
.recommendationHexColor("#cccccc")
|
||||
@ -163,7 +169,30 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.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()))
|
||||
.build();
|
||||
dictionaryClient.addType(type);
|
||||
Type type2 = Type.builder()
|
||||
.type("t2")
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.hexColor("#12345")
|
||||
.recommendationHexColor("#6789a")
|
||||
.rank(1002)
|
||||
.isHint(false)
|
||||
.isRecommendation(false)
|
||||
.isCaseInsensitive(false)
|
||||
.description("t2.getDescription()")
|
||||
.addToDictionaryAction(true)
|
||||
.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()))
|
||||
.build();
|
||||
var createdType1 = dictionaryClient.addType(type);
|
||||
var createdType2 = dictionaryClient.addType(type2);
|
||||
var loadedType1 = dictionaryClient.getDictionaryForType(createdType1.getId(), null);
|
||||
var loadedType2 = dictionaryClient.getDictionaryForType(createdType2.getId(), null);
|
||||
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);
|
||||
dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.editable(false)
|
||||
@ -200,7 +229,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.storageId("storageId")
|
||||
.uploadDate(OffsetDateTime.now())
|
||||
.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()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.fontSize(10)
|
||||
@ -225,6 +260,14 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.manualRedactionColor("#bbbbbb")
|
||||
.build();
|
||||
dictionaryClient.setColors(dossierTemplate.getId(), col);
|
||||
var dossierStatus = CreateOrUpdateDossierStatusRequest.builder()
|
||||
.name("dossStatus1")
|
||||
.description("ds description")
|
||||
.color("#115599")
|
||||
.rank(456)
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.build();
|
||||
dossierStatusClient.createOrUpdateDossierStatus(dossierStatus);
|
||||
|
||||
var allTemplates = dossierTemplateClient.getAllDossierTemplates();
|
||||
assertThat(allTemplates.size()).isEqualTo(1);
|
||||
@ -242,12 +285,25 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user");
|
||||
assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user");
|
||||
|
||||
assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()).get(0).getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel());
|
||||
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(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId())
|
||||
.get(0)
|
||||
.getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel());
|
||||
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(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(dossierStatusClient.getAllDossierStatuses(List.of(dossierTemplate.getId()))
|
||||
.get(0)
|
||||
.getDescription()).isEqualTo(dossierStatusClient.getAllDossierStatuses(List.of(clonedDT.getId())).get(0).getDescription());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user