RED-2200 - Dossier Template export and import
- modification to search by name for watermarks, dossier states and types (type) in case of updating existing dossier template
This commit is contained in:
parent
ab27eaad98
commit
6e45a657bc
@ -5,7 +5,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
@ -67,6 +70,7 @@ public class DossierTemplateImportService {
|
||||
private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
|
||||
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
|
||||
private final ColorsService colorsService;
|
||||
private final DictionaryPersistenceService dictionaryPersistenceService;
|
||||
private final DossierStatusPersistenceService dossierStatusPersistenceService;
|
||||
private final WatermarkService watermarkService;
|
||||
private final ReportTemplateService reportTemplateService;
|
||||
@ -94,6 +98,72 @@ public class DossierTemplateImportService {
|
||||
|
||||
dossierTemplate.get().setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(dossierTemplate.get()).name()));
|
||||
|
||||
// set colors
|
||||
this.setColors(dossierTemplateId, request.getColors());
|
||||
|
||||
// set watermarks
|
||||
if (CollectionUtils.isNotEmpty(request.getWatermarks())) {
|
||||
Set<String> toSetWatermarks = request.getWatermarks().stream().map(Watermark::getName).filter(Objects::nonNull).collect(Collectors.toSet());
|
||||
var currentWatermarkConfigs = watermarkService.getWatermarksForDossierTemplateId(dossierTemplateId);
|
||||
Set<WatermarkEntity> configsToRemove = currentWatermarkConfigs.stream().filter(c -> !toSetWatermarks.contains(c.getName())).collect(Collectors.toSet());
|
||||
var watermarkNameToEntity = currentWatermarkConfigs.stream().collect(Collectors.toMap(WatermarkEntity::getName, Function.identity()));
|
||||
|
||||
request.getWatermarks().forEach(watermark -> {
|
||||
try {
|
||||
if (!watermarkNameToEntity.isEmpty() && watermarkNameToEntity.get(watermark.getName()) != null) {
|
||||
watermark.setId(watermarkNameToEntity.get(watermark.getName()).getId());
|
||||
}
|
||||
watermarkService.createOrUpdateWatermark(watermark);
|
||||
} catch (BadRequestException e) {
|
||||
log.debug(" Conflict while validating watermark: " + watermark.getId());
|
||||
}
|
||||
});
|
||||
configsToRemove.forEach(watermark -> watermarkService.deleteWatermark(watermark.getId()));
|
||||
}
|
||||
|
||||
// update the types
|
||||
if (CollectionUtils.isNotEmpty(request.getTypes())) {
|
||||
|
||||
Set<String> toSetTypes = request.getTypes().stream().map(Type::getType).filter(Objects::nonNull).collect(Collectors.toSet());
|
||||
List<TypeEntity> currentTypes = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId, true);
|
||||
Set<TypeEntity> typesToRemove = currentTypes.stream().filter(c -> !toSetTypes.contains(c.getType())).collect(Collectors.toSet());
|
||||
var typeToEntityMap = currentTypes.stream().collect(Collectors.toMap(TypeEntity::getType, Function.identity()));
|
||||
|
||||
for (var type : request.getTypes()) {
|
||||
type.setDossierTemplateId(dossierTemplateId);
|
||||
String typeId;
|
||||
if (!typeToEntityMap.isEmpty() && typeToEntityMap.get(type.getType()) != null) {
|
||||
typeId = typeToEntityMap.get(type.getType()).getId();
|
||||
dictionaryService.updateTypeValue(typeId, type);
|
||||
} else {
|
||||
var returnedType = dictionaryService.addType(type);
|
||||
typeId = returnedType.getTypeId();
|
||||
}
|
||||
|
||||
this.addEntries(request.getEntries(), typeId, type.getType(), DictionaryEntryType.ENTRY);
|
||||
this.addEntries(request.getFalsePositives(), typeId, type.getType(), DictionaryEntryType.FALSE_POSITIVE);
|
||||
this.addEntries(request.getFalseRecommendations(), typeId, type.getType(), DictionaryEntryType.FALSE_RECOMMENDATION);
|
||||
}
|
||||
typesToRemove.forEach(type -> dictionaryService.deleteType(type.getId()));
|
||||
}
|
||||
|
||||
// dossier status
|
||||
if (CollectionUtils.isNotEmpty(request.getDossierStatusInfos())) {
|
||||
Set<String> toSetTypes = request.getDossierStatusInfos().stream().map(DossierStatusInfo::getName).filter(Objects::nonNull).collect(Collectors.toSet());
|
||||
List<DossierStatusInfo> currentStates = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId);
|
||||
Set<DossierStatusInfo> statesToRemove = currentStates.stream().filter(c -> !toSetTypes.contains(c.getName())).collect(Collectors.toSet());
|
||||
var stateToEntityMap = currentStates.stream().collect(Collectors.toMap(DossierStatusInfo::getName, Function.identity()));
|
||||
for (var state : request.getDossierStatusInfos()) {
|
||||
state.setDossierTemplateId(dossierTemplateId);
|
||||
if (!stateToEntityMap.isEmpty() && stateToEntityMap.get(state.getName()) != null) {
|
||||
state.setId(stateToEntityMap.get(state.getName()).getId());
|
||||
}
|
||||
updateDossierStates(dossierTemplateId, state);
|
||||
}
|
||||
statesToRemove.forEach(state -> dossierStatusPersistenceService.deleteDossierStatus(state.getId(), null));
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
// creates new dossier template
|
||||
|
||||
@ -113,6 +183,37 @@ public class DossierTemplateImportService {
|
||||
loadedDossierTemplate.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(loadedDossierTemplate));
|
||||
dossierTemplateId = loadedDossierTemplate.getId();
|
||||
|
||||
// set colors
|
||||
this.setColors(dossierTemplateId, request.getColors());
|
||||
|
||||
// set watermarks
|
||||
if (CollectionUtils.isNotEmpty(request.getWatermarks())) {
|
||||
request.getWatermarks().forEach(watermark -> {
|
||||
watermark.setDossierTemplateId(dossierTemplateId);
|
||||
try {
|
||||
watermarkService.createOrUpdateWatermark(watermark);
|
||||
} catch (BadRequestException e) {
|
||||
log.debug(" Conflict while validating watermark: " + watermark.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//set types
|
||||
if (CollectionUtils.isNotEmpty(request.getTypes())) {
|
||||
for (var type : request.getTypes()) {
|
||||
type.setDossierTemplateId(dossierTemplateId);
|
||||
var returnedType = dictionaryService.addType(type);
|
||||
|
||||
this.addEntries(request.getEntries(), returnedType.getTypeId(), returnedType.getType(), DictionaryEntryType.ENTRY);
|
||||
this.addEntries(request.getFalsePositives(), returnedType.getTypeId(), returnedType.getType(), DictionaryEntryType.FALSE_POSITIVE);
|
||||
this.addEntries(request.getFalseRecommendations(), returnedType.getTypeId(), returnedType.getType(), DictionaryEntryType.FALSE_RECOMMENDATION);
|
||||
|
||||
}
|
||||
}
|
||||
// dossier status
|
||||
if (CollectionUtils.isNotEmpty(request.getDossierStatusInfos())) {
|
||||
request.getDossierStatusInfos().forEach(state -> this.updateDossierStates(dossierTemplateId, state));
|
||||
}
|
||||
}
|
||||
// set legal basis
|
||||
if (CollectionUtils.isNotEmpty(request.getLegalBases())) {
|
||||
@ -123,10 +224,6 @@ public class DossierTemplateImportService {
|
||||
dossierAttributeConfigPersistenceService.setDossierAttributesConfig(dossierTemplateId,
|
||||
convert(request.getDossierAttributesConfigs(), DossierAttributeConfigEntity.class));
|
||||
}
|
||||
// dossier status
|
||||
if (CollectionUtils.isNotEmpty(request.getDossierStatusInfos())) {
|
||||
updateDossierStates(dossierTemplateId, request.getDossierStatusInfos());
|
||||
}
|
||||
|
||||
//set file attributes
|
||||
if (CollectionUtils.isNotEmpty(request.getFileAttributesConfigs())) {
|
||||
@ -145,51 +242,21 @@ public class DossierTemplateImportService {
|
||||
reportTemplateService.uploadTemplate(reportRequest);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void addEntries(Map<String, List<String>> entries, String typeId, String typeType, DictionaryEntryType dictionaryType) {
|
||||
if (entries != null && !entries.isEmpty() && !entries.get(typeType).isEmpty()) {
|
||||
dictionaryService.addEntries(typeId, entries.get(typeType), true, true, dictionaryType);
|
||||
}
|
||||
}
|
||||
|
||||
private void setColors(String dossierTemplateId, Colors requestedColors) {
|
||||
// set colors
|
||||
if (request.getColors() != null) {
|
||||
ColorsEntity colorsEntity = convert(request.getColors(), ColorsEntity.class);
|
||||
if (requestedColors != null) {
|
||||
ColorsEntity colorsEntity = convert(requestedColors, ColorsEntity.class);
|
||||
colorsEntity.setDossierTemplateId(dossierTemplateId);
|
||||
colorsService.saveColors(colorsEntity);
|
||||
}
|
||||
|
||||
// set watermarks
|
||||
if (CollectionUtils.isNotEmpty(request.getWatermarks())) {
|
||||
request.getWatermarks().forEach(watermark -> {
|
||||
try {
|
||||
watermarkService.createOrUpdateWatermark(watermark);
|
||||
} catch (BadRequestException e) {
|
||||
log.debug(" Conflict while validating watermark: " + watermark.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// set the types
|
||||
// should delete existing types? in case of conflicts
|
||||
for (var type: request.getTypes()) {
|
||||
type.setDossierTemplateId(dossierTemplateId);
|
||||
String typeId = type.getTypeId();
|
||||
if (dictionaryService.checkForExistingType(type)) {
|
||||
dictionaryService.updateTypeValue(type.getTypeId(), type);
|
||||
} else {
|
||||
var returnedType = dictionaryService.addType(type);
|
||||
typeId = returnedType.getTypeId();
|
||||
}
|
||||
|
||||
if (request.getEntries() != null && !request.getEntries().isEmpty()
|
||||
&& !request.getEntries().get(type.getType()).isEmpty()) {
|
||||
dictionaryService.addEntries(typeId, request.getEntries().get(type.getType()), true, true, DictionaryEntryType.ENTRY);
|
||||
}
|
||||
if (request.getFalsePositives() != null && !request.getFalsePositives().isEmpty()
|
||||
&& !request.getFalsePositives().get(type.getType()).isEmpty()) {
|
||||
dictionaryService.addEntries(typeId, request.getFalsePositives().get(type.getType()), true, true, DictionaryEntryType.FALSE_POSITIVE);
|
||||
}
|
||||
if (request.getFalseRecommendations() != null && !request.getFalseRecommendations().isEmpty()
|
||||
&& !request.getFalseRecommendations().get(type.getType()).isEmpty()) {
|
||||
dictionaryService.addEntries(typeId, request.getFalseRecommendations().get(type.getType()), true, true, DictionaryEntryType.FALSE_RECOMMENDATION);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateDossierTemplateMeta(DossierTemplateEntity dossierTemplateEntity, DossierTemplate dossierTemplate, String userId) {
|
||||
@ -209,8 +276,7 @@ public class DossierTemplateImportService {
|
||||
|
||||
}
|
||||
|
||||
private void updateDossierStates(String dossierTemplateId, List<DossierStatusInfo> dossierStatusInfoList) {
|
||||
dossierStatusInfoList.forEach(state -> {
|
||||
private void updateDossierStates(String dossierTemplateId, DossierStatusInfo state) {
|
||||
var dossierStatusRequest = CreateOrUpdateDossierStatusRequest.builder()
|
||||
.dossierStatusId(state.getId())
|
||||
.name(state.getName())
|
||||
@ -228,7 +294,6 @@ public class DossierTemplateImportService {
|
||||
} catch (NotFoundException e) {
|
||||
log.debug(" Not found dossier status id " + state.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public ImportTemplateResult handleArchive(ImportDossierTemplateRequest request) {
|
||||
@ -346,7 +411,7 @@ public class DossierTemplateImportService {
|
||||
});
|
||||
reportTemplateMap = reportTemplateList.stream()
|
||||
.collect(Collectors.toMap(ReportTemplate::getFileName, Function.identity()));
|
||||
reportTemplateFilenameList = reportTemplateList.stream().map(rt -> rt.getFileName()).collect(Collectors.toList());
|
||||
reportTemplateFilenameList = reportTemplateList.stream().map(ReportTemplate::getFileName).collect(Collectors.toList());
|
||||
} else {
|
||||
reportTemplateBytesMap.put(ze.getName(), bos);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user