From 62b8c0ecc618920f52ea36d9fcdc852ac8c0cf9e Mon Sep 17 00:00:00 2001 From: "Hanelore.Ianoseck" Date: Thu, 7 Dec 2023 15:37:53 +0200 Subject: [PATCH] Fixes after merge with master and added audit data migration script --- .../controller/ComponentLogController.java | 60 +++------ .../impl/controller/DictionaryController.java | 3 +- .../DigitalSignatureController.java | 4 +- .../DossierAttributesController.java | 4 +- .../impl/controller/DossierController.java | 74 +++++----- .../controller/DossierTemplateController.java | 49 +++---- .../impl/controller/DownloadController.java | 86 +++++------- .../controller/FileAttributesController.java | 4 +- .../controller/FileManagementController.java | 4 +- .../LegalBasisMappingController.java | 4 +- .../controller/LicenseReportController.java | 4 +- .../controller/ManualRedactionController.java | 54 +++----- .../api/impl/controller/RSSController.java | 35 +++-- .../impl/controller/ReanalysisController.java | 4 +- .../api/impl/controller/RulesController.java | 49 ++++--- .../api/impl/controller/StatusController.java | 4 +- .../api/impl/controller/UploadController.java | 57 ++++---- .../impl/controller/WatermarkController.java | 4 +- .../build.gradle.kts | 1 + .../processor}/model/audit/AuditCategory.java | 2 +- .../processor}/model/audit/AuditDetail.java | 2 +- .../model/audit/AuditDetailAction.java | 2 +- .../v1/processor/service/UploadService.java | 4 +- .../ManualRedactionUndoService.java | 2 +- .../processor/service/users/UserService.java | 4 +- .../db/changelog/db.changelog-tenant.yaml | 2 + ...table.yaml => 116-rename-audit-table.yaml} | 0 ...l => 117-rename-audit-pkey-constraint.sql} | 0 ...> 118-rename-audit-record-id-sequence.sql} | 0 .../tenant/sql/301-migrate-audit-data.sql | 127 ++++++++++++++++++ .../model/audit/AddNotificationRequest.java | 24 ---- 31 files changed, 333 insertions(+), 340 deletions(-) rename persistence-service-v1/{persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared => persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor}/model/audit/AuditCategory.java (69%) rename persistence-service-v1/{persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared => persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor}/model/audit/AuditDetail.java (94%) rename persistence-service-v1/{persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared => persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor}/model/audit/AuditDetailAction.java (71%) rename persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/{111-rename-audit-table.yaml => 116-rename-audit-table.yaml} (100%) rename persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/{112-rename-audit-pkey-constraint.sql => 117-rename-audit-pkey-constraint.sql} (100%) rename persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/{113-rename-audit-record-id-sequence.sql => 118-rename-audit-record-id-sequence.sql} (100%) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/sql/301-migrate-audit-data.sql delete mode 100644 persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AddNotificationRequest.java 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/ComponentLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ComponentLogController.java index ff50b5db4..8060f4db6 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ComponentLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ComponentLogController.java @@ -1,12 +1,16 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.GET_RSS; +import static com.knecon.fforesight.auditor.model.Detail.d; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetailAction; +import com.knecon.fforesight.auditor.Auditor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; @@ -15,16 +19,13 @@ import org.springframework.web.bind.annotation.RestController; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.service.ComponentLogService; import com.iqser.red.service.persistence.management.v1.processor.service.ComponentOverrideService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.service.v1.api.external.resource.ComponentLogResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntryValue; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.RevertOverrideRequest; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; @@ -37,8 +38,8 @@ public class ComponentLogController implements ComponentLogResource { ComponentLogService componentLogService; ComponentOverrideService componentOverrideService; - AuditPersistenceService auditPersistenceService; + private final Auditor auditor; @Override public ComponentLog getComponentLog(String dossierId, String fileId, boolean includeOverrides) { @@ -87,28 +88,12 @@ public class ComponentLogController implements ComponentLogResource { private void auditOverride(String dossierId, String fileId, String componentName, String overrideValue, List allComponentLogEntries) { Optional component = allComponentLogEntries.stream().filter(c -> c.getName().equals(componentName)).findFirst(); - String originalValue = getOriginalValue(component); String value = getValue(component); - auditPersistenceService.audit(AuditRequest.builder() - .userId(KeycloakSecurity.getUserId()) - .objectId(fileId) - .category(AuditCategory.DOCUMENT.name()) - .message("The component is overwritten with value") - .details(Map.of(DOSSIER_ID, - dossierId, - FILE_ID, - fileId, - "ComponentName", - componentName, - "Action", - "MODIFY", - "OriginalValue", - originalValue, - "OldValue", - value, - "NewValue", - overrideValue)) - .build()); + auditor.audit(AuditCategory.DOCUMENT.name(), "The component is overwritten with value", + d(DOSSIER_ID, dossierId), d(FILE_ID, fileId), + d(AuditDetail.COMPONENT_NAME, componentName), + d(AuditDetail.ACTION, AuditDetailAction.MODIFY.getID()), + d(AuditDetail.VALUE, value)); } @@ -117,26 +102,11 @@ public class ComponentLogController implements ComponentLogResource { Optional component = allComponentLogEntries.stream().filter(c -> c.getName().equals(componentNameToRevert)).findFirst(); String originalValue = getOriginalValue(component); String value = getValue(component); - auditPersistenceService.audit(AuditRequest.builder() - .userId(KeycloakSecurity.getUserId()) - .objectId(fileId) - .category(AuditCategory.DOCUMENT.name()) - .message("The component override for was reverted") - .details(Map.of(DOSSIER_ID, - dossierId, - FILE_ID, - fileId, - "ComponentName", - componentNameToRevert, - "Action", - "REVERT", - "OriginalValue", - originalValue, - "OldValue", - value, - "NewValue", - originalValue)) - .build()); + auditor.audit(AuditCategory.DOCUMENT.name(), "The component is overwritten with value", + d(DOSSIER_ID, dossierId), d(FILE_ID, fileId), + d(AuditDetail.COMPONENT_NAME, componentNameToRevert), + d(AuditDetail.ACTION, AuditDetailAction.REVERT.getID()), + d(AuditDetail.VALUE, originalValue)); } 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/DictionaryController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DictionaryController.java index d68843a05..1107deaf4 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DictionaryController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DictionaryController.java @@ -1,13 +1,12 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; + import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryService; import com.iqser.red.service.persistence.management.v1.processor.utils.StringEncodingUtils; import com.iqser.red.service.persistence.management.v1.processor.utils.TypeValueMapper; import com.iqser.red.service.persistence.service.v1.api.external.resource.DictionaryResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.*; - import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; - import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; 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.type.DictionaryEntryType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type; 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/DigitalSignatureController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DigitalSignatureController.java index 244b9a6d0..35da1719a 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DigitalSignatureController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DigitalSignatureController.java @@ -2,6 +2,8 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureKmsEntity; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.DigitalSignatureKmsService; import com.iqser.red.service.persistence.management.v1.processor.service.DigitalSignatureService; import com.iqser.red.service.persistence.management.v1.processor.service.DigitalSignatureTypeService; @@ -9,8 +11,6 @@ import com.iqser.red.service.persistence.service.v1.api.external.resource.Digita import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureKms; import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureKmsViewModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.DigitalSignatureViewModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignature; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignatureType; import com.knecon.fforesight.auditor.Auditor; 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/DossierAttributesController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierAttributesController.java index ac055b7a6..959f61089 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierAttributesController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierAttributesController.java @@ -1,14 +1,14 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierAttributesManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierAttributesResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributes; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributesConfig; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; 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.dossier.DossierAttribute; import com.knecon.fforesight.auditor.Auditor; 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/DossierController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java index 22d0f3254..63d058238 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java @@ -1,23 +1,31 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.ADD_UPDATE_DOSSIER; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.ARCHIVE_DOSSIER; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.DELETE_DOSSIER; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_DOSSIER; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.UNARCHIVE_DOSSIER; - -import java.time.OffsetDateTime; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.TreeSet; -import java.util.stream.Collectors; - +import com.google.common.collect.Lists; +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.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; +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.DossierCreatorService; +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.persistence.NotificationPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; +import com.iqser.red.service.persistence.management.v1.processor.service.users.model.User; +import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierResource; +import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierChangeEntry; +import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierInformation; +import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AddNotificationRequest; +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.dossier.CreateOrUpdateDossierRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationType; +import com.knecon.fforesight.auditor.Auditor; +import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -32,32 +40,11 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.google.common.collect.Lists; -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.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.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.management.v1.processor.service.users.model.User; -import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; -import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierChangeEntry; -import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierInformation; -import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AddNotificationRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; -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.dossier.CreateOrUpdateDossierRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; -import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationType; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; +import java.time.OffsetDateTime; +import java.util.*; +import java.util.stream.Collectors; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.*; @Slf4j @RestController @@ -65,7 +52,6 @@ import lombok.extern.slf4j.Slf4j; public class DossierController implements DossierResource { private static final Set VALID_MEMBER_ROLES = Set.of(ApplicationRoles.RED_USER_ROLE, ApplicationRoles.RED_MANAGER_ROLE); - private final Auditor auditor; private final DossierManagementService dossierManagementService; private final UserService userService; 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/DossierTemplateController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierTemplateController.java index 60fd265c1..8d17d2089 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierTemplateController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierTemplateController.java @@ -1,56 +1,39 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_DOSSIER_TEMPLATES; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.WRITE_DOSSIER_TEMPLATES; -import static com.iqser.red.service.persistence.management.v1.processor.service.FeignExceptionHandler.processFeignException; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; -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.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.ConflictException; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateStatsService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierTemplateResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.DownloadResponse; -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.CloneDossierTemplateRequest; -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.DossierTemplate; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStats; -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.*; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ExportDownloadRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ImportDossierTemplateRequest; import com.knecon.fforesight.auditor.Auditor; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; - import feign.FeignException; import io.micrometer.core.annotation.Timed; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.*; +import java.util.stream.Collectors; + +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_DOSSIER_TEMPLATES; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.WRITE_DOSSIER_TEMPLATES; +import static com.iqser.red.service.persistence.management.v1.processor.service.FeignExceptionHandler.processFeignException; @Slf4j @RestController 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/DownloadController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DownloadController.java index c038a0706..01fcb6b5a 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DownloadController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DownloadController.java @@ -1,49 +1,13 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.PROCESS_DOWNLOAD; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_DOWNLOAD_STATUS; - -import java.io.BufferedInputStream; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.io.InputStreamResource; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.context.request.RequestAttributes; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - import com.iqser.red.persistence.service.v1.external.api.impl.service.OneTimeTokenService; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; -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.DownloadService; -import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; -import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; +import com.iqser.red.service.persistence.management.v1.processor.service.*; import com.iqser.red.service.persistence.management.v1.processor.utils.StringEncodingUtils; import com.iqser.red.service.persistence.service.v1.api.external.resource.DownloadResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; -import com.iqser.red.service.persistence.service.v1.api.shared.model.DownloadResponse; -import com.iqser.red.service.persistence.service.v1.api.shared.model.DownloadStatusResponse; -import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadWithOptionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.RemoveDownloadRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.*; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; 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.DownloadFileType; @@ -53,14 +17,35 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.download.Do import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadWithOptionRequest; import com.iqser.red.storage.commons.service.StorageService; +import com.knecon.fforesight.auditor.Auditor; +import com.knecon.fforesight.auditor.UserAuditor; +import com.knecon.fforesight.auditor.service.AuditingService; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.knecon.fforesight.tenantcommons.TenantContext; -import com.knecon.fforesight.auditor.Auditor; - import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.InputStreamResource; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.io.BufferedInputStream; +import java.util.List; +import java.util.Optional; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.PROCESS_DOWNLOAD; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_DOWNLOAD_STATUS; +import static com.knecon.fforesight.auditor.model.Detail.d; @Slf4j @RestController @@ -69,7 +54,7 @@ public class DownloadController implements DownloadResource { private static final Pattern COLOR_PATTERN = Pattern.compile("^#[\\da-f]{6,6}$"); - private final Auditor auditor; + private final AuditingService auditing; private final DossierManagementService dossierService; private final FileStatusService fileStatusService; private final DownloadService downloadService; @@ -94,8 +79,8 @@ public class DownloadController implements DownloadResource { // check the user is non-member or reviewer accessControlService.verifyUserIsDossierOwnerOrApprover(request.getDossierId()); var response = downloadService.prepareDownload(convert(request)); - auditor.audit(AuditCategory.DOWNLOAD.name(), "Download was prepared", - AuditDetail.OBJECT_ID, response.getValue(), AuditDetail.DOSSIER_ID, request.getDossierId()); + auditing.audit(KeycloakSecurity.getUserId(), AuditCategory.DOWNLOAD.name(), "Download was prepared", + d(AuditDetail.OBJECT_ID, response.getValue()), d(AuditDetail.DOSSIER_ID, request.getDossierId())); return new DownloadResponse(response.getValue()); } @@ -121,8 +106,8 @@ public class DownloadController implements DownloadResource { } var response = downloadService.prepareDownload(convert(request)); - auditor.audit(AuditCategory.DOWNLOAD.name(), "Download was prepared", - AuditDetail.OBJECT_ID, response.getValue(),AuditDetail.DOSSIER_ID, request.getDossierId()); + auditing.audit(KeycloakSecurity.getUserId(), AuditCategory.DOWNLOAD.name(), "Download was prepared", + d(AuditDetail.OBJECT_ID, response.getValue()), d(AuditDetail.DOSSIER_ID, request.getDossierId())); return new DownloadResponse(response.getValue()); } @@ -197,7 +182,8 @@ public class DownloadController implements DownloadResource { fileManagementStorageService.deleteObject(storageIdForAzure); } - auditor.audit(AuditCategory.DOWNLOAD.name(), "Remove Prepared Download", AuditDetail.OBJECT_ID, storageId); + auditing.audit(KeycloakSecurity.getUserId(), AuditCategory.DOWNLOAD.name(), "Remove Prepared Download", + d(AuditDetail.OBJECT_ID, storageId)); }); } @@ -240,11 +226,12 @@ public class DownloadController implements DownloadResource { } - private InputStreamResource getFileForDownload(String storageId) { + private InputStreamResource getFileForDownload(String storageId, String userId) { try { var response = storageService.getObject(TenantContext.getTenantId(), storageId); - auditor.audit(AuditCategory.DOWNLOAD.name(), "File was downloaded.", AuditDetail.OBJECT_ID, storageId); + auditing.audit(userId, AuditCategory.DOWNLOAD.name(), "File was downloaded.", + d(AuditDetail.OBJECT_ID, storageId)); downloadService.setDownloaded(JSONPrimitive.of(storageId)); return new InputStreamResource(new BufferedInputStream(response.getInputStream())); @@ -253,7 +240,6 @@ public class DownloadController implements DownloadResource { } } - @Override @PreAuthorize("hasAuthority('" + PROCESS_DOWNLOAD + "')") public JSONPrimitive generateOneTimeToken(@RequestBody JSONPrimitive storageIdWrapper) { 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/FileAttributesController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/FileAttributesController.java index b5c3c5602..91992117c 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/FileAttributesController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/FileAttributesController.java @@ -4,15 +4,15 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity; 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.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.FileAttributesManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; import com.iqser.red.service.persistence.service.v1.api.external.resource.FileAttributesResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributes; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributesConfig; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.FileAttributesGeneralConfiguration; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; 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/FileManagementController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/FileManagementController.java index db563ce96..572494f65 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/FileManagementController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/FileManagementController.java @@ -5,13 +5,13 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe import com.iqser.red.service.persistence.management.v1.processor.exception.InternalServerErrorException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotAllowedException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.*; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; import com.iqser.red.service.persistence.management.v1.processor.utils.StringEncodingUtils; import com.iqser.red.service.persistence.service.v1.api.external.resource.FileManagementResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.RotatePagesRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; 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.FileType; import com.iqser.red.storage.commons.exception.StorageException; 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/LegalBasisMappingController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LegalBasisMappingController.java index 5746a6594..1ac2832ee 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LegalBasisMappingController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LegalBasisMappingController.java @@ -1,9 +1,9 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService; import com.iqser.red.service.persistence.service.v1.api.external.resource.LegalBasisMappingResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis; import com.knecon.fforesight.auditor.Auditor; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; 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/LicenseReportController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LicenseReportController.java index cf5deec66..beaba68e1 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LicenseReportController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/LicenseReportController.java @@ -1,9 +1,9 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.LicenseReportService; import com.iqser.red.service.persistence.service.v1.api.external.resource.LicenseReportResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; import com.iqser.red.service.persistence.service.v1.api.shared.model.license.LicenseReport; import com.iqser.red.service.persistence.service.v1.api.shared.model.license.LicenseReportRequest; import com.knecon.fforesight.auditor.Auditor; 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/ManualRedactionController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java index d0dbb6a2a..ed776a614 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ManualRedactionController.java @@ -1,21 +1,7 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.ADD_COMMENT; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.DELETE_COMMENT; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.DELETE_MANUAL_REDACTION; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.DO_MANUAL_REDACTION; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_MANUAL_REDACTIONS; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PathVariable; -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.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.CommentService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierManagementService; @@ -23,35 +9,27 @@ import com.iqser.red.service.persistence.management.v1.processor.service.FileSta import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionMapper; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionService; import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.ManualRedactionUndoService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.service.v1.api.external.resource.ManualRedactionResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.CommentResponse; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AddRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AnnotationComments; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Comment; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.CommentRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ForceRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.LegalBasisChangeRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualAddResponse; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.RecategorizationRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.RemoveRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddCommentRequestModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddRedactionRequestModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ForceRedactionRequestModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.LegalBasisChangeRequestModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.RecategorizationRequestModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.RemoveRedactionRequestModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ResizeRedactionRequestModel; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.*; +import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.*; import com.knecon.fforesight.auditor.Auditor; +import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Set; + +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.*; +import static com.knecon.fforesight.auditor.model.Detail.d; @Slf4j @RestController 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/RSSController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RSSController.java index 5bb5cb9b6..41236ef56 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RSSController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RSSController.java @@ -1,10 +1,18 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.GET_RSS; - -import java.util.Map; -import java.util.stream.Collectors; - +import com.iqser.red.service.persistence.management.v1.processor.client.redactionreportservice.RssReportClient; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetailAction; +import com.iqser.red.service.persistence.management.v1.processor.service.ComponentOverrideService; +import com.iqser.red.service.persistence.service.v1.api.external.resource.RSSResource; +import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides; +import com.iqser.red.service.persistence.service.v1.api.shared.model.component.RevertOverrideRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.rss.RSSFileResponse; +import com.iqser.red.service.persistence.service.v1.api.shared.model.rss.RSSResponse; +import com.iqser.red.service.redaction.report.v1.api.model.rss.DetailedRSSResponse; +import com.knecon.fforesight.auditor.Auditor; +import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PathVariable; @@ -12,21 +20,10 @@ 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.client.redactionreportservice.RssReportClient; -import com.iqser.red.service.persistence.management.v1.processor.service.ComponentOverrideService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; -import com.iqser.red.service.persistence.service.v1.api.external.resource.RSSResource; -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.component.ComponentsOverrides; -import com.iqser.red.service.persistence.service.v1.api.shared.model.component.RevertOverrideRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.rss.RSSFileResponse; -import com.iqser.red.service.persistence.service.v1.api.shared.model.rss.RSSResponse; -import com.iqser.red.service.redaction.report.v1.api.model.rss.DetailedRSSResponse; -import com.knecon.fforesight.auditor.Auditor; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; +import java.util.stream.Collectors; -import lombok.RequiredArgsConstructor; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.GET_RSS; +import static com.knecon.fforesight.auditor.model.Detail.d; @Deprecated(forRemoval = true) @RestController 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/ReanalysisController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReanalysisController.java index b0c272d69..b92267848 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReanalysisController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReanalysisController.java @@ -3,13 +3,13 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import com.google.common.collect.Sets; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisService; import com.iqser.red.service.persistence.service.v1.api.external.resource.ReanalysisResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.PageExclusionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; import com.knecon.fforesight.auditor.Auditor; import feign.FeignException; 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 073f4b421..9d4fdc87a 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,13 +1,22 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -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 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.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; +import com.iqser.red.service.persistence.management.v1.processor.service.RulesValidationService; +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.RuleFileType; +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.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel; +import com.iqser.red.service.redaction.v1.model.DroolsSyntaxValidation; +import com.knecon.fforesight.auditor.Auditor; +import feign.FeignException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -20,25 +29,13 @@ 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.exception.BadRequestException; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileUploadException; -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.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.persistence.service.v1.api.shared.model.dossiertemplate.rules.RulesUploadRequestModel; -import com.iqser.red.service.redaction.v1.model.DroolsSyntaxValidation; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; -import feign.FeignException; -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; @Slf4j @RestController 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 91529cacb..f8d76e9a8 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 @@ -4,6 +4,7 @@ import static com.iqser.red.service.persistence.management.v1.processor.roles.Ac 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 static com.knecon.fforesight.auditor.model.Detail.d; import java.time.OffsetDateTime; import java.util.ArrayList; @@ -14,6 +15,7 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PathVariable; @@ -29,14 +31,12 @@ import com.iqser.red.service.persistence.management.v1.processor.service.AccessC 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.FileStatusMapper; -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.FileStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AddNotificationRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest; 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.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; 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/UploadController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UploadController.java index b37365e16..b1b518639 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UploadController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/UploadController.java @@ -1,18 +1,22 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; -import static com.iqser.red.service.persistence.management.v1.processor.service.FeignExceptionHandler.processFeignException; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - +import com.iqser.red.service.pdftron.redaction.v1.api.model.ByteContentDocument; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; +import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; +import com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisService; +import com.iqser.red.service.persistence.management.v1.processor.service.UploadService; +import com.iqser.red.service.persistence.management.v1.processor.utils.FileUtils; +import com.iqser.red.service.persistence.service.v1.api.external.resource.UploadResource; +import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; +import com.iqser.red.service.persistence.service.v1.api.shared.model.FileUploadResult; +import com.knecon.fforesight.auditor.Auditor; +import feign.FeignException; +import io.micrometer.core.annotation.Timed; +import lombok.AccessLevel; +import lombok.RequiredArgsConstructor; +import lombok.experimental.FieldDefaults; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipFile; import org.apache.commons.io.IOUtils; @@ -22,26 +26,13 @@ import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; -import com.iqser.red.service.pdftron.redaction.v1.api.model.ByteContentDocument; -import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; -import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService; -import com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisService; -import com.iqser.red.service.persistence.management.v1.processor.service.UploadService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.FileUtils; -import com.iqser.red.service.persistence.service.v1.api.external.resource.UploadResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; -import com.iqser.red.service.persistence.service.v1.api.shared.model.FileUploadResult; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; -import com.knecon.fforesight.auditor.Auditor; -import feign.FeignException; -import io.micrometer.core.annotation.Timed; -import lombok.AccessLevel; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; -import lombok.extern.slf4j.Slf4j; +import java.io.*; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.UUID; + +import static com.iqser.red.service.persistence.management.v1.processor.service.FeignExceptionHandler.processFeignException; @RestController @RequiredArgsConstructor 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/WatermarkController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/WatermarkController.java index 4a936f773..a0b8161dc 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/WatermarkController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/WatermarkController.java @@ -1,10 +1,10 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; import com.iqser.red.service.persistence.service.v1.api.external.resource.WatermarkResource; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; import com.knecon.fforesight.auditor.Auditor; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; diff --git a/persistence-service-v1/persistence-service-external-api-v1/build.gradle.kts b/persistence-service-v1/persistence-service-external-api-v1/build.gradle.kts index 3296df16e..1d340fabb 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/build.gradle.kts +++ b/persistence-service-v1/persistence-service-external-api-v1/build.gradle.kts @@ -13,6 +13,7 @@ dependencies { api("org.springframework.boot:spring-boot-starter-security:3.1.3") api("org.springframework.boot:spring-boot-starter-validation:3.1.3") api("com.iqser.red.commons:jackson-commons:2.1.0") + api("com.knecon.fforesight:auditor:0.9.0") api(project(":persistence-service-shared-api-v1")) testImplementation("com.iqser.red.commons:test-commons:2.1.0") testImplementation("org.springframework.boot:spring-boot-starter-test:3.0.4") diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditCategory.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditCategory.java similarity index 69% rename from persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditCategory.java rename to persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditCategory.java index cca1097de..37ce12841 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditCategory.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditCategory.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.model.audit; +package com.iqser.red.service.persistence.management.v1.processor.model.audit; public enum AuditCategory { DOSSIER, diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditDetail.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditDetail.java similarity index 94% rename from persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditDetail.java rename to persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditDetail.java index 7021653cf..b36ea7b09 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditDetail.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditDetail.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.model.audit; +package com.iqser.red.service.persistence.management.v1.processor.model.audit; public final class AuditDetail { diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditDetailAction.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditDetailAction.java similarity index 71% rename from persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditDetailAction.java rename to persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditDetailAction.java index 5e50d9445..5f25f0b20 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AuditDetailAction.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/model/audit/AuditDetailAction.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.model.audit; +package com.iqser.red.service.persistence.management.v1.processor.model.audit; public enum AuditDetailAction { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/UploadService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/UploadService.java index 76db4e659..9c0921b65 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/UploadService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/UploadService.java @@ -3,10 +3,10 @@ package com.iqser.red.service.persistence.management.v1.processor.service; import com.google.common.collect.Lists; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileUploadResult; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ImportCsvRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.ImportCsvResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.AddFileRequest; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java index bc8b54fdb..7c8081405 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionUndoService.java @@ -3,6 +3,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.manual import static com.iqser.red.service.persistence.service.v1.api.external.resource.ManualRedactionResource.ANNOTATION_ID; import static com.iqser.red.service.persistence.service.v1.api.external.resource.ManualRedactionResource.DOSSIER_ID; import static com.iqser.red.service.persistence.service.v1.api.external.resource.ManualRedactionResource.FILE_ID; +import static com.knecon.fforesight.auditor.model.Detail.d; import java.time.OffsetDateTime; import java.util.ArrayList; @@ -24,7 +25,6 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.NotFo import com.iqser.red.service.persistence.management.v1.processor.service.AnalysisFlagsCalculationService; import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.AddRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ForceRedactionPersistenceService; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/users/UserService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/users/UserService.java index aeb8a8908..ee7bb1a42 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/users/UserService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/users/UserService.java @@ -4,14 +4,14 @@ import com.google.common.collect.Lists; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.service.CustomPermissionService; import com.iqser.red.service.persistence.management.v1.processor.client.tenantusermanagementservice.UsersClient; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditCategory; +import com.iqser.red.service.persistence.management.v1.processor.model.audit.AuditDetail; 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.persistence.NotificationPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.users.events.*; import com.iqser.red.service.persistence.management.v1.processor.service.users.model.User; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AddNotificationRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditDetail; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationType; 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 e6ae11d56..79c9ecaae 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 @@ -175,3 +175,5 @@ databaseChangeLog: file: db/changelog/tenant/117-rename-audit-pkey-constraint.sql - include: file: db/changelog/tenant/118-rename-audit-record-id-sequence.sql + - include: + file: db/changelog/tenant/sql/301-migrate-audit-data.sql diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/111-rename-audit-table.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/116-rename-audit-table.yaml similarity index 100% rename from persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/111-rename-audit-table.yaml rename to persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/116-rename-audit-table.yaml diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/112-rename-audit-pkey-constraint.sql b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/117-rename-audit-pkey-constraint.sql similarity index 100% rename from persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/112-rename-audit-pkey-constraint.sql rename to persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/117-rename-audit-pkey-constraint.sql diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/113-rename-audit-record-id-sequence.sql b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/118-rename-audit-record-id-sequence.sql similarity index 100% rename from persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/113-rename-audit-record-id-sequence.sql rename to persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/118-rename-audit-record-id-sequence.sql diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/sql/301-migrate-audit-data.sql b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/sql/301-migrate-audit-data.sql new file mode 100644 index 000000000..dbacc5d30 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/sql/301-migrate-audit-data.sql @@ -0,0 +1,127 @@ +INSERT INTO audit (record_date, message, category, user_id) +SELECT record_date, message, category, user_id from old_audit; + +UPDATE audit +SET + string_prop_value1 = object_id, + string_prop_name1 = 'object_id', + string_prop_value2 = ( + SELECT left(value::text, 1024) +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='string' or json_typeof(value)='array' or json_typeof(value)='object' + LIMIT 1 + ), + string_prop_name2 = ( +SELECT key +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='string' or json_typeof(value)='array' or json_typeof(value)='object' + LIMIT 1 + ), + string_prop_value3 = ( +SELECT left(value::text, 1024) +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='string' or json_typeof(value)='array' or json_typeof(value)='object' +OFFSET 1 + LIMIT 1 + ), + string_prop_name3 = ( +SELECT key +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='string' or json_typeof(value)='array' or json_typeof(value)='object' +OFFSET 1 + LIMIT 1 + ), + string_prop_value4 = ( +SELECT left(value::text, 1024) +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='string' or json_typeof(value)='array' or json_typeof(value)='object' +OFFSET 2 + LIMIT 1 + ), + string_prop_name4 = ( +SELECT key +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='string' or json_typeof(value)='array' or json_typeof(value)='object' +OFFSET 2 + LIMIT 1 + ) +FROM old_audit +WHERE old_audit.record_date = audit.record_date and old_audit.message = audit.message; + + +UPDATE audit +SET + numeric_prop_value1 = ( + SELECT value::text::BIGINT + FROM json_each(old_audit.details::json) + WHERE json_typeof(value)='number' + LIMIT 1 + ), + numeric_prop_name1 = ( +SELECT key +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='number' + LIMIT 1 + ), + numeric_prop_value2 = ( +SELECT value::text::BIGINT +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='number' +OFFSET 1 + LIMIT 1 + ), + numeric_prop_name2 = ( +SELECT key +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='number' +OFFSET 1 + LIMIT 1 + ), + numeric_prop_value3 = ( +SELECT value::text::BIGINT +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='number' +OFFSET 2 + LIMIT 1 + ), + numeric_prop_name3 = ( +SELECT key +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='number' +OFFSET 2 + LIMIT 1 + ) +FROM old_audit +WHERE old_audit.record_date = audit.record_date and old_audit.message = audit.message; + + +UPDATE audit +SET + boolean_prop_value1 = ( + SELECT value::text::boolean + FROM json_each(old_audit.details::json) + WHERE json_typeof(value)='boolean' + LIMIT 1 + ), + boolean_prop_name1 = ( +SELECT key +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='boolean' + LIMIT 1 + ), + boolean_prop_value2 = ( +SELECT value::text::boolean +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='boolean' +OFFSET 1 + LIMIT 1 + ), + boolean_prop_name2 = ( +SELECT key +FROM json_each(old_audit.details::json) +WHERE json_typeof(value)='boolean' +OFFSET 1 + LIMIT 1 + ) +FROM old_audit +WHERE old_audit.record_date = audit.record_date and old_audit.message = audit.message; \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AddNotificationRequest.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AddNotificationRequest.java deleted file mode 100644 index 14507246e..000000000 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/audit/AddNotificationRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.model.audit; - -import java.util.HashMap; -import java.util.Map; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class AddNotificationRequest { - - private String userId; - private String issuerId; - private String notificationType; - - @Builder.Default - private Map target = new HashMap<>(); - -}