DM-285: make rule value non nullable
This commit is contained in:
parent
7466a61583
commit
9bca6b406a
@ -3,7 +3,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.RulesTimeoutDetectedException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.internal.resources.RulesResource;
|
||||
@ -30,17 +29,13 @@ public class RulesInternalController implements RulesResource {
|
||||
@Override
|
||||
public long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @PathVariable(RULE_FILE_TYPE_PARAMETER_NAME) RuleFileType ruleFileType) {
|
||||
|
||||
try {
|
||||
var rules = rulesPersistenceService.getRules(dossierTemplateId, ruleFileType);
|
||||
var rules = rulesPersistenceService.getRules(dossierTemplateId, ruleFileType);
|
||||
|
||||
if (rules.isTimeoutDetected()) {
|
||||
throw new RulesTimeoutDetectedException(dossierTemplateId);
|
||||
}
|
||||
|
||||
return rules.getVersion();
|
||||
} catch (NotFoundException e) {
|
||||
return 0;
|
||||
if (rules.isTimeoutDetected()) {
|
||||
throw new RulesTimeoutDetectedException(dossierTemplateId);
|
||||
}
|
||||
|
||||
return rules.getVersion();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -128,8 +128,11 @@ public class DossierTemplateCloneService {
|
||||
private void cloneRules(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
for (RuleFileType ruleFileType : RuleFileType.values()) {
|
||||
|
||||
rulesPersistenceService.setRules(rulesPersistenceService.getRules(dossierTemplateId, ruleFileType).getValue(), clonedDossierTemplateId, ruleFileType);
|
||||
try {
|
||||
rulesPersistenceService.setRules(rulesPersistenceService.getRules(dossierTemplateId, ruleFileType).getValue(), clonedDossierTemplateId, ruleFileType);
|
||||
} catch (NotFoundException e) {
|
||||
log.debug("No {} rules found, will not be cloned!", ruleFileType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -411,7 +411,9 @@ public class DossierTemplateImportService {
|
||||
dossierTemplateEntity.setCreatedBy(request.getUserId());
|
||||
//set rules
|
||||
rulesPersistenceService.setRules(request.getRuleSet(), dossierTemplateEntity.getId(), RuleFileType.ENTITY);
|
||||
rulesPersistenceService.setRules(request.getComponentRuleSet(), dossierTemplateEntity.getId(), RuleFileType.COMPONENT);
|
||||
if (request.getComponentRuleSet() != null) {
|
||||
rulesPersistenceService.setRules(request.getComponentRuleSet(), dossierTemplateEntity.getId(), RuleFileType.COMPONENT);
|
||||
}
|
||||
|
||||
var loadedDossierTemplate = dossierTemplateRepository.save(dossierTemplateEntity);
|
||||
loadedDossierTemplate.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(loadedDossierTemplate));
|
||||
|
||||
@ -123,7 +123,6 @@ public class ManualRedactionDictionaryUpdateHandler {
|
||||
removeFromDictionary(entry.getTypeId(), entry.getValue(), dossierId, fileId, dictionaryEntryType);
|
||||
});
|
||||
} else {
|
||||
|
||||
removeFromDictionary(dossierDictionaryTypeId, manualRequestWithRemoveFromDictionary.getValue(), dossierId, fileId, dictionaryEntryType);
|
||||
typeIdsOfModifiedDictionaries.add(dossierDictionaryTypeId);
|
||||
}
|
||||
|
||||
@ -113,7 +113,6 @@ public class ManualRedactionService {
|
||||
var manualRedactions = manualRedactionProviderService.getManualRedactions(fileId);
|
||||
|
||||
//validate removing from dossier template dictionary
|
||||
|
||||
for (RemoveRedactionRequest removeRedactionRequest : removeRedactionRequests) {
|
||||
manualRedactionDictionaryUpdateHandler.validateDictionariesForDelete(removeRedactionRequest,
|
||||
removeRedactionRequest.getTypeToRemove(),
|
||||
|
||||
@ -8,6 +8,7 @@ import java.util.UUID;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
|
||||
@ -28,6 +29,9 @@ import lombok.RequiredArgsConstructor;
|
||||
@RequiredArgsConstructor
|
||||
public class DossierTemplatePersistenceService {
|
||||
|
||||
@Value("${application.type}")
|
||||
private String applicationType;
|
||||
|
||||
public static final String DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE = "DossierTemplate with Id %s not found.";
|
||||
|
||||
private final DossierTemplateRepository dossierTemplateRepository;
|
||||
@ -69,7 +73,6 @@ public class DossierTemplatePersistenceService {
|
||||
dossierTemplate.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossierTemplate.setCreatedBy(createOrUpdateDossierRequest.getRequestingUser());
|
||||
rulesPersistenceService.setRules(RulesPersistenceService.DEFAULT_RULES, dossierTemplate.getId(), RuleFileType.ENTITY);
|
||||
rulesPersistenceService.setRules(RulesPersistenceService.DEFAULT_RULES, dossierTemplate.getId(), RuleFileType.COMPONENT);
|
||||
var loadedDossierTemplate = dossierTemplateRepository.save(dossierTemplate);
|
||||
loadedDossierTemplate.setDossierTemplateStatus(computeDossierTemplateStatus(loadedDossierTemplate));
|
||||
|
||||
@ -102,12 +105,18 @@ public class DossierTemplatePersistenceService {
|
||||
if (legalBasis == null || legalBasis.isEmpty()) {
|
||||
return DossierTemplateStatus.INCOMPLETE;
|
||||
}
|
||||
|
||||
var rules = rulesPersistenceService.getRules(dossierTemplate.getId(), RuleFileType.ENTITY);
|
||||
var componentRules = rulesPersistenceService.getRules(dossierTemplate.getId(), RuleFileType.COMPONENT);
|
||||
if (rules == null || componentRules == null) {
|
||||
try {
|
||||
rulesPersistenceService.getRules(dossierTemplate.getId(), RuleFileType.ENTITY);
|
||||
} catch (NotFoundException e) {
|
||||
return DossierTemplateStatus.INCOMPLETE;
|
||||
}
|
||||
if (applicationType.equals("DocuMine")) {
|
||||
try {
|
||||
rulesPersistenceService.getRules(dossierTemplate.getId(), RuleFileType.COMPONENT);
|
||||
} catch (NotFoundException e) {
|
||||
return DossierTemplateStatus.INCOMPLETE;
|
||||
}
|
||||
}
|
||||
|
||||
var now = OffsetDateTime.now();
|
||||
boolean isNotInRange = !now.isAfter(dossierTemplate.getValidFrom() != null ? dossierTemplate.getValidFrom() : OffsetDateTime.MIN) || !now.isBefore(dossierTemplate.getValidTo() != null ? dossierTemplate.getValidTo() : OffsetDateTime.MAX);
|
||||
|
||||
@ -8,6 +8,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType;
|
||||
|
||||
import jakarta.transaction.Transactional;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Service
|
||||
@ -100,7 +101,7 @@ public class RulesPersistenceService {
|
||||
end
|
||||
// --------------------------------------- Your rules below this line --------------------------------------------------
|
||||
""";
|
||||
|
||||
|
||||
private final RuleSetRepository ruleSetRepository;
|
||||
|
||||
|
||||
@ -130,7 +131,7 @@ public class RulesPersistenceService {
|
||||
|
||||
|
||||
@Transactional
|
||||
public void setRules(String rules, String dossierTemplateId, RuleFileType ruleFileType) {
|
||||
public void setRules(@NonNull String rules, String dossierTemplateId, RuleFileType ruleFileType) {
|
||||
|
||||
ruleSetRepository.findByDossierTemplateIdAndRuleFileType(dossierTemplateId, ruleFileType.name()).ifPresentOrElse(ruleSet -> {
|
||||
ruleSet.setDossierTemplateId(dossierTemplateId);
|
||||
|
||||
@ -160,4 +160,6 @@ databaseChangeLog:
|
||||
- include:
|
||||
file: db/changelog/tenant/109-add-rules-timeout-detected-column.yaml
|
||||
- include:
|
||||
file: db/changelog/tenant/110-add-rules-file-type.yaml
|
||||
file: db/changelog/tenant/110-add-rules-file-type.yaml
|
||||
- include:
|
||||
file: db/changelog/tenant/111-make-rule-values-non-nullable.yaml
|
||||
@ -0,0 +1,8 @@
|
||||
databaseChangeLog:
|
||||
- changeSet:
|
||||
id: make-rule-values-non-nullable
|
||||
author: kilian
|
||||
changes:
|
||||
- addNotNullConstraint:
|
||||
columnName: value
|
||||
tableName: rule_set
|
||||
@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@ -13,9 +14,11 @@ import lombok.NoArgsConstructor;
|
||||
@Schema(description = "Object containing a string of Drools rules.")
|
||||
public class RulesUploadRequestModel {
|
||||
|
||||
@NonNull
|
||||
@Schema(description = "The actual string of rules.")
|
||||
private String rules;
|
||||
|
||||
@NonNull
|
||||
@Schema(description = "The DossierTemplate Id for these rules")
|
||||
private String dossierTemplateId;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user