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/RedactionLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RedactionLogController.java index f8cccee23..02f9ed57d 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RedactionLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RedactionLogController.java @@ -37,6 +37,7 @@ import lombok.SneakyThrows; @RestController @RequiredArgsConstructor +@Deprecated(forRemoval = true) public class RedactionLogController implements RedactionLogResource { private final RedactionLogService redactionLogService; 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 f2378b43c..71705c102 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 @@ -1,19 +1,13 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileUploadException; -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.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.audit.AuditRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RuleSyntaxErrorMessage; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.Rules; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequest; -import com.iqser.red.service.redaction.v1.model.DroolsSyntaxValidation; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_RULES; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.WRITE_RULES; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; + import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -26,13 +20,22 @@ import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; +import com.iqser.red.service.persistence.management.v1.processor.client.redactionservice.RedactionClient; +import com.iqser.red.service.persistence.management.v1.processor.exception.FileUploadException; +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.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.RuleSyntaxErrorMessage; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.Rules; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequest; +import com.iqser.red.service.redaction.v1.model.DroolsSyntaxValidation; +import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_RULES; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.WRITE_RULES; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; @Slf4j @RestController @@ -58,7 +61,7 @@ public class RulesController implements RulesResource { .toList(); return new ResponseEntity<>(rulesSyntaxErrorMessages, HttpStatus.BAD_REQUEST); } - rulesPersistenceService.setRules(rules.getRules(), rules.getDossierTemplateId()); + rulesPersistenceService.setRules(rules.getRules(), rules.getDossierTemplateId(), rules.getRuleFileType()); auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) @@ -75,7 +78,15 @@ public class RulesController implements RulesResource { @PreAuthorize("hasAuthority('" + READ_RULES + "')") public Rules download(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) { - var ruleEntity = rulesPersistenceService.getRules(dossierTemplateId); + return download(dossierTemplateId, RuleFileType.ENTITY); + } + + + @Override + @PreAuthorize("hasAuthority('" + READ_RULES + "')") + public Rules download(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @PathVariable(RULE_FILE_TYPE_PARAMETER_NAME) RuleFileType ruleFileType) { + + var ruleEntity = rulesPersistenceService.getRules(dossierTemplateId, ruleFileType); return new Rules(ruleEntity.getValue(), dossierTemplateId, ruleEntity.isTimeoutDetected()); } @@ -85,12 +96,21 @@ public class RulesController implements RulesResource { @PreAuthorize("hasAuthority('" + WRITE_RULES + "')") public ResponseEntity uploadFile(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestPart(name = "file") MultipartFile file) { + return uploadFile(dossierTemplateId, RuleFileType.ENTITY, file); + } + + + @Override + @PreAuthorize("hasAuthority('" + WRITE_RULES + "')") + public ResponseEntity uploadFile(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, + @PathVariable(RULE_FILE_TYPE_PARAMETER_NAME) RuleFileType ruleFileType, + @RequestPart(name = "file") MultipartFile file) { + try { - return upload(new RulesUploadRequest(new String(file.getBytes(), StandardCharsets.UTF_8), dossierTemplateId)); + return upload(new RulesUploadRequest(new String(file.getBytes(), StandardCharsets.UTF_8), dossierTemplateId, ruleFileType)); } catch (IOException e) { throw new FileUploadException("Could not upload file.", e); } - } @@ -98,15 +118,23 @@ public class RulesController implements RulesResource { @PreAuthorize("hasAuthority('" + READ_RULES + "')") public ResponseEntity downloadFile(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) { + return downloadFile(dossierTemplateId, RuleFileType.ENTITY); + } + + + @Override + @PreAuthorize("hasAuthority('" + READ_RULES + "')") + public ResponseEntity downloadFile(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, + @PathVariable(RULE_FILE_TYPE_PARAMETER_NAME) RuleFileType ruleFileType) { + byte[] data = download(dossierTemplateId).getRules().getBytes(StandardCharsets.UTF_8); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.TEXT_PLAIN); - httpHeaders.add("Content-Disposition", "attachment; filename*=utf-8\"" + DOWNLOAD_FILE_NAME + "\""); + httpHeaders.add("Content-Disposition", "attachment; filename*=utf-8\"" + ruleFileType.name() + "_" + DOWNLOAD_FILE_NAME + "\""); InputStream is = new ByteArrayInputStream(data); return new ResponseEntity<>(new InputStreamResource(is), httpHeaders, HttpStatus.OK); - } } 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/StatusController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/StatusController.java index 502f9ae85..9acf78b8a 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/StatusController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/StatusController.java @@ -1,6 +1,9 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.*; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_FILE_STATUS; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.SET_REVIEWER; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.SET_STATUS_APPROVED; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.SET_STATUS_UNDER_APPROVAL; import java.time.OffsetDateTime; import java.util.ArrayList; @@ -11,8 +14,6 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import jakarta.transaction.Transactional; - import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PathVariable; @@ -20,16 +21,16 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotAllowedException; +import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles; import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService; -import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; import com.iqser.red.service.persistence.service.v1.api.external.resource.StatusResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributes; @@ -43,6 +44,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationType; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -142,6 +144,7 @@ public class StatusController implements StatusResource { } + @PreAuthorize("hasAuthority('" + READ_FILE_STATUS + "')") public FileStatus getFileStatus(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId) { @@ -257,6 +260,7 @@ public class StatusController implements StatusResource { generatePossibleUnassignedFromFileNotification(dossierId, fileId, fileStatus, assigneeId); } + @PreAuthorize("hasAuthority('" + SET_STATUS_UNDER_APPROVAL + "')") public void setStatusUnderApproval(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @@ -286,6 +290,7 @@ public class StatusController implements StatusResource { generatePossibleUnassignedFromFileNotification(dossierId, fileId, fileStatus, assigneeId); } + @PreAuthorize("hasAuthority('" + SET_STATUS_APPROVED + "')") public void setStatusApproved(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId) { @@ -391,6 +396,7 @@ public class StatusController implements StatusResource { fileIds.forEach(fileId -> setStatusApproved(dossierId, fileId)); } + @PreAuthorize("hasAuthority('" + SET_REVIEWER + "')") public void setStatusNewForList(@PathVariable(DOSSIER_ID) String dossierId, @RequestBody List fileIds) { @@ -409,6 +415,7 @@ public class StatusController implements StatusResource { } + @PreAuthorize("hasAuthority('" + READ_FILE_STATUS + "')") public List getSoftDeletedDossierStatus(@PathVariable(DOSSIER_ID) String dossierId) { @@ -468,6 +475,7 @@ public class StatusController implements StatusResource { .uploader(status.getUploader()) .dictionaryVersion(status.getDictionaryVersion()) .rulesVersion(status.getRulesVersion()) + .componentRulesVersion(status.getComponentRulesVersion()) .legalBasisVersion(status.getLegalBasisVersion()) .lastProcessed(status.getLastProcessed()) .lastLayoutProcessed(status.getLastLayoutProcessed()) 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/VersionsController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/VersionsController.java index 293c542f7..35cce5ac1 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/VersionsController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/VersionsController.java @@ -11,10 +11,10 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.service.v1.api.external.resource.VersionsResource; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.VersionsResponse; import lombok.RequiredArgsConstructor; @@ -33,7 +33,8 @@ public class VersionsController implements VersionsResource { var result = new HashMap(); dossierTemplateIds.forEach(rsId -> { - VersionsResponse response = new VersionsResponse(dictionaryPersistenceService.getVersion(rsId), rulesPersistenceService.getRules(rsId).getVersion()); + VersionsResponse response = new VersionsResponse(dictionaryPersistenceService.getVersion(rsId), + rulesPersistenceService.getRules(rsId, RuleFileType.ENTITY).getVersion()); result.put(rsId, response); }); diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/RedactionLogResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/RedactionLogResource.java index 2af8ffc9b..12db47607 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/RedactionLogResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/RedactionLogResource.java @@ -20,6 +20,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; +@Deprecated(forRemoval = true) @ResponseStatus(value = HttpStatus.OK) public interface RedactionLogResource { diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/RulesResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/RulesResource.java index fea70b1dc..198d6b8e0 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/RulesResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/RulesResource.java @@ -1,16 +1,25 @@ package com.iqser.red.service.persistence.service.v1.api.external.resource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.Rules; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequest; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.multipart.MultipartFile; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.Rules; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequest; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; + public interface RulesResource { String RULES_PATH = ExternalApi.BASE_PATH + "/rules"; @@ -20,6 +29,9 @@ public interface RulesResource { String DOSSIER_TEMPLATE_PARAMETER_NAME = "dossierTemplateId"; String DOSSIER_TEMPLATE_PATH_VARIABLE = "/{dossierTemplateId}"; + String RULE_FILE_TYPE_PARAMETER_NAME = "ruleFileType"; + String RULE_FILE_TYPE_PATH_VARIABLE = "/{ruleFileType}"; + /** * Upload rules to be used by redaction service. @@ -41,6 +53,14 @@ public interface RulesResource { Rules download(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId); + @ResponseBody + @ResponseStatus(value = HttpStatus.OK) + @Operation(summary = "Returns object containing the currently used Drools rules.") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) + @GetMapping(value = RULES_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + RULE_FILE_TYPE_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) + Rules download(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @PathVariable(RULE_FILE_TYPE_PARAMETER_NAME) RuleFileType ruleFileType); + + /** * Upload rules as file to be used by redaction service. * @@ -53,6 +73,15 @@ public interface RulesResource { ResponseEntity uploadFile(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestPart(name = "file") MultipartFile file); + @ResponseStatus(value = HttpStatus.NO_CONTENT) + @PostMapping(value = RULES_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + RULE_FILE_TYPE_PATH_VARIABLE + UPLOAD_PATH, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @Operation(summary = "Takes object containing string or rules as argument, which will be used by the redaction service.") + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Rules upload successful."), @ApiResponse(responseCode = "400", description = "Uploaded rules could not be verified.")}) + ResponseEntity uploadFile(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, + @PathVariable(RULE_FILE_TYPE_PARAMETER_NAME) RuleFileType ruleFileType, + @RequestPart(name = "file") MultipartFile file); + + @ResponseBody @ResponseStatus(value = HttpStatus.OK) @Operation(summary = "Returns file containing the currently used Drools rules.") @@ -60,4 +89,12 @@ public interface RulesResource { @GetMapping(value = RULES_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + DOWNLOAD_PATH) ResponseEntity downloadFile(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId); + + @ResponseBody + @ResponseStatus(value = HttpStatus.OK) + @Operation(summary = "Returns file containing the currently used Drools rules.") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) + @GetMapping(value = RULES_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + RULE_FILE_TYPE_PATH_VARIABLE + DOWNLOAD_PATH) + ResponseEntity downloadFile(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @PathVariable(RULE_FILE_TYPE_PARAMETER_NAME) RuleFileType ruleFileType); + } diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/RulesInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/RulesInternalController.java index ea530f2db..0ca531e41 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/RulesInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/RulesInternalController.java @@ -1,13 +1,16 @@ 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; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; + import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor @@ -17,17 +20,17 @@ public class RulesInternalController implements RulesResource { @Override - public JSONPrimitive getRules(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) { + public JSONPrimitive getRules(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, RuleFileType ruleFileType) { - return new JSONPrimitive<>(rulesPersistenceService.getRules(dossierTemplateId).getValue()); + return new JSONPrimitive<>(rulesPersistenceService.getRules(dossierTemplateId, ruleFileType).getValue()); } @Override - public long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) { + public long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, RuleFileType ruleFileType) { try { - var rules = rulesPersistenceService.getRules(dossierTemplateId); + var rules = rulesPersistenceService.getRules(dossierTemplateId, ruleFileType); if (rules.isTimeoutDetected()) { throw new RulesTimeoutDetectedException(dossierTemplateId); @@ -41,9 +44,9 @@ public class RulesInternalController implements RulesResource { @Override - public void setRulesTimeoutDetected(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) { + public void setRulesTimeoutDetected(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, RuleFileType ruleFileType) { - rulesPersistenceService.setTimeoutDetected(dossierTemplateId); + rulesPersistenceService.setTimeoutDetected(dossierTemplateId, ruleFileType); } } diff --git a/persistence-service-v1/persistence-service-internal-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/internal/resources/RulesResource.java b/persistence-service-v1/persistence-service-internal-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/internal/resources/RulesResource.java index 7821a875e..07ae43c64 100644 --- a/persistence-service-v1/persistence-service-internal-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/internal/resources/RulesResource.java +++ b/persistence-service-v1/persistence-service-internal-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/internal/resources/RulesResource.java @@ -1,9 +1,15 @@ package com.iqser.red.service.persistence.service.v1.api.internal.resources; -import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; public interface RulesResource { @@ -19,14 +25,15 @@ public interface RulesResource { @ResponseBody @ResponseStatus(HttpStatus.OK) @GetMapping(value = InternalApi.BASE_PATH + PATH + DOSSIER_TEMPLATE_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) - JSONPrimitive getRules(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId); + JSONPrimitive getRules(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, RuleFileType ruleFileType); @ResponseStatus(HttpStatus.OK) @GetMapping(value = InternalApi.BASE_PATH + PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + VERSION_PATH) - long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId); + long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, RuleFileType ruleFileType); + @PostMapping(value = InternalApi.BASE_PATH + PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + TIMEOUT_PATH) - void setRulesTimeoutDetected(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId); + void setRulesTimeoutDetected(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, RuleFileType ruleFileType); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/RuleSetEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/RuleSetEntity.java index 07477f7d3..c99dee82d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/RuleSetEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/RuleSetEntity.java @@ -1,6 +1,11 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; -import jakarta.persistence.*; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.IdClass; +import jakarta.persistence.Lob; +import jakarta.persistence.Table; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,12 +15,17 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @Entity @Table(name = "rule_set") +@IdClass(RuleSetEntityKey.class) public class RuleSetEntity { @Id @Column private String dossierTemplateId; + @Id + @Column + private String ruleFileType; + @Column private long version; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/RuleSetEntityKey.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/RuleSetEntityKey.java new file mode 100644 index 000000000..5217e1e49 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/RuleSetEntityKey.java @@ -0,0 +1,23 @@ +package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; + +import java.io.Serializable; + +import jakarta.persistence.Column; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.FieldDefaults; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@FieldDefaults(level = AccessLevel.PRIVATE) +public class RuleSetEntityKey implements Serializable { + + @Column + String dossierTemplateId; + @Column + String ruleFileType; + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java index e2839644c..add776f56 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java @@ -6,6 +6,13 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; + +import com.iqser.red.service.persistence.management.v1.processor.utils.JSONIntegerSetConverter; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; + import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Convert; @@ -17,14 +24,6 @@ import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; - -import org.hibernate.annotations.Fetch; -import org.hibernate.annotations.FetchMode; - -import com.iqser.red.service.persistence.management.v1.processor.utils.JSONIntegerSetConverter; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -112,6 +111,9 @@ public class FileEntity { @Column private long rulesVersion; + @Column + private long componentRulesVersion; + @Column private long dossierDictionaryVersion; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 16af1c174..1038fcbf0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -6,8 +6,6 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -import jakarta.transaction.Transactional; - import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -29,15 +27,17 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; -import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis; import com.iqser.red.storage.commons.service.StorageService; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.knecon.fforesight.tenantcommons.TenantContext; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -127,7 +127,10 @@ public class DossierTemplateCloneService { private void cloneRules(String dossierTemplateId, String clonedDossierTemplateId) { - rulesPersistenceService.setRules(rulesPersistenceService.getRules(dossierTemplateId).getValue(), clonedDossierTemplateId); + for (RuleFileType ruleFileType : RuleFileType.values()) { + + rulesPersistenceService.setRules(rulesPersistenceService.getRules(dossierTemplateId, ruleFileType).getValue(), clonedDossierTemplateId, ruleFileType); + } } @@ -218,6 +221,7 @@ public class DossierTemplateCloneService { fileAttributeConfigPersistenceService.setFileAttributesConfig(clonedDossierTemplateId, facList); } + @SneakyThrows private void cloneReportTemplates(DossierTemplateEntity dossierTemplate, String clonedDossierTemplateId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java index f6ef11e37..35b8845f8 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java @@ -55,6 +55,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.management.v1.processor.utils.FileUtils; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplate; @@ -214,6 +215,9 @@ public class DossierTemplateImportService { } else if (ze.getName().contains(ExportFilename.RULES.getFilename())) { String rules = objectMapper.readValue(bytes, String.class); importTemplateResult.setRuleSet(rules); + } else if (ze.getName().contains(ExportFilename.COMPONENT_RULES.getFilename())) { + String rules = objectMapper.readValue(bytes, String.class); + importTemplateResult.setComponentRuleSet(rules); } else if (ze.getName().contains(ExportFilename.DOSSIER_TYPE.getFilename())) { Type type = objectMapper.readValue(bytes, Type.class); importTemplateResult.getTypes().add(type); @@ -300,7 +304,8 @@ public class DossierTemplateImportService { dossierTemplateRepository.save(existingDossierTemplate); // set rules - rulesPersistenceService.setRules(request.getRuleSet(), dossierTemplateId); + rulesPersistenceService.setRules(request.getRuleSet(), dossierTemplateId, RuleFileType.ENTITY); + rulesPersistenceService.setRules(request.getComponentRuleSet(), dossierTemplateId, RuleFileType.COMPONENT); existingDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(existingDossierTemplate) .name())); @@ -403,7 +408,9 @@ public class DossierTemplateImportService { dossierTemplateEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossierTemplateEntity.setCreatedBy(request.getUserId()); //set rules - rulesPersistenceService.setRules(request.getRuleSet(), dossierTemplateEntity.getId()); + rulesPersistenceService.setRules(request.getRuleSet(), dossierTemplateEntity.getId(), RuleFileType.ENTITY); + rulesPersistenceService.setRules(request.getComponentRuleSet(), dossierTemplateEntity.getId(), RuleFileType.COMPONENT); + var loadedDossierTemplate = dossierTemplateRepository.save(dossierTemplateEntity); loadedDossierTemplate.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(loadedDossierTemplate)); dossierTemplateId = loadedDossierTemplate.getId(); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisRequiredStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisRequiredStatusService.java index 88ac40e05..b599033fb 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisRequiredStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisRequiredStatusService.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service; +import static com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisRequiredStatusService.VersionType.COMPONENT_RULES; import static com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisRequiredStatusService.VersionType.DICTIONARY; import static com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisRequiredStatusService.VersionType.LEGAL_BASIS; import static com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisRequiredStatusService.VersionType.RULES; @@ -17,6 +18,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; @@ -119,18 +121,21 @@ public class ReanalysisRequiredStatusService { // compute matches var rulesVersionMatches = fileStatus.getRulesVersion() == dossierTemplateVersions.getOrDefault(RULES, -1L); + var componentRulesVersionMatches = fileStatus.getComponentRulesVersion() == dossierTemplateVersions.getOrDefault(COMPONENT_RULES, -1L); var dictionaryVersionMatches = fileStatus.getDictionaryVersion() == dossierTemplateVersions.getOrDefault(DICTIONARY, -1L); var legalBasisVersionMatches = fileStatus.getLegalBasisVersion() == dossierTemplateVersions.getOrDefault(LEGAL_BASIS, -1L); var dossierDictionaryVersionMatches = Math.max(fileStatus.getDossierDictionaryVersion(), 0) == dossierDictionaryVersion; var reanalysisRequired = !dictionaryVersionMatches || !dossierDictionaryVersionMatches; - var fullAnalysisRequired = !rulesVersionMatches || !legalBasisVersionMatches; + var fullAnalysisRequired = !rulesVersionMatches || !componentRulesVersionMatches || !legalBasisVersionMatches; if (reanalysisRequired || fullAnalysisRequired) { log.info( - "For file: {} analysis is required because -> ruleVersionMatches: {}/{}, dictionaryVersionMatches: {}/{}, legalBasisVersionMatches: {}/{}, dossierDictionaryVersionMatches: {}/{}", + "For file: {} analysis is required because -> ruleVersionMatches: {}/{}, componentRuleVersionMatches {}/{}, dictionaryVersionMatches: {}/{}, legalBasisVersionMatches: {}/{}, dossierDictionaryVersionMatches: {}/{}", fileStatus.getFilename(), fileStatus.getRulesVersion(), dossierTemplateVersions.getOrDefault(RULES, -1L), + fileStatus.getComponentRulesVersion(), + dossierTemplateVersions.getOrDefault(COMPONENT_RULES, -1L), fileStatus.getDictionaryVersion(), dossierTemplateVersions.getOrDefault(DICTIONARY, -1L), fileStatus.getLegalBasisVersion(), @@ -147,7 +152,8 @@ public class ReanalysisRequiredStatusService { var versions = new HashMap(); - versions.put(RULES, rulesPersistenceService.getRules(dossierTemplateId).getVersion()); + versions.put(RULES, rulesPersistenceService.getRules(dossierTemplateId, RuleFileType.ENTITY).getVersion()); + versions.put(COMPONENT_RULES, rulesPersistenceService.getRules(dossierTemplateId, RuleFileType.COMPONENT).getVersion()); versions.put(DICTIONARY, dictionaryPersistenceService.getVersion(dossierTemplateId)); versions.put(LEGAL_BASIS, legalBasisMappingPersistenceService.getVersion(dossierTemplateId)); @@ -175,6 +181,7 @@ public class ReanalysisRequiredStatusService { public enum VersionType { RULES, + COMPONENT_RULES, DICTIONARY, LEGAL_BASIS } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java index ceaaeec43..8fd18f498 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java @@ -9,8 +9,6 @@ import java.io.InputStream; import java.util.List; import java.util.stream.Collectors; -import jakarta.transaction.Transactional; - import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; @@ -39,6 +37,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.utils.FileSystemBackedArchiver; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierAttributeConfig; @@ -55,6 +54,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.type.Type; import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatusValue; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -171,11 +171,17 @@ public class DossierTemplateExportService { } // add rule set - var ruleSet = rulesPersistenceService.getRules(dossierTemplateId); + var ruleSet = rulesPersistenceService.getRules(dossierTemplateId, RuleFileType.ENTITY); fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(null, getFilename(ExportFilename.RULES, TXT_EXT), objectMapper.writeValueAsBytes(ruleSet.getValue()))); + // add component rule set + var componentRuleSet = rulesPersistenceService.getRules(dossierTemplateId, RuleFileType.ENTITY); + fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(null, + getFilename(ExportFilename.COMPONENT_RULES, TXT_EXT), + objectMapper.writeValueAsBytes(componentRuleSet.getValue()))); + //N files with the related report templates var reportTemplateList = reportTemplatePersistenceService.findByDossierTemplateId(dossierTemplate.getId()); fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(null, diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java index 21454b2aa..6ee5e082b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java @@ -6,8 +6,6 @@ import java.util.List; import java.util.Optional; import java.util.UUID; -import jakarta.transaction.Transactional; - import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -19,9 +17,11 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @Service @@ -68,7 +68,8 @@ public class DossierTemplatePersistenceService { BeanUtils.copyProperties(createOrUpdateDossierRequest, dossierTemplate); dossierTemplate.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossierTemplate.setCreatedBy(createOrUpdateDossierRequest.getRequestingUser()); - rulesPersistenceService.setRules(RulesPersistenceService.DEFAULT_RULES, dossierTemplate.getId()); + 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,8 +103,9 @@ public class DossierTemplatePersistenceService { return DossierTemplateStatus.INCOMPLETE; } - var rules = rulesPersistenceService.getRules(dossierTemplate.getId()); - if (rules == null) { + var rules = rulesPersistenceService.getRules(dossierTemplate.getId(), RuleFileType.ENTITY); + var componentRules = rulesPersistenceService.getRules(dossierTemplate.getId(), RuleFileType.COMPONENT); + if (rules == null || componentRules == null) { return DossierTemplateStatus.INCOMPLETE; } @@ -165,11 +167,10 @@ public class DossierTemplatePersistenceService { } - @Transactional(Transactional.TxType.REQUIRES_NEW) - public void insertDossierTemplate(DossierTemplateEntity dossierTemplate){ + public void insertDossierTemplate(DossierTemplateEntity dossierTemplate) { + dossierTemplateRepository.saveAndFlush(dossierTemplate); } - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java index 4b84bbbe2..ac387b0b9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java @@ -1,57 +1,69 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RuleSetRepository; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; + import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor @SuppressWarnings("PMD.TooManyStaticImports") public class RulesPersistenceService { - public static final String DEFAULT_RULES = "" + "package drools\n" + "\n" + "import com.iqser.red.service.redaction.v1.server.redaction.model.Section\n" + "\n" + "global Section section\n" + "\n" + "// --------------------------------------- Your rules below this line--------------------------------------------------"; + public static final String DEFAULT_RULES = "package drools\n\nimport com.iqser.red.service.redaction.v1.server.redaction.model.Section\n\nglobal Section section\n\n// --------------------------------------- Your rules below this line--------------------------------------------------"; private final RuleSetRepository ruleSetRepository; - public RuleSetEntity getRules(String dossierTemplateId) { + @Transactional + public RuleSetEntity getRules(String dossierTemplateId, RuleFileType ruleFileType) { - return ruleSetRepository.findById(dossierTemplateId).orElseGet(() -> { - RuleSetEntity ruleSet = new RuleSetEntity(); - ruleSet.setDossierTemplateId(dossierTemplateId); - ruleSet.setValue(DEFAULT_RULES); - ruleSet.setVersion(1); + return ruleSetRepository.findByDossierTemplateIdAndRuleFileType(dossierTemplateId, ruleFileType.name()) + .orElseGet(() -> createAndGetDefaultRuleSet(dossierTemplateId, ruleFileType)); + } - return ruleSetRepository.save(ruleSet); - }); + + private RuleSetEntity createAndGetDefaultRuleSet(String dossierTemplateId, RuleFileType ruleFileType) { + + RuleSetEntity ruleSet = new RuleSetEntity(); + ruleSet.setDossierTemplateId(dossierTemplateId); + ruleSet.setRuleFileType(ruleFileType.name()); + ruleSet.setValue(DEFAULT_RULES); + ruleSet.setVersion(1); + ruleSet.setTimeoutDetected(false); + return ruleSetRepository.save(ruleSet); } @Transactional - public void setRules(String rules, String dossierTemplateId) { + public void setRules(String rules, String dossierTemplateId, RuleFileType ruleFileType) { - ruleSetRepository.findById(dossierTemplateId).ifPresentOrElse(r -> { - r.setValue(rules); - r.setVersion(r.getVersion() + 1); - r.setTimeoutDetected(false); + ruleSetRepository.findByDossierTemplateIdAndRuleFileType(dossierTemplateId, ruleFileType.name()).ifPresentOrElse(ruleSet -> { + ruleSet.setDossierTemplateId(dossierTemplateId); + ruleSet.setRuleFileType(ruleFileType.name()); + ruleSet.setValue(rules); + ruleSet.setVersion(ruleSet.getVersion() + 1); + ruleSet.setTimeoutDetected(false); }, () -> { RuleSetEntity ruleSet = new RuleSetEntity(); ruleSet.setDossierTemplateId(dossierTemplateId); + ruleSet.setRuleFileType(ruleFileType.name()); ruleSet.setValue(rules); ruleSet.setVersion(1); ruleSet.setTimeoutDetected(false); - ruleSetRepository.save(ruleSet); }); } @Transactional - public void setTimeoutDetected(String dossierTemplateId) { - ruleSetRepository.updateTimeoutDetected(dossierTemplateId); + public void setTimeoutDetected(String dossierTemplateId, RuleFileType ruleFileType) { + + ruleSetRepository.updateTimeoutDetected(dossierTemplateId, ruleFileType.name()); } - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/RuleSetRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/RuleSetRepository.java index 69f1ef85d..5a4a5fb28 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/RuleSetRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/RuleSetRepository.java @@ -1,14 +1,21 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntity; +import java.util.Optional; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; -public interface RuleSetRepository extends JpaRepository { +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntityKey; + +public interface RuleSetRepository extends JpaRepository { @Modifying - @Query("update RuleSetEntity r set r.timeoutDetected = true where r.dossierTemplateId = :dossierTemplatedId") - void updateTimeoutDetected(String dossierTemplatedId); + @Query("update RuleSetEntity r set r.timeoutDetected = true where r.dossierTemplateId = :dossierTemplateId and r.ruleFileType = :ruleFileType") + void updateTimeoutDetected(String dossierTemplateId, String ruleFileType); + + + Optional findByDossierTemplateIdAndRuleFileType(String dossierTemplateId, String ruleFileType); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml index ea63d007b..18935cdf7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml @@ -158,4 +158,6 @@ databaseChangeLog: - include: file: db/changelog/tenant/108-added-dictionary-changes-to-manual-recategorization.yaml - include: - file: db/changelog/tenant/109-add-rules-timeout-detected-column.yaml \ No newline at end of file + file: db/changelog/tenant/109-add-rules-timeout-detected-column.yaml + - include: + file: db/changelog/tenant/110-add-rules-file-type.yaml \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/110-add-rules-file-type.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/110-add-rules-file-type.yaml new file mode 100644 index 000000000..00db7fbf7 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/110-add-rules-file-type.yaml @@ -0,0 +1,34 @@ +databaseChangeLog: + - changeSet: + id: add-rules-file-type + author: kilian + changes: + - addColumn: + columns: + - column: + name: rule_file_type + type: VARCHAR(255) + defaultValue: ENTITY + tableName: rule_set + - changeSet: + id: make-rules-file-type-primary-key + author: kilian + changes: + - dropPrimaryKey: + constraintName: rule_set_pkey + tableName: rule_set + - addPrimaryKey: + columnNames: dossier_template_id, rule_file_type + constraintName: PK_rule_set + tableName: rule_set + - changeSet: + id: add-component-rules-version + author: kilian + changes: + - addColumn: + columns: + - column: + name: component_rules_version + type: BIGINT + tableName: file + diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java index b8315bd91..cfc954454 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTemplateTesterAndProvider.java @@ -1,5 +1,14 @@ package com.iqser.red.service.peristence.v1.server.integration.service; +import static org.assertj.core.api.Assertions.assertThat; + +import java.time.OffsetDateTime; +import java.time.temporal.ChronoUnit; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + import com.google.common.collect.Sets; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; @@ -10,14 +19,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.Colors; 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.rules.RulesUploadRequest; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; @Service public class DossierTemplateTesterAndProvider { @@ -46,6 +47,7 @@ public class DossierTemplateTesterAndProvider { return provideTestTemplate("Template 1", false); } + public DossierTemplateModel provideTestTemplate(boolean ocrByDefault) { return provideTestTemplate("Template 1", ocrByDefault); @@ -57,6 +59,7 @@ public class DossierTemplateTesterAndProvider { return provideTestTemplate(name, false); } + public DossierTemplateModel provideTestTemplate(String name, boolean ocrByDefault) { var cru = new DossierTemplateModel(); diff --git a/persistence-service-v1/persistence-service-shared-api-v1/pom.xml b/persistence-service-v1/persistence-service-shared-api-v1/pom.xml index 767f4a0c7..109937aff 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/pom.xml +++ b/persistence-service-v1/persistence-service-shared-api-v1/pom.xml @@ -21,7 +21,6 @@ provided - com.fasterxml.jackson.dataformat jackson-dataformat-xml diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatus.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatus.java index 867ed0dfc..f2f09de90 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatus.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatus.java @@ -95,8 +95,10 @@ public class FileStatus { private String uploader; @Schema(description = "Shows which dictionary versions was used during the analysis.") private long dictionaryVersion; - @Schema(description = "Shows which rules versions was used during the analysis.") + @Schema(description = "Shows which entity rules versions was used during the analysis.") private long rulesVersion; + @Schema(description = "Shows which component rules versions was used during the analysis.") + private long componentRulesVersion; @Schema(description = "Shows which legal basis versions was used during the analysis.") private long legalBasisVersion; @Schema(description = "Shows if the file was excluded from analysis.") diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/RuleFileType.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/RuleFileType.java new file mode 100644 index 000000000..281dc19e7 --- /dev/null +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/RuleFileType.java @@ -0,0 +1,6 @@ +package com.iqser.red.service.persistence.service.v1.api.shared.model; + +public enum RuleFileType { + ENTITY, + COMPONENT +} diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRedactions.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRedactions.java index 53f81840e..47a93d532 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRedactions.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/annotations/ManualRedactions.java @@ -42,6 +42,7 @@ public class ManualRedactions { @Builder.Default private Set resizeRedactions = new HashSet<>(); + @Deprecated(forRemoval = true) @Builder.Default private Map> comments = new HashMap<>(); diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/dossier/file/FileModel.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/dossier/file/FileModel.java index b698b7f6f..06e45cee0 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/dossier/file/FileModel.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/dossier/file/FileModel.java @@ -47,6 +47,7 @@ public class FileModel { private String uploader; private long dictionaryVersion; private long rulesVersion; + private long componentRulesVersion; private long dossierDictionaryVersion; private long legalBasisVersion; private OffsetDateTime approvalDate; diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/importexport/ExportFilename.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/importexport/ExportFilename.java index cf36e012a..aff455da0 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/importexport/ExportFilename.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/importexport/ExportFilename.java @@ -13,6 +13,7 @@ public enum ExportFilename { FILE_ATTRIBUTE_GENERAL_CONFIG("fileAttributeGeneralConfigList"), LEGAL_BASIS("legalBasisMappingList"), RULES("rules"), + COMPONENT_RULES("componentRules"), REPORT_TEMPLATE("reportTemplateList"), REPORT_TEMPLATE_MULTI_FILE(" (Multi-file)"), DOSSIER_TYPE("dossierType"), diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/importexport/ImportTemplateResult.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/importexport/ImportTemplateResult.java index c8d1cbe53..fe4a7e29a 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/importexport/ImportTemplateResult.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/importexport/ImportTemplateResult.java @@ -55,6 +55,8 @@ public class ImportTemplateResult { public String ruleSet; + public String componentRuleSet; + @Builder.Default public List reportTemplateUploadRequests = new ArrayList<>(); diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/RulesUploadRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/RulesUploadRequest.java index ddeb14a19..bf17d271f 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/RulesUploadRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/dossiertemplate/rules/RulesUploadRequest.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.rules; +import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; + import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; @@ -11,9 +13,21 @@ import lombok.NoArgsConstructor; @Schema(description = "Object containing a string of Drools rules.") public class RulesUploadRequest { + public RulesUploadRequest(String rules, String dossierTemplateId) { + + this.rules = rules; + this.dossierTemplateId = dossierTemplateId; + this.ruleFileType = RuleFileType.ENTITY; + } + + @Schema(description = "The actual string of rules.") private String rules; @Schema(description = "The DossierTemplate Id for these rules") private String dossierTemplateId; + + @Schema(description = "The Rule file type of these rules", allowableValues = {"ENTITY", "COMPONENT"}) + private RuleFileType ruleFileType; + } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Change.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Change.java index 31ff8d75f..0a2ba4378 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Change.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Change.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; @Data +@Deprecated(forRemoval = true) @Builder @AllArgsConstructor @NoArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ChangeType.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ChangeType.java index 9dbb2a4ad..b12f87737 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ChangeType.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ChangeType.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog; +@Deprecated(forRemoval = true) + public enum ChangeType { ADDED, REMOVED, diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Engine.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Engine.java index de831a11c..76d3b2a59 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Engine.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Engine.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog; +@Deprecated(forRemoval = true) + public enum Engine { DICTIONARY, NER, diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/FilteredRedactionLogRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/FilteredRedactionLogRequest.java index ef1346c47..4e2822769 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/FilteredRedactionLogRequest.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/FilteredRedactionLogRequest.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; @Data +@Deprecated(forRemoval = true) @Builder @AllArgsConstructor @NoArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ManualChange.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ManualChange.java index 25982b41e..1dcf59c75 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ManualChange.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ManualChange.java @@ -14,6 +14,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor +@Deprecated(forRemoval = true) @NoArgsConstructor @Builder public class ManualChange { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ManualRedactionType.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ManualRedactionType.java index 4bae0910f..f3018136a 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ManualRedactionType.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/ManualRedactionType.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog; +@Deprecated(forRemoval = true) + public enum ManualRedactionType { ADD_LOCALLY, ADD_TO_DICTIONARY, diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Point.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Point.java index 644f7ebcd..522793502 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Point.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Point.java @@ -4,6 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +@Deprecated(forRemoval = true) @Data @AllArgsConstructor @NoArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Rectangle.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Rectangle.java index 4c4ced56f..bb862b081 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Rectangle.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/Rectangle.java @@ -1,11 +1,11 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data +@Deprecated(forRemoval = true) @AllArgsConstructor @NoArgsConstructor public class Rectangle { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLog.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLog.java index 3fac60f67..0bf604298 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLog.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLog.java @@ -3,11 +3,11 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.redactionl import java.util.ArrayList; import java.util.List; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +@Deprecated(forRemoval = true) @Data @AllArgsConstructor @NoArgsConstructor diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogChanges.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogChanges.java index e5ea29433..4889768ab 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogChanges.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogChanges.java @@ -1,6 +1,5 @@ package com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -8,6 +7,7 @@ import lombok.NoArgsConstructor; @Data @Builder +@Deprecated(forRemoval = true) @AllArgsConstructor @NoArgsConstructor public class RedactionLogChanges { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogComment.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogComment.java index 45594374a..b58e26911 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogComment.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogComment.java @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; @Data @NoArgsConstructor +@Deprecated(forRemoval = true) @AllArgsConstructor public class RedactionLogComment { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogEntry.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogEntry.java index d620dea80..cac7643d0 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogEntry.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogEntry.java @@ -17,6 +17,7 @@ import lombok.NoArgsConstructor; @Data @Builder @NoArgsConstructor +@Deprecated(forRemoval = true) @AllArgsConstructor @EqualsAndHashCode public class RedactionLogEntry { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogLegalBasis.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogLegalBasis.java index a43f9760b..4c9e2fec0 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogLegalBasis.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/RedactionLogLegalBasis.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; @Data +@Deprecated(forRemoval = true) @NoArgsConstructor @AllArgsConstructor public class RedactionLogLegalBasis { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/imported/ImportedRedaction.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/imported/ImportedRedaction.java index 299a69f93..00d148afc 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/imported/ImportedRedaction.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/imported/ImportedRedaction.java @@ -13,6 +13,7 @@ import lombok.NoArgsConstructor; @Data @Builder @NoArgsConstructor +@Deprecated(forRemoval = true) @AllArgsConstructor public class ImportedRedaction { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/imported/ImportedRedactions.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/imported/ImportedRedactions.java index 31bce07da..c70d21a88 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/imported/ImportedRedactions.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/imported/ImportedRedactions.java @@ -4,7 +4,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -13,6 +12,7 @@ import lombok.NoArgsConstructor; @Data @Builder @NoArgsConstructor +@Deprecated(forRemoval = true) @AllArgsConstructor public class ImportedRedactions { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/CellRectangle.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/CellRectangle.java index feb3155cc..4bd689818 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/CellRectangle.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/CellRectangle.java @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor +@Deprecated(forRemoval = true) @NoArgsConstructor public class CellRectangle { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionArea.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionArea.java index 59dfa95a4..684f729a0 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionArea.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionArea.java @@ -9,6 +9,7 @@ import lombok.NoArgsConstructor; @Data @NoArgsConstructor +@Deprecated(forRemoval = true) @AllArgsConstructor public class SectionArea { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionGrid.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionGrid.java index 7ca40545d..fcfc1f84e 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionGrid.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionGrid.java @@ -6,13 +6,13 @@ import java.util.List; import java.util.Map; import java.util.Set; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor +@Deprecated(forRemoval = true) @NoArgsConstructor public class SectionGrid { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionRectangle.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionRectangle.java index 59cfd73d8..eae7c7b77 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionRectangle.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/redactionlog/section/SectionRectangle.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor +@Deprecated(forRemoval = true) @NoArgsConstructor public class SectionRectangle {