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/ApplicationConfigurationController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ApplicationConfigurationController.java index 46fa872cc..2526597c0 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ApplicationConfigurationController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ApplicationConfigurationController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RestController; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity; import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.ApplicationConfigurationResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.ApplicationConfig; 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/AuditController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/AuditController.java index fc5c4148b..b8b7f6476 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/AuditController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/AuditController.java @@ -1,7 +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.SEARCH_AUDIT_LOG; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; 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 7726f2c90..30d2e34c0 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 @@ -27,7 +27,7 @@ import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; 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; 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 fbe041996..aeb4b4754 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 @@ -21,7 +21,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.AccessC import com.iqser.red.service.persistence.management.v1.processor.service.DossierAttributesManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierAttributesResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierAttributes; 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/DossierStatusController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierStatusController.java index ebab0a2ad..74e87ce95 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierStatusController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierStatusController.java @@ -18,7 +18,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.utils.ColorUtils; import com.iqser.red.service.persistence.management.v1.processor.utils.DossierStatusMapper; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.DossierStatusResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; 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 f19db25c9..1a2255b80 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 @@ -23,7 +23,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.FileAtt 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.FileAttributeConfigPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.FileAttributesResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributes; 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 be114b3d8..50e89cba3 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 @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.LegalBasisMappingResource; 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; 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/NotificationController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/NotificationController.java index 7dce245d0..f3ef07499 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/NotificationController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/NotificationController.java @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.NotificationResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.NotificationResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; 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/NotificationPreferencesController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/NotificationPreferencesController.java index 4eaa9c0cd..08c00771f 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/NotificationPreferencesController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/NotificationPreferencesController.java @@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RestController; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPreferencesPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.NotificationPreferencesResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationPreferences; 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/ReportTemplateController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReportTemplateController.java index aab701f12..445125f4e 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReportTemplateController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReportTemplateController.java @@ -37,7 +37,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.management.v1.processor.utils.StringEncodingUtils; import com.iqser.red.service.persistence.service.v1.api.external.resource.ReportTemplateResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; 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/ViewedPagesController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ViewedPagesController.java index 630cddc41..88ba8d7e5 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ViewedPagesController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ViewedPagesController.java @@ -14,7 +14,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.AccessC import com.iqser.red.service.persistence.management.v1.processor.service.AnalysisFlagsCalculationService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.ViewedPagesResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.ViewedPages; import com.iqser.red.service.persistence.service.v1.api.shared.model.ViewedPagesRequest; 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 5f436f8e1..1e5eb88ba 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 @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController; import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity; import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.external.resource.WatermarkResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.WatermarkModel; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DictionaryInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DictionaryInternalController.java index 2bc194475..028be7654 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DictionaryInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DictionaryInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DigitalSignatureInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DigitalSignatureInternalController.java index 5cbafa265..027b2e8e2 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DigitalSignatureInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DigitalSignatureInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import org.springframework.web.bind.annotation.RestController; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierAttributesConfigInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierAttributesConfigInternalController.java index 640fdd427..1a2cc25ce 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierAttributesConfigInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierAttributesConfigInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierAttributesInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierAttributesInternalController.java index 8c98167aa..3d1f3d2fb 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierAttributesInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierAttributesInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierTemplateInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierTemplateInternalController.java index e38ae4f5a..76befe632 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierTemplateInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/DossierTemplateInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/FileAttributesConfigInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/FileAttributesConfigInternalController.java index 79c5cc3dc..5024c7472 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/FileAttributesConfigInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/FileAttributesConfigInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/IndexInformationInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/IndexInformationInternalController.java index 2a36cc066..1373b473f 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/IndexInformationInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/IndexInformationInternalController.java @@ -5,7 +5,7 @@ import org.springframework.web.bind.annotation.RestController; import com.iqser.red.service.persistence.management.v1.processor.entity.index.IndexInformationEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.IndexInformationPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.internal.resources.IndexInformationResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.index.IndexInformation; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/LegalBasisMappingInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/LegalBasisMappingInternalController.java index c6ea5a75f..cc72f1671 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/LegalBasisMappingInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/LegalBasisMappingInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/ReportTemplateInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/ReportTemplateInternalController.java index 9cfdab435..e35390c81 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/ReportTemplateInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/ReportTemplateInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/WatermarkInternalController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/WatermarkInternalController.java index 19ad0fb4f..d208b8104 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/WatermarkInternalController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/WatermarkInternalController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.v1.internal.api.controller; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; diff --git a/persistence-service-v1/persistence-service-processor-v1/pom.xml b/persistence-service-v1/persistence-service-processor-v1/pom.xml index bcd6fa7ed..8ae978b7d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/pom.xml +++ b/persistence-service-v1/persistence-service-processor-v1/pom.xml @@ -19,6 +19,7 @@ 0.5.0 0.18.0 0.6.0 + 0.3.0 @@ -28,6 +29,12 @@ ${jobs-commons.version} + + com.knecon.fforesight + database-tenant-commons + ${database-tenant-commons.version} + + com.knecon.fforesight keycloak-commons diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/acl/ACLBeanConfiguration.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/acl/ACLBeanConfiguration.java index 21585f6c2..93c32eff3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/acl/ACLBeanConfiguration.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/acl/ACLBeanConfiguration.java @@ -20,7 +20,7 @@ import org.springframework.security.acls.jdbc.LookupStrategy; import org.springframework.security.acls.model.PermissionGrantingStrategy; import org.springframework.transaction.annotation.EnableTransactionManagement; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy.MultiTenantDataSource; +import com.knecon.fforesight.databasetenantcommons.providers.MultiTenantDataSource; import lombok.RequiredArgsConstructor; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/TenantMessagingConfiguration.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/TenantMessagingConfiguration.java deleted file mode 100644 index 6c8eef759..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/configuration/TenantMessagingConfiguration.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.configuration; - - -import org.springframework.amqp.core.Binding; -import org.springframework.amqp.core.BindingBuilder; -import org.springframework.amqp.core.FanoutExchange; -import org.springframework.amqp.core.Queue; -import org.springframework.amqp.core.QueueBuilder; -import org.springframework.amqp.core.TopicExchange; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import lombok.RequiredArgsConstructor; - -@Configuration -@RequiredArgsConstructor -public class TenantMessagingConfiguration { - - public static final String PERSISTENCE_SERVICE_TENANT_EVENTS_DQL = "persistence-service-tenant-events-dql"; - public static final String PERSISTENCE_SERVICE_TENANT_CREATED_QUEUE = "persistence-service-tenant-created-queue"; - - - @Bean("persistenceServiceTenantCreatedQueue") - public Queue persistenceServiceTenantCreatedQueue() { - return QueueBuilder.durable(PERSISTENCE_SERVICE_TENANT_CREATED_QUEUE) - .withArgument("x-dead-letter-exchange", "").withArgument("x-dead-letter-routing-key", PERSISTENCE_SERVICE_TENANT_EVENTS_DQL).build(); - } - - @Bean - public Queue persistenceServiceTenantDLQ() { - - return QueueBuilder.durable(PERSISTENCE_SERVICE_TENANT_EVENTS_DQL).build(); - } - - - @Bean - public Binding tenantExchangeBinding(@Qualifier("persistenceServiceTenantCreatedQueue") Queue persistenceServiceTenantCreatedQueue, - @Qualifier("tenantExchange") TopicExchange tenantExchange) { - return BindingBuilder.bind(persistenceServiceTenantCreatedQueue).to(tenantExchange).with("tenant.created"); - } - - @Bean(name = "tenantExchange") - TopicExchange tenantExchange(@Value("${fforesight.tenant-exchange.name}") String tenantExchangeName) { - - return new TopicExchange(tenantExchangeName); - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/DevDataProvider.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dev/DevDataProvider.java similarity index 93% rename from persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/DevDataProvider.java rename to persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dev/DevDataProvider.java index e9f6557f6..8c4dd35b6 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/DevDataProvider.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dev/DevDataProvider.java @@ -1,4 +1,5 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy; +package com.iqser.red.service.persistence.management.v1.processor.dev; + import java.io.ByteArrayOutputStream; import java.io.File; @@ -10,11 +11,9 @@ import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.management.v1.processor.migration.AsyncMigrationStarterService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateImportService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ImportDossierTemplateRequest; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/AsyncMigrationStarterService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/AsyncMigrationStarterService.java index 73e7f9a2f..efe873ea7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/AsyncMigrationStarterService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/AsyncMigrationStarterService.java @@ -5,8 +5,9 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.acl.custom.initializer.ACLInitializer; +import com.iqser.red.service.persistence.management.v1.processor.dev.DevDataProvider; import com.iqser.red.service.persistence.management.v1.processor.service.job.AutomaticAnalysisJob; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy.DevDataProvider; +import com.knecon.fforesight.databasetenantcommons.providers.MigrationService; import com.knecon.fforesight.tenantcommons.TenantProvider; import com.knecon.fforesight.tenantcommons.model.UpdateDetailsRequest; @@ -14,7 +15,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Service -public class AsyncMigrationStarterService { +public class AsyncMigrationStarterService implements MigrationService { private final AutomaticAnalysisJob automaticAnalysisJob; private final MigrationStarterService migrationStarterService; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/persistence/TenantPersistenceConfig.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/persistence/TenantPersistenceConfig.java deleted file mode 100644 index 35ab28f19..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/persistence/TenantPersistenceConfig.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.multitenancy.persistence; - -import java.util.HashMap; -import java.util.Map; - -import jakarta.persistence.EntityManagerFactory; - -//import org.hibernate.MultiTenancyStrategy; -import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy; -import org.hibernate.cfg.AvailableSettings; -import org.hibernate.dialect.Dialect; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; -import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; -import org.springframework.context.annotation.Primary; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.orm.hibernate5.SpringBeanContainer; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; - -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy.CurrentTenantIdentifierResolverImpl; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy.DynamicDataSourceBasedMultiTenantConnectionProvider; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ColorsRepository; -import com.iqser.red.service.persistence.management.v1.processor.settings.TenantHikariSettings; -import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; -import com.knecon.fforesight.tenantcommons.TenantProvider; - -import lombok.RequiredArgsConstructor; - -@Configuration -@EnableJpaRepositories(basePackageClasses = ColorsRepository.class, entityManagerFactoryRef = "tenantEntityManagerFactory", transactionManagerRef = "tenantTransactionManager") -@EnableConfigurationProperties({JpaProperties.class, TenantHikariSettings.class}) -@RequiredArgsConstructor -public class TenantPersistenceConfig { - - private static final String entityPackages = "com.iqser.red.service.persistence.management.v1.processor.entity"; - private final ConfigurableListableBeanFactory beanFactory; - private final JpaProperties jpaProperties; - - - @Primary - @Bean - public LocalContainerEntityManagerFactoryBean tenantEntityManagerFactory(DynamicDataSourceBasedMultiTenantConnectionProvider connectionProvider, - CurrentTenantIdentifierResolverImpl tenantResolver) { - - LocalContainerEntityManagerFactoryBean emfBean = new LocalContainerEntityManagerFactoryBean(); - emfBean.setPersistenceUnitName("tenant-persistence-unit"); - emfBean.setPackagesToScan(entityPackages); - emfBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); - Map properties = new HashMap<>(this.jpaProperties.getProperties()); - properties.put(AvailableSettings.PHYSICAL_NAMING_STRATEGY, "org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy"); - properties.put(AvailableSettings.IMPLICIT_NAMING_STRATEGY, "org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy"); - properties.put(AvailableSettings.BEAN_CONTAINER, new SpringBeanContainer(this.beanFactory)); -// properties.put(AvailableSettings.MULTI_TENANT, MultiTenancyStrategy.DATABASE); - properties.put(AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER, connectionProvider); - properties.put(AvailableSettings.MULTI_TENANT_IDENTIFIER_RESOLVER, tenantResolver); - properties.put(AvailableSettings.DIALECT, "org.hibernate.dialect.PostgreSQLDialect"); - properties.put("hibernate.temp.use_jdbc_metadata_defaults",false); - emfBean.setJpaPropertyMap(properties); - - return emfBean; - } - - - @Primary - @Bean - public JpaTransactionManager tenantTransactionManager(@Qualifier("tenantEntityManagerFactory") EntityManagerFactory emf) { - - JpaTransactionManager tenantTransactionManager = new JpaTransactionManager(); - tenantTransactionManager.setEntityManagerFactory(emf); - return tenantTransactionManager; - } - - - @Bean - @ConfigurationProperties("multitenancy.tenant.liquibase") - public LiquibaseProperties tenantLiquibaseProperties() { - - return new LiquibaseProperties(); - } - - - @Bean - public TenantSpringLiquibaseExecutor tenantLiquibase(EncryptionDecryptionService encryptionService, - TenantProvider tenantProvider, - LiquibaseProperties tenantLiquibaseProperties) { - - return new TenantSpringLiquibaseExecutor(encryptionService, tenantProvider, tenantLiquibaseProperties); - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/persistence/TenantSpringLiquibaseExecutor.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/persistence/TenantSpringLiquibaseExecutor.java deleted file mode 100644 index bfec90d04..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/persistence/TenantSpringLiquibaseExecutor.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.multitenancy.persistence; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.util.List; - -import javax.sql.DataSource; - -import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; -import org.springframework.context.ResourceLoaderAware; -import org.springframework.core.io.ResourceLoader; -import org.springframework.jdbc.datasource.SingleConnectionDataSource; - -import com.iqser.red.service.persistence.management.v1.processor.utils.jdbc.JDBCUtils; -import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; -import com.knecon.fforesight.tenantcommons.TenantProvider; -import com.knecon.fforesight.tenantcommons.model.TenantResponse; - -import liquibase.integration.spring.SpringLiquibase; -import lombok.RequiredArgsConstructor; -import lombok.Setter; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@RequiredArgsConstructor -public class TenantSpringLiquibaseExecutor implements InitializingBean, ResourceLoaderAware { - - private final EncryptionDecryptionService encryptionService; - private final TenantProvider tenantProvider; - - @Qualifier("tenantLiquibaseProperties") - private final LiquibaseProperties tenantLiquibaseProperties; - - @Setter - private ResourceLoader resourceLoader; - - - @Override - public void afterPropertiesSet() { - - log.info("DynamicDataSources based multi-tenancy enabled"); - this.runOnAllTenants(tenantProvider.getTenants()); - } - - - @SneakyThrows - protected void runOnAllTenants(List tenants) { - - for (var tenant : tenants) { - - var jdbcURL = JDBCUtils.buildJdbcUrlWithSchema(tenant.getDatabaseConnection()); - log.info("Initializing Liquibase for tenant {} / {}", tenant.getTenantId(), jdbcURL); - try (Connection connection = DriverManager.getConnection(jdbcURL, - tenant.getDatabaseConnection().getUsername(), - encryptionService.decrypt(tenant.getDatabaseConnection().getPassword()))) { - DataSource tenantDataSource = new SingleConnectionDataSource(connection, false); - SpringLiquibase liquibase = this.getSpringLiquibase(tenantDataSource); - liquibase.setDefaultSchema(tenant.getDatabaseConnection().getSchema()); - liquibase.setLiquibaseSchema(tenant.getDatabaseConnection().getSchema()); - liquibase.afterPropertiesSet(); - } catch (Exception e) { - log.error("Failed to run liquibase migration on tenant: {}", tenant.getTenantId()); - } - log.info("Liquibase ran for tenant " + tenant.getTenantId()); - } - } - - - protected SpringLiquibase getSpringLiquibase(DataSource dataSource) { - - SpringLiquibase liquibase = new SpringLiquibase(); - liquibase.setResourceLoader(resourceLoader); - liquibase.setDataSource(dataSource); - liquibase.setChangeLog(tenantLiquibaseProperties.getChangeLog()); - liquibase.setContexts(tenantLiquibaseProperties.getContexts()); - return liquibase; - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java index 98eb04b3d..e8480c70e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java @@ -28,7 +28,7 @@ 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.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.management.v1.processor.utils.TextNormalizationUtilities; import com.iqser.red.service.persistence.management.v1.processor.utils.TypeMapper; import com.iqser.red.service.persistence.management.v1.processor.validation.DictionaryValidator; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java index 484168a83..5ee30a693 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryService.java @@ -36,7 +36,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.NotFo import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.utils.ColorUtils; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.Dictionary; import com.iqser.red.service.persistence.service.v1.api.shared.model.TypeResponse; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java index 0c69a2c97..7fd16439e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java @@ -10,7 +10,7 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur 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.persistence.repository.DigitalSignatureRepository; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; 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.tenantcommons.EncryptionDecryptionService; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierAttributesManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierAttributesManagementService.java index 2d0453b8c..bcb589bdb 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierAttributesManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierAttributesManagementService.java @@ -11,7 +11,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierAttribute; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierAttributeType; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java index 50b5090ea..f143f1c01 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java @@ -16,7 +16,7 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier. import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException; import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.management.v1.processor.utils.DossierMapper; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierInformation; 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; 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 28a9058e9..697b0321a 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 @@ -31,7 +31,7 @@ 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.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; 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; 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 e4124d763..f6ef11e37 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 @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateManagementService.java index 4d9cd97aa..d38885c72 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateManagementService.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.List; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DownloadService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DownloadService.java index 04e128c20..e62c9d785 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DownloadService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DownloadService.java @@ -21,7 +21,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils; 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.WorkflowStatus; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java index 41fea2750..edb0c25b1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java @@ -35,7 +35,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.management.v1.processor.utils.FileModelMapper; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeResult; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttribute; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionProviderService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionProviderService.java index dc8745357..54511c53d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionProviderService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionProviderService.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.HashMap; import java.util.HashSet; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionService.java index 135636e72..b50d21979 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionService.java @@ -41,7 +41,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.LegalBasisChangePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.MessageType; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AddRedactionRequest; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/RedactionLogService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/RedactionLogService.java index 0f914ba5c..252560442 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/RedactionLogService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/RedactionLogService.java @@ -13,7 +13,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.redactionlog.RedactionLogMergeService; import com.iqser.red.service.persistence.management.v1.processor.service.redactionlog.RedactionRequest; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; 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.Type; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.FilteredRedactionLogRequest; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReportTemplateService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReportTemplateService.java index 2b7e95dbe..be16d83e0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReportTemplateService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReportTemplateService.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.io.ByteArrayInputStream; import java.util.List; 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 89756d1ff..ceaaeec43 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 @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service.export; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java index 278d5e103..d64cf174e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java @@ -16,8 +16,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalsePositiveEntryRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.utils.jdbc.JDBCWriteUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; +import com.knecon.fforesight.databasetenantcommons.providers.utils.JDBCWriteUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java index 26616d99c..419124d2e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisMappingPersistenceService.java @@ -1,6 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter.convert; import java.util.ArrayList; import java.util.Collections; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/NotificationPreferencesPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/NotificationPreferencesPersistenceService.java index 87233efcb..31c1a88aa 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/NotificationPreferencesPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/NotificationPreferencesPersistenceService.java @@ -17,7 +17,7 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.entity.notification.NotificationPreferencesEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationPreferencesRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationRepository; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.NotificationPreferences; 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/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ResizeRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ResizeRedactionPersistenceService.java index ab7601881..c154122a8 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ResizeRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ResizeRedactionPersistenceService.java @@ -13,7 +13,7 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.annotati import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.RectangleEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.annotationentity.ResizeRedactionRepository; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/CurrentTenantIdentifierResolverImpl.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/CurrentTenantIdentifierResolverImpl.java deleted file mode 100644 index b06f3222d..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/CurrentTenantIdentifierResolverImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy; - -import org.hibernate.context.spi.CurrentTenantIdentifierResolver; -import org.springframework.stereotype.Component; - -import com.knecon.fforesight.tenantcommons.TenantContext; - -@Component("currentTenantIdentifierResolver") -public class CurrentTenantIdentifierResolverImpl implements CurrentTenantIdentifierResolver { - - @Override - public String resolveCurrentTenantIdentifier() { - - String tenantId = TenantContext.getTenantId(); - if (tenantId != null && !tenantId.isEmpty()) { - return tenantId; - } else { - // Allow bootstrapping the EntityManagerFactory, in which case no tenant is needed - return "BOOTSTRAP"; - } - } - - - @Override - public boolean validateExistingCurrentSessions() { - - return true; - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/DynamicDataSourceBasedMultiTenantConnectionProvider.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/DynamicDataSourceBasedMultiTenantConnectionProvider.java deleted file mode 100644 index 7f7c9ae17..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/DynamicDataSourceBasedMultiTenantConnectionProvider.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; - -import jakarta.annotation.PostConstruct; -import javax.sql.DataSource; - -import org.hibernate.engine.jdbc.connections.spi.AbstractDataSourceBasedMultiTenantConnectionProviderImpl; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.common.cache.RemovalListener; -import com.iqser.red.service.persistence.management.v1.processor.settings.TenantHikariSettings; -import com.iqser.red.service.persistence.management.v1.processor.utils.jdbc.JDBCUtils; -import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; -import com.knecon.fforesight.tenantcommons.TenantProvider; -import com.zaxxer.hikari.HikariDataSource; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Component -@RequiredArgsConstructor -public class DynamicDataSourceBasedMultiTenantConnectionProvider extends AbstractDataSourceBasedMultiTenantConnectionProviderImpl { - - private static final String TENANT_POOL_NAME_SUFFIX = "DataSource"; - - private final EncryptionDecryptionService encryptionService; - private final TenantHikariSettings tenantHikariSettings; - private final TenantProvider tenantProvider; - - @Value("${multitenancy.datasource-cache.maximumSize:100}") - private Long maximumSize; - - @Value("${multitenancy.datasource-cache.expireAfterAccess:10}") - private Integer expireAfterAccess; - - private LoadingCache connectionPerTenant; - - private LoadingCache dataSourcePerConnectionString; - - - @PostConstruct - protected void createCache() { - - connectionPerTenant = CacheBuilder.newBuilder().maximumSize(maximumSize).expireAfterAccess(expireAfterAccess, TimeUnit.MINUTES).build(new CacheLoader<>() { - public SchemaConnection load(String key) { - - var tenant = tenantProvider.getTenant(key); - var jdbcUrl = JDBCUtils.buildJdbcUrl(tenant.getDatabaseConnection()); - return SchemaConnection.builder().jdbcUrl(jdbcUrl).databaseConnection(tenant.getDatabaseConnection()).build(); - } - }); - - dataSourcePerConnectionString = CacheBuilder.newBuilder() - .maximumSize(maximumSize) - .expireAfterAccess(expireAfterAccess, TimeUnit.MINUTES) - .removalListener((RemovalListener) removal -> { - HikariDataSource ds = (HikariDataSource) removal.getValue(); - ds.close(); - log.info("Closed datasource: {}", ds.getPoolName()); - } - - ) - .build(new CacheLoader<>() { - public DataSource load(SchemaConnection schemaConnection) { - - return createAndConfigureDataSource(schemaConnection); - } - }); - } - - - private DataSource createAndConfigureDataSource(SchemaConnection connection) { - - String decryptedPassword = encryptionService.decrypt(connection.getDatabaseConnection().getPassword()); - - tenantHikariSettings.setUsername(connection.getDatabaseConnection().getUsername()); - tenantHikariSettings.setPassword(decryptedPassword); - - var jdbcUrl = JDBCUtils.buildJdbcUrl(connection.getDatabaseConnection()); - tenantHikariSettings.setJdbcUrl(jdbcUrl); - tenantHikariSettings.setPoolName(jdbcUrl + TENANT_POOL_NAME_SUFFIX); - - HikariDataSource ds = new HikariDataSource(tenantHikariSettings); - - log.info("Configured datasource: {}", ds.getPoolName()); - return ds; - } - - - @Override - protected DataSource selectAnyDataSource() { - - return null; - } - - - @Override - public DataSource selectDataSource(String tenantIdentifier) { - - try { - var connection = connectionPerTenant.get(tenantIdentifier); - return dataSourcePerConnectionString.get(connection); - } catch (ExecutionException e) { - throw new RuntimeException("Failed to load DataSource for tenant: " + tenantIdentifier); - } - } - - - @Override - public Connection getConnection(String tenantIdentifier) throws SQLException { - - try { - var dataSource = selectDataSource(tenantIdentifier); - Connection connection = dataSource.getConnection(); - connection.setSchema(connectionPerTenant.get(tenantIdentifier).getDatabaseConnection().getSchema()); - return connection; - } catch (ExecutionException e) { - throw new RuntimeException("No such tenant: " + tenantIdentifier); - } - } - - - @Override - public void releaseAnyConnection(Connection connection) throws SQLException { - - connection.close(); - } - - - @Override - public void releaseConnection(String tenantIdentifier, Connection connection) throws SQLException { - - connection.setSchema(null); - releaseAnyConnection(connection); - } - - - @Override - public boolean supportsAggressiveRelease() { - - return true; - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/MultiTenantDataSource.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/MultiTenantDataSource.java deleted file mode 100644 index fc96bcbd7..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/MultiTenantDataSource.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy; - -import java.io.PrintWriter; -import java.sql.Connection; -import java.sql.ConnectionBuilder; -import java.sql.SQLException; -import java.sql.SQLFeatureNotSupportedException; -import java.sql.ShardingKeyBuilder; -import java.util.logging.Logger; - -import javax.sql.DataSource; - -import org.springframework.stereotype.Component; - -import com.knecon.fforesight.tenantcommons.TenantContext; - -import lombok.RequiredArgsConstructor; - -@Component -@RequiredArgsConstructor -public class MultiTenantDataSource implements DataSource { - - private final DynamicDataSourceBasedMultiTenantConnectionProvider dsd; - - - private DataSource getActiveDataSource() { - - return dsd.selectDataSource(TenantContext.getTenantId()); - } - - - @Override - public Connection getConnection() throws SQLException { - - return dsd.getConnection(TenantContext.getTenantId()); - } - - - @Override - public Connection getConnection(String username, String password) throws SQLException { - - return getActiveDataSource().getConnection(username, password); - } - - - @Override - public PrintWriter getLogWriter() throws SQLException { - - return getActiveDataSource().getLogWriter(); - } - - - @Override - public void setLogWriter(PrintWriter out) throws SQLException { - - getActiveDataSource().setLogWriter(out); - } - - - @Override - public void setLoginTimeout(int seconds) throws SQLException { - - getActiveDataSource().setLoginTimeout(seconds); - } - - - @Override - public int getLoginTimeout() throws SQLException { - - return getActiveDataSource().getLoginTimeout(); - } - - - @Override - public ConnectionBuilder createConnectionBuilder() throws SQLException { - - return DataSource.super.createConnectionBuilder(); - } - - - @Override - public Logger getParentLogger() throws SQLFeatureNotSupportedException { - - return getActiveDataSource().getParentLogger(); - } - - - @Override - public ShardingKeyBuilder createShardingKeyBuilder() throws SQLException { - - return DataSource.super.createShardingKeyBuilder(); - } - - - @Override - public T unwrap(Class iface) throws SQLException { - - return getActiveDataSource().unwrap(iface); - } - - - @Override - public boolean isWrapperFor(Class iface) throws SQLException { - - return getActiveDataSource().isWrapperFor(iface); - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/MultiTenantDataSourceHealthIndicator.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/MultiTenantDataSourceHealthIndicator.java deleted file mode 100644 index 9a77bed46..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/MultiTenantDataSourceHealthIndicator.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.actuate.health.Health; -import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator; -import org.springframework.stereotype.Component; - -@Component -public class MultiTenantDataSourceHealthIndicator extends DataSourceHealthIndicator { - - @Autowired - private MultiTenantDataSource multiTenantDataSource; - - - @Override - public void afterPropertiesSet() throws Exception { - - setDataSource(multiTenantDataSource); - super.afterPropertiesSet(); - } - - - @Override - protected void doHealthCheck(Health.Builder builder) throws Exception { - - builder.up().withDetail("database", "multi-tenant-setup"); - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/SchemaConnection.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/SchemaConnection.java deleted file mode 100644 index ac2c1b55b..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/SchemaConnection.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy; - - -import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@Builder -@AllArgsConstructor -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -public class SchemaConnection { - - @EqualsAndHashCode.Include - private String jdbcUrl; - private DatabaseConnection databaseConnection; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/TenantManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/TenantManagementService.java deleted file mode 100644 index 69ff299c3..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/mulitenancy/TenantManagementService.java +++ /dev/null @@ -1,172 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy; - -import static com.iqser.red.service.persistence.management.v1.processor.configuration.TenantMessagingConfiguration.PERSISTENCE_SERVICE_TENANT_CREATED_QUEUE; -import static com.iqser.red.service.persistence.management.v1.processor.configuration.UserMessagingConfiguration.PERSISTENCE_SERVICE_USER_CREATED_QUEUE; - -import java.net.URI; -import java.net.URISyntaxException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.util.Set; - -import javax.sql.DataSource; - -import org.postgresql.util.PSQLException; -import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.core.io.ResourceLoader; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.StatementCallback; -import org.springframework.jdbc.datasource.SingleConnectionDataSource; -import org.springframework.stereotype.Service; - -import com.iqser.red.service.persistence.management.v1.processor.migration.AsyncMigrationStarterService; -import com.iqser.red.service.persistence.management.v1.processor.service.users.events.TenantCreatedEvent; -import com.iqser.red.service.persistence.management.v1.processor.utils.jdbc.JDBCUtils; -import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; -import com.knecon.fforesight.tenantcommons.TenantProvider; -import com.knecon.fforesight.tenantcommons.model.TenantResponse; -import com.knecon.fforesight.tenantcommons.model.UpdateDetailsRequest; - -import jakarta.annotation.PostConstruct; -import liquibase.exception.LiquibaseException; -import liquibase.integration.spring.SpringLiquibase; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Service -@EnableConfigurationProperties(LiquibaseProperties.class) -public class TenantManagementService { - - private static final Set SUPPORTED_DATABASES = Set.of("postgresql"); - private static final Set SQL_CONNECTION_ERROR_CODES = Set.of( - // connection_exception - "08000", - // connection_does_not_exist - "08003", - // connection_failure - "08006", - // invalid_catalog_name - "3D000"); - - - private final LiquibaseProperties liquibaseProperties; - private final ResourceLoader resourceLoader; - private final AsyncMigrationStarterService asyncMigrationStarterService; - private final TenantProvider tenantProvider; - private final EncryptionDecryptionService encryptionDecryptionService; - - public TenantManagementService(@Qualifier("tenantLiquibaseProperties") LiquibaseProperties liquibaseProperties, - ResourceLoader resourceLoader, - EncryptionDecryptionService encryptionDecryptionService, - AsyncMigrationStarterService asyncMigrationStarterService, - TenantProvider tenantProvider){ - - this.liquibaseProperties = liquibaseProperties; - this.resourceLoader = resourceLoader; - this.encryptionDecryptionService = encryptionDecryptionService; - this.asyncMigrationStarterService = asyncMigrationStarterService; - this.tenantProvider = tenantProvider; - } - - - @SneakyThrows - @RabbitListener(queues = PERSISTENCE_SERVICE_TENANT_CREATED_QUEUE) - public void createTenant(TenantCreatedEvent tenantRequest) { - - var tenant = tenantProvider.getTenant(tenantRequest.getTenantId()); - - createSchema(tenant); - - var jdbcUrl = JDBCUtils.buildJdbcUrlWithSchema(tenant.getDatabaseConnection()); - validateJdbcUrl(jdbcUrl); - - try (Connection connection = DriverManager.getConnection(jdbcUrl, tenant.getDatabaseConnection().getUsername(), encryptionDecryptionService.decrypt(tenant.getDatabaseConnection().getPassword()))) { - DataSource tenantDataSource = new SingleConnectionDataSource(connection, false); - runLiquibase(tenantDataSource); - } catch (PSQLException e) { - handleClientException(e); - handleInternalException(e); - } - - asyncMigrationStarterService.runForTenant(tenantRequest.getTenantId()); - - } - - - private void createSchema(TenantResponse tenantRequest) { - - var jdbcUrl = JDBCUtils.buildJdbcUrl(tenantRequest.getDatabaseConnection()); - try (Connection connection = DriverManager.getConnection(jdbcUrl, - tenantRequest.getDatabaseConnection().getUsername(), - encryptionDecryptionService.decrypt(tenantRequest.getDatabaseConnection().getPassword()))) { - DataSource tenantDataSource = new SingleConnectionDataSource(connection, false); - JdbcTemplate jdbcTemplate = new JdbcTemplate(tenantDataSource); - jdbcTemplate.execute((StatementCallback) stmt -> stmt.execute("CREATE SCHEMA " + tenantRequest.getDatabaseConnection().getSchema())); - jdbcTemplate.execute((StatementCallback) stmt -> stmt.execute("GRANT USAGE ON SCHEMA " + tenantRequest.getDatabaseConnection() - .getSchema() + " TO " + tenantRequest.getDatabaseConnection().getUsername())); - } catch (Exception e) { - log.info("Could not create schema, ignoring"); - } - } - - - @SneakyThrows - private void validateJdbcUrl(String jdbcUrl) { - - try { - // just create a URI object to check if the string is a valid URI - var uri = new URI(jdbcUrl); - var subUri = new URI(uri.getSchemeSpecificPart()); - - if (uri.getScheme() == null || subUri.getScheme() == null || !uri.getScheme().equals("jdbc") || !SUPPORTED_DATABASES.contains(subUri.getScheme())) { - throw new IllegalArgumentException("Your jdbcUrl is not valid."); - } - } catch (URISyntaxException e) { - throw new IllegalArgumentException("Your jdbcUrl is not valid.", e); - } - - } - - - private void runLiquibase(DataSource dataSource) throws LiquibaseException { - - SpringLiquibase liquibase = getSpringLiquibase(dataSource); - liquibase.afterPropertiesSet(); - } - - - private void handleClientException(PSQLException e) { - - if (e.getSQLState().equals("28000") || e.getSQLState().equals("28P01")) { - throw new IllegalArgumentException("Database credentials are not correct. Please check them."); - } - if (SQL_CONNECTION_ERROR_CODES.contains(e.getSQLState())) { - throw new IllegalArgumentException("Error when connecting to tenant database. Please check the jdbcUrl parameter."); - } - } - - - private void handleInternalException(PSQLException e) { - - log.error(String.format("Connection to tenant DB failed with SQL state %s. Please check if the tenant DB is still running. " + // - "If yes please check the connection configuration.", e.getSQLState()), e); - throw new RuntimeException("Could not connect to the tenant DB. This is an internal error.", e); - } - - - protected SpringLiquibase getSpringLiquibase(DataSource dataSource) { - - SpringLiquibase liquibase = new SpringLiquibase(); - liquibase.setResourceLoader(resourceLoader); - liquibase.setDataSource(dataSource); - liquibase.setChangeLog(liquibaseProperties.getChangeLog()); - liquibase.setContexts(liquibaseProperties.getContexts()); - return liquibase; - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/users/events/TenantCreatedEvent.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/users/events/TenantCreatedEvent.java deleted file mode 100644 index 2836ec388..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/users/events/TenantCreatedEvent.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service.users.events; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class TenantCreatedEvent { - - private String tenantId; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/MagicConverter.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/MagicConverter.java deleted file mode 100644 index fd46cade2..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/MagicConverter.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.utils; - -import java.lang.reflect.Constructor; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.function.BiConsumer; - -import jakarta.persistence.EmbeddedId; - -import org.springframework.beans.BeanUtils; - -import com.google.common.collect.Lists; -import com.iqser.red.service.persistence.service.v1.api.shared.model.common.Page; - -import lombok.SneakyThrows; - -public class MagicConverter { - - @SneakyThrows - public static T convert(S source, Class target, BiConsumer deltaMapper) { - - if (deltaMapper != null) { - var targetObject = convert(source, target); - deltaMapper.accept(source, targetObject); - return targetObject; - } else { - return convert(source, target); - } - } - - - @SneakyThrows - public static T convert(S source, Class target) { - - var noArgsConstructor = target.getConstructor(); - return convertOne(source, target, noArgsConstructor); - } - - - @SneakyThrows - public static T convertOne(S source, Class target, Constructor constructor) { - - var newInstance = constructor.newInstance(); - BeanUtils.copyProperties(source, newInstance); - - for (var field : target.getDeclaredFields()) { - if (field.getAnnotation(EmbeddedId.class) != null) { - field.setAccessible(true); - var id = field.getType().getConstructor().newInstance(); - BeanUtils.copyProperties(source, id); - field.set(newInstance, id); - - } - } - - for (var field : source.getClass().getDeclaredFields()) { - if (field.getAnnotation(EmbeddedId.class) != null) { - field.setAccessible(true); - var sourceId = field.get(source); - BeanUtils.copyProperties(sourceId, newInstance); - } - } - - return newInstance; - } - - - @SneakyThrows - public static List convert(List sources, Class target, BiConsumer deltaMapper) { - - if (deltaMapper != null) { - var targetList = convert(sources, target); - for (int i = 0; i < targetList.size(); i++) { - deltaMapper.accept(sources.get(i), targetList.get(i)); - } - return targetList; - } else { - return convert(sources, target); - } - - } - - - @SneakyThrows - public static List convert(List sources, Class target) { - - var noArgsConstructor = target.getConstructor(); - - List targetList = new ArrayList<>(); - for (var s : sources) { - targetList.add(convertOne(s, target, noArgsConstructor)); - } - return targetList; - - } - - - @SneakyThrows - public static Page convert(org.springframework.data.domain.Page sources, Class target) { - - Page result = new Page<>(); - result.setElements(convert(Lists.newArrayList(sources), target)); - result.setPage(sources.getNumber()); - result.setPageSize(sources.getSize()); - result.setTotalHits(sources.getTotalElements()); - return result; - - } - - - @SneakyThrows - public static Set convert(Set sources, Class target) { - - var noArgsConstructor = target.getConstructor(); - - Set targetList = new HashSet<>(); - for (var s : sources) { - targetList.add(convertOne(s, target, noArgsConstructor)); - } - return targetList; - - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionMapper.java index 642a22299..87a22ad80 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualRedactionMapper.java @@ -5,6 +5,7 @@ import java.util.function.BiConsumer; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; public class ManualRedactionMapper implements BiConsumer { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualResizeRedactionMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualResizeRedactionMapper.java index 14abae4cf..fd3eb589d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualResizeRedactionMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/ManualResizeRedactionMapper.java @@ -5,6 +5,7 @@ import java.util.function.BiConsumer; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; public class ManualResizeRedactionMapper implements BiConsumer { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/jdbc/JDBCUtils.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/jdbc/JDBCUtils.java deleted file mode 100644 index 19b95d652..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/jdbc/JDBCUtils.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.utils.jdbc; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; - -import lombok.experimental.UtilityClass; - -@UtilityClass -public class JDBCUtils { - - private StringBuilder createJdbcConnectionStringBuilder(String driver, String host, String port, String database) { - - return new StringBuilder("jdbc:").append(driver).append("://").append(host).append(':').append(port).append('/').append(database); - } - - - public String buildJdbcUrl(DatabaseConnection databaseConnection) { - - StringBuilder sb = createJdbcConnectionStringBuilder(databaseConnection.getDriver(), - databaseConnection.getHost(), - databaseConnection.getPort(), - databaseConnection.getDatabase()); - Map params = getConnectionParameters(databaseConnection); - appendParams(sb, params); - return sb.toString(); - } - - - private void appendParams(StringBuilder sb, Map params) { - - if (!params.isEmpty()) { - sb.append("?"); - List paramsAsStrings = params.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).toList(); - sb.append(String.join("&", paramsAsStrings)); - } - } - - - public String buildJdbcUrlWithSchema(DatabaseConnection databaseConnection) { - - return createJdbcConnectionString(databaseConnection.getDriver(), - databaseConnection.getHost(), - databaseConnection.getPort(), - databaseConnection.getDatabase(), - databaseConnection.getSchema(), - getConnectionParameters(databaseConnection)); - } - - - private static String createJdbcConnectionString(String driver, String host, String port, String database, String schema, Map connectionParameters) { - - StringBuilder sb = createJdbcConnectionStringBuilder(driver, host, port, database); - connectionParameters.put("currentSchema", schema); - appendParams(sb, connectionParameters); - return sb.toString(); - } - - - private Map getConnectionParameters(DatabaseConnection databaseConnection) { - - return Optional.ofNullable(databaseConnection.getParams()).orElseGet(HashMap::new); - } - - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/jdbc/JDBCWriteUtils.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/jdbc/JDBCWriteUtils.java deleted file mode 100644 index 6439933c2..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/utils/jdbc/JDBCWriteUtils.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.utils.jdbc; - -import static org.apache.commons.lang3.StringUtils.capitalize; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.sql.PreparedStatement; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import jakarta.persistence.Column; -import jakarta.persistence.Table; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.core.env.Environment; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; - -@Service -@RequiredArgsConstructor -public class JDBCWriteUtils { - - private static final String SQL_TEMPLATE = "INSERT INTO %s (%s) values (%s)"; - - private final Map, EntityMetadata> entityMetadataMap = new HashMap<>(); - - private final JdbcTemplate jdbcTemplate; - - private final Environment environment; - - - @SneakyThrows - @Transactional - public void saveBatch(List entities) { - - if (entities.isEmpty()) { - return; - } - - var metadata = getEntityMetadata(entities.get(0).getClass()); - - jdbcTemplate.batchUpdate(metadata.getSqlStatement(), entities, getBatchSize(), metadata::setValues); - } - - - private int getBatchSize() { - - return environment.getProperty("spring.jpa.properties.hibernate.jdbc.batch_size", int.class, 500); - } - - - private EntityMetadata getEntityMetadata(Class entityClass) { - - var existingMetadata = entityMetadataMap.get(entityClass); - if (existingMetadata != null) { - return existingMetadata; - } - - var tableName = getTableName(entityClass); - var args = getArgs(entityClass); - var sql = String.format(SQL_TEMPLATE, tableName, String.join(", ", args.keySet()), args.keySet().stream().map(a -> "?").collect(Collectors.joining(", "))); - - var metadata = new EntityMetadata(tableName, sql, args); - entityMetadataMap.put(entityClass, metadata); - - return metadata; - } - - - private String getTableName(Class entityClass) { - - var tableAnnot = entityClass.getDeclaredAnnotation(Table.class); - return tableAnnot.name(); - } - - - @SneakyThrows - private Map getArgs(Class entityClass) { - - var fields = entityClass.getDeclaredFields(); - Map entityMethodMap = new LinkedHashMap<>(); - for (var field : fields) { - var annotations = field.getDeclaredAnnotations(); - for (var annotation : annotations) { - if (annotation.annotationType().equals(Column.class)) { - var columnAnnotation = (Column) annotation; - var name = StringUtils.isEmpty(columnAnnotation.name()) ? toSnakeCase(field.getName()) : columnAnnotation.name(); - entityMethodMap.put(name, entityClass.getMethod(getMethodName(field))); - } - } - } - return entityMethodMap; - } - - - private String toSnakeCase(String name) { - - String ret = name.replaceAll("([A-Z]{1,100})([A-Z][a-z])", "$1_$2").replaceAll("([a-z])([A-Z])", "$1_$2"); - return ret.toLowerCase(); - } - - - private String getMethodName(Field field) { - - var prefix = "get"; - if (field.getType().equals(Boolean.class) || field.getType().equals(boolean.class)) { - prefix = "is"; - } - return prefix + capitalize(field.getName()); - } - - - @Data - @AllArgsConstructor - public static class EntityMetadata { - - private String tableName; - private String sqlStatement; - private Map fieldMethodMap; - - - @SneakyThrows - public void setValues(PreparedStatement preparedStatement, Object entity) { - - int paramIndex = 1; - for (var mapping : getFieldMethodMap().entrySet()) { - preparedStatement.setObject(paramIndex++, mapping.getValue().invoke(entity)); - } - } - - } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java index 63175a881..1f6fac123 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/Application.java @@ -18,6 +18,7 @@ import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + import com.iqser.red.service.dictionarymerge.commons.DictionaryMergeService; import com.iqser.red.persistence.service.v1.external.api.impl.PersistenceServiceExternalApiConfiguration; @@ -27,6 +28,7 @@ import com.iqser.red.service.persistence.management.v1.processor.configuration.M import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.v1.internal.api.PersistenceServiceInternalApiConfiguration; import com.iqser.red.storage.commons.StorageAutoConfiguration; +import com.knecon.fforesight.databasetenantcommons.DatabaseTenantCommonsAutoConfiguration; import com.knecon.fforesight.jobscommons.JobsAutoConfiguration; import com.knecon.fforesight.keycloakcommons.DefaultKeyCloakCommonsAutoConfiguration; import com.knecon.fforesight.swaggercommons.SpringDocAutoConfiguration; @@ -45,7 +47,7 @@ import lombok.extern.slf4j.Slf4j; @EnableScheduling @EnableCaching @EnableConfigurationProperties({FileManagementServiceSettings.class}) -@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class}) +@ImportAutoConfiguration({StorageAutoConfiguration.class, JobsAutoConfiguration.class, DatabaseTenantCommonsAutoConfiguration.class, MultiTenancyAutoConfiguration.class, SpringDocAutoConfiguration.class, DefaultKeyCloakCommonsAutoConfiguration.class}) @SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, CassandraAutoConfiguration.class, DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class}) @Import({PersistenceServiceExternalApiConfiguration.class, PersistenceServiceInternalApiConfiguration.class, PersistenceServiceExternalApiCacheConfiguration.class, MultiTenancyWebConfiguration.class, PersistenceServiceProcessorConfiguration.class, MessagingConfiguration.class, AsyncConfig.class, MultiTenancyMessagingConfiguration.class}) public class Application { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml index 113b0e009..f0879bc2e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml @@ -68,6 +68,9 @@ storage: backend: 's3' multitenancy: + packages: + repositories: 'com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository' + entities: 'com.iqser.red.service.persistence.management.v1.processor.entity' datasource-cache: maximumSize: 100 expireAfterAccess: 1 diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index 62fd76586..ac79e76cf 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -27,7 +27,7 @@ import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPers import com.iqser.red.service.peristence.v1.server.integration.utils.MetricValidationUtils; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java index 279428af1..84990bb9c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/performance/EntityPerformanceTest.java @@ -16,9 +16,9 @@ import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvid import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.EntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.utils.jdbc.JDBCWriteUtils; 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.type.DictionaryEntryType; +import com.knecon.fforesight.databasetenantcommons.providers.utils.JDBCWriteUtils; import com.knecon.fforesight.tenantcommons.TenantContext; import lombok.extern.slf4j.Slf4j; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 249d84e6f..fc1516ba3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -34,7 +34,6 @@ import org.springframework.context.annotation.Primary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.StatementCallback; import org.springframework.jdbc.datasource.SingleConnectionDataSource; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -58,7 +57,6 @@ import com.iqser.red.service.persistence.management.v1.processor.client.tenantus import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity; import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles; import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.mulitenancy.TenantManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ApplicationConfigRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureRepository; @@ -91,14 +89,15 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; import com.iqser.red.service.persistence.management.v1.processor.service.redactionlog.RedactionLogMergeService; import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService; -import com.iqser.red.service.persistence.management.v1.processor.service.users.events.TenantCreatedEvent; -import com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.ApplicationConfig; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog; import com.iqser.red.storage.commons.service.StorageService; +import com.knecon.fforesight.databasetenantcommons.providers.TenantCreatedListener; +import com.knecon.fforesight.databasetenantcommons.providers.events.TenantCreatedEvent; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService; import com.knecon.fforesight.tenantcommons.TenantContext; -import com.knecon.fforesight.tenantcommons.TenantProvider; import com.knecon.fforesight.tenantcommons.TenantsClient; import com.knecon.fforesight.tenantcommons.model.AuthDetails; import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; @@ -213,7 +212,7 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired private EncryptionDecryptionService encryptionDecryptionService; @Autowired - private TenantManagementService tenantManagementService; + private TenantCreatedListener tenantCreatedListener; private static String[] getAllRoles() { @@ -323,7 +322,7 @@ public abstract class AbstractPersistenceServerServiceTest { when(tenantsClient.getTenants()).thenReturn(List.of(redactionTenant)); try { - tenantManagementService.createTenant(new TenantCreatedEvent("redaction")); + tenantCreatedListener.createTenant(new TenantCreatedEvent("redaction")); } catch (Exception e) { e.printStackTrace(); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yaml b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yaml index 29a77796b..329b7f543 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yaml @@ -78,6 +78,9 @@ management: logging.level.root: info multitenancy: + packages: + repositories: 'com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository' + entities: 'com.iqser.red.service.persistence.management.v1.processor.entity' datasource-cache: maximumSize: 100 expireAfterAccess: 1