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