DM-285: make rule value non nullable

This commit is contained in:
Kilian Schuettler 2023-09-13 12:16:20 +02:00
parent 7466a61583
commit 9bca6b406a
10 changed files with 44 additions and 23 deletions

View File

@ -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();
}

View File

@ -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);
}
}
}

View File

@ -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));

View File

@ -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);
}

View File

@ -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(),

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -0,0 +1,8 @@
databaseChangeLog:
- changeSet:
id: make-rule-values-non-nullable
author: kilian
changes:
- addNotNullConstraint:
columnName: value
tableName: rule_set

View File

@ -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;