DM-285: validate rules on dossier template import #128
@ -73,6 +73,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type;
|
||||
import com.iqser.red.service.redaction.v1.model.DroolsSyntaxValidation;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||
|
||||
@ -101,6 +102,7 @@ public class DossierTemplateImportService {
|
||||
private final DictionaryManagementService dictionaryManagementService;
|
||||
private final EntryPersistenceService entryPersistenceService;
|
||||
private final ReportTemplatePersistenceService reportTemplatePersistenceService;
|
||||
private final RulesValidationService rulesValidationService;
|
||||
private final StorageService storageService;
|
||||
private final ObjectMapper objectMapper = new ObjectMapper();
|
||||
private final FileManagementServiceSettings settings;
|
||||
@ -304,10 +306,7 @@ public class DossierTemplateImportService {
|
||||
dossierTemplateRepository.save(existingDossierTemplate);
|
||||
|
||||
// set rules
|
||||
rulesPersistenceService.setRules(request.getRuleSet(), dossierTemplateId, RuleFileType.ENTITY);
|
||||
if (request.getComponentRuleSet() != null) {
|
||||
rulesPersistenceService.setRules(request.getComponentRuleSet(), dossierTemplateId, RuleFileType.COMPONENT);
|
||||
}
|
||||
setRulesWhenCompiled(request, dossierTemplateId);
|
||||
|
||||
existingDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(existingDossierTemplate)
|
||||
.name()));
|
||||
@ -410,10 +409,7 @@ public class DossierTemplateImportService {
|
||||
dossierTemplateEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossierTemplateEntity.setCreatedBy(request.getUserId());
|
||||
//set rules
|
||||
rulesPersistenceService.setRules(request.getRuleSet(), dossierTemplateEntity.getId(), RuleFileType.ENTITY);
|
||||
if (request.getComponentRuleSet() != null) {
|
||||
rulesPersistenceService.setRules(request.getComponentRuleSet(), dossierTemplateEntity.getId(), RuleFileType.COMPONENT);
|
||||
}
|
||||
setRulesWhenCompiled(request, dossierTemplateEntity.getId());
|
||||
|
||||
var loadedDossierTemplate = dossierTemplateRepository.save(dossierTemplateEntity);
|
||||
loadedDossierTemplate.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(loadedDossierTemplate));
|
||||
@ -492,6 +488,25 @@ public class DossierTemplateImportService {
|
||||
}
|
||||
|
||||
|
||||
private void setRulesWhenCompiled(ImportTemplateResult request, String dossierTemplateEntity) {
|
||||
|
||||
DroolsSyntaxValidation droolsSyntaxValidation = rulesValidationService.validateRules(RuleFileType.ENTITY, request.getRuleSet());
|
||||
if (!droolsSyntaxValidation.isCompiled()) {
|
||||
droolsSyntaxValidation.getDroolsSyntaxErrorMessages().forEach(errorMessage -> log.error(errorMessage.getMessage()));
|
||||
throw new BadRequestException("The entity rules do not compile!");
|
||||
}
|
||||
rulesPersistenceService.setRules(request.getRuleSet(), dossierTemplateEntity, RuleFileType.ENTITY);
|
||||
if (request.getComponentRuleSet() != null) {
|
||||
DroolsSyntaxValidation componentDroolsSyntaxValidation = rulesValidationService.validateRules(RuleFileType.COMPONENT, request.getComponentRuleSet());
|
||||
if (!componentDroolsSyntaxValidation.isCompiled()) {
|
||||
componentDroolsSyntaxValidation.getDroolsSyntaxErrorMessages().forEach(errorMessage -> log.error(errorMessage.getMessage()));
|
||||
throw new BadRequestException("The component rules do not compile!");
|
||||
}
|
||||
rulesPersistenceService.setRules(request.getComponentRuleSet(), dossierTemplateEntity, RuleFileType.COMPONENT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private List<String> readEntries(byte[] bytes) {
|
||||
|
||||
ByteArrayInputStream bInput = new ByteArrayInputStream(bytes);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user