diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RulesController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RulesController.java index b52e23f30..4eb3bc21f 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RulesController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RulesController.java @@ -21,23 +21,21 @@ import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RuleBuilderClient; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.FileUploadException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.RulesValidationService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.utils.RulesValidationMapper; import com.iqser.red.service.persistence.service.v1.api.external.resource.RulesResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.DroolsValidationResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesResponse; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUpdateRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.SystemRulesSeperationRequest; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import feign.FeignException; @@ -51,7 +49,6 @@ public class RulesController implements RulesResource { private static final String DOWNLOAD_FILE_NAME = "rules.drl"; - private final RuleBuilderClient ruleBuilderClient; private final RulesPersistenceService rulesPersistenceService; private final RulesValidationService rulesValidationService; private final AuditPersistenceService auditPersistenceService; @@ -63,26 +60,20 @@ public class RulesController implements RulesResource { RulesUploadRequest rulesUploadRequest = RulesUploadRequest.fromModel(rules); DroolsValidationResponse droolsValidationResponse = new DroolsValidationResponse(); - String mergedRulesString = ""; + try { + var droolsValidation = rulesValidationService.validateRules(rulesUploadRequest.getRuleFileType(), rulesUploadRequest.getRules()); + droolsValidationResponse = RulesValidationMapper.createFromDroolsValidation(droolsValidation); + if (!droolsValidation.isCompiled()) { - var ruleEntityOptional = rulesPersistenceService.getRules(rulesUploadRequest.getDossierTemplateId(), rulesUploadRequest.getRuleFileType()); - if (ruleEntityOptional.isPresent()) { - RulesUpdateRequest rulesUpdateRequest = new RulesUpdateRequest(ruleEntityOptional.get().getValue(), rules.getRules()); - try { - ResponseEntity mergedRules = ruleBuilderClient.mergeUserUpdateRules(rulesUpdateRequest); - if (mergedRules.getStatusCode().equals(HttpStatus.UNPROCESSABLE_ENTITY)) { - DroolsValidationResponse mergedRulesValidationResponse = (DroolsValidationResponse) mergedRules.getBody(); - return new ResponseEntity<>(mergedRulesValidationResponse, !rules.isDryRun() ? HttpStatus.UNPROCESSABLE_ENTITY : HttpStatus.OK); - } - mergedRulesString = ((RulesResponse) mergedRules.getBody()).getRules(); - } catch (FeignException e) { - if (e.status() == HttpStatus.BAD_REQUEST.value()) { - throw new BadRequestException("The provided rule string is not a valid drools rule file!"); - } + return new ResponseEntity<>(droolsValidationResponse, !rules.isDryRun() ? HttpStatus.UNPROCESSABLE_ENTITY : HttpStatus.OK); + } + } catch (FeignException e) { + if (e.status() == HttpStatus.BAD_REQUEST.value()) { + throw new BadRequestException("The provided rule string is not a valid drools rule file!"); } } if (!rules.isDryRun()) { - rulesPersistenceService.setRules(mergedRulesString, rulesUploadRequest.getDossierTemplateId(), rulesUploadRequest.getRuleFileType()); + rulesPersistenceService.setRules(rulesUploadRequest.getRules(), rulesUploadRequest.getDossierTemplateId(), rulesUploadRequest.getRuleFileType()); } auditPersistenceService.audit(AuditRequest.builder() @@ -112,11 +103,6 @@ public class RulesController implements RulesResource { if (ruleEntityOptional.isEmpty()) { throw new NotFoundException(String.format("No rule file of type %s found for dossierTemplateId %s", ruleFileType, dossierTemplateId)); } - log.info("calling rules management to remove system rules of file"); - SystemRulesSeperationRequest systemRulesSeperationRequest = new SystemRulesSeperationRequest(ruleEntityOptional.get().getValue()); - log.info(systemRulesSeperationRequest.getRules()); - String cleanedRules = ruleBuilderClient.getRuleFileWithoutSystemRules(systemRulesSeperationRequest).getRules(); - ruleEntityOptional.get().setValue(cleanedRules); return new RulesResponse(ruleEntityOptional.get().getValue(), dossierTemplateId, ruleEntityOptional.get().isTimeoutDetected()); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/PersistenceServiceProcessorConfiguration.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/PersistenceServiceProcessorConfiguration.java index 9170ec10f..793880151 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/PersistenceServiceProcessorConfiguration.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/PersistenceServiceProcessorConfiguration.java @@ -20,7 +20,6 @@ import org.springframework.retry.support.RetryTemplate; import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; import com.iqser.red.service.persistence.management.v1.processor.client.redactionreportservice.StatusReportClient; import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; -import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RuleBuilderClient; import com.iqser.red.service.persistence.management.v1.processor.client.searchservice.SearchClient; import com.iqser.red.service.persistence.management.v1.processor.client.tenantusermanagementservice.UsersClient; import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; @@ -31,7 +30,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Configuration @ComponentScan -@EnableFeignClients(basePackageClasses = {PDFTronClient.class, StatusReportClient.class, SearchClient.class, RedactionClient.class, UsersClient.class, RuleBuilderClient.class}) +@EnableFeignClients(basePackageClasses = {PDFTronClient.class, StatusReportClient.class, SearchClient.class, RedactionClient.class, UsersClient.class}) @ImportAutoConfiguration(SharedMongoAutoConfiguration.class) public class PersistenceServiceProcessorConfiguration { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/client/redactionservice/RuleBuilderClient.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/client/redactionservice/RuleBuilderClient.java deleted file mode 100644 index db06c9cff..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/client/redactionservice/RuleBuilderClient.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.client.redactionservice; - -import org.springframework.cloud.openfeign.FeignClient; - -import com.iqser.red.service.redaction.v1.resources.RuleBuilderResource; - -@FeignClient(name = "RuleBuilderClient", url = "${redaction-service.url}") -public interface RuleBuilderClient extends RuleBuilderResource { - -}