From 424d18526b19f39f5a82e69e971ae2f81b4455c2 Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Wed, 3 Apr 2024 13:22:22 +0300 Subject: [PATCH] Add belongsToCurrentTenant to builders --- .../eu/eudat/data/TenantEntityManager.java | 13 +++--- .../eu/eudat/data/tenant/TenantListener.java | 18 +++++--- .../errorcode/ErrorThesaurusProperties.java | 10 +++++ .../eu/eudat/model/ActionConfirmation.java | 22 ++++----- .../main/java/eu/eudat/model/Description.java | 11 +++++ .../eu/eudat/model/DescriptionReference.java | 11 +++++ .../java/eu/eudat/model/DescriptionTag.java | 11 +++++ .../eu/eudat/model/DescriptionTemplate.java | 11 +++++ .../eudat/model/DescriptionTemplateType.java | 11 +++++ .../src/main/java/eu/eudat/model/Dmp.java | 12 +++++ .../java/eu/eudat/model/DmpBlueprint.java | 13 ++++-- .../eudat/model/DmpDescriptionTemplate.java | 11 +++++ .../java/eu/eudat/model/DmpReference.java | 11 +++++ .../src/main/java/eu/eudat/model/DmpUser.java | 11 +++++ .../main/java/eu/eudat/model/EntityDoi.java | 11 +++++ .../main/java/eu/eudat/model/Language.java | 11 +++++ .../src/main/java/eu/eudat/model/Lock.java | 22 ++++----- .../java/eu/eudat/model/PrefillingSource.java | 11 +++++ .../main/java/eu/eudat/model/Reference.java | 11 +++++ .../java/eu/eudat/model/ReferenceType.java | 11 +++++ .../main/java/eu/eudat/model/StorageFile.java | 11 +++++ .../eu/eudat/model/SupportiveMaterial.java | 11 +++++ .../src/main/java/eu/eudat/model/Tag.java | 11 +++++ .../main/java/eu/eudat/model/TenantUser.java | 11 +++++ .../eudat/model/UserDescriptionTemplate.java | 11 +++++ .../main/java/eu/eudat/model/UserRole.java | 11 +++++ .../java/eu/eudat/model/UserSettings.java | 11 +++++ .../builder/ActionConfirmationBuilder.java | 43 ++++-------------- .../eu/eudat/model/builder/BaseBuilder.java | 15 +++++++ .../model/builder/DescriptionBuilder.java | 6 ++- .../builder/DescriptionReferenceBuilder.java | 6 ++- .../model/builder/DescriptionTagBuilder.java | 8 +++- .../builder/DescriptionTemplateBuilder.java | 6 ++- .../DescriptionTemplateTypeBuilder.java | 6 ++- .../model/builder/DmpBlueprintBuilder.java | 8 +++- .../eu/eudat/model/builder/DmpBuilder.java | 6 ++- .../DmpDescriptionTemplateBuilder.java | 8 +++- .../model/builder/DmpReferenceBuilder.java | 6 ++- .../eudat/model/builder/DmpUserBuilder.java | 10 +++-- .../eudat/model/builder/EntityDoiBuilder.java | 6 ++- .../eudat/model/builder/LanguageBuilder.java | 8 +++- .../eu/eudat/model/builder/LockBuilder.java | 45 +++---------------- .../builder/PrefillingSourceBuilder.java | 12 ++--- .../eudat/model/builder/ReferenceBuilder.java | 8 +++- .../model/builder/ReferenceTypeBuilder.java | 10 +++-- .../model/builder/StorageFileBuilder.java | 10 +++-- .../builder/SupportiveMaterialBuilder.java | 11 +++-- .../eu/eudat/model/builder/TagBuilder.java | 7 ++- .../model/builder/TenantUserBuilder.java | 6 ++- .../UserDescriptionTemplateBuilder.java | 8 ++-- .../eudat/model/builder/UserRoleBuilder.java | 8 +++- .../model/builder/UserSettingsBuilder.java | 10 ++--- .../DmpInvitationBuilder.java | 4 +- .../eu/eudat/model/censorship/LockCensor.java | 2 - .../eudat/query/ActionConfirmationQuery.java | 3 +- .../java/eu/eudat/query/DescriptionQuery.java | 2 + .../query/DescriptionReferenceQuery.java | 2 + .../eu/eudat/query/DescriptionTagQuery.java | 2 + .../eudat/query/DescriptionTemplateQuery.java | 3 ++ .../query/DescriptionTemplateTypeQuery.java | 2 + .../eu/eudat/query/DmpBlueprintQuery.java | 3 ++ .../query/DmpDescriptionTemplateQuery.java | 2 + .../main/java/eu/eudat/query/DmpQuery.java | 2 + .../eu/eudat/query/DmpReferenceQuery.java | 2 + .../java/eu/eudat/query/DmpUserQuery.java | 2 + .../java/eu/eudat/query/EntityDoiQuery.java | 3 ++ .../java/eu/eudat/query/LanguageQuery.java | 2 + .../main/java/eu/eudat/query/LockQuery.java | 3 +- .../eu/eudat/query/PrefillingSourceQuery.java | 2 + .../java/eu/eudat/query/ReferenceQuery.java | 2 + .../eu/eudat/query/ReferenceTypeQuery.java | 2 + .../java/eu/eudat/query/StorageFileQuery.java | 2 + .../eudat/query/SupportiveMaterialQuery.java | 2 + .../main/java/eu/eudat/query/TagQuery.java | 2 + .../java/eu/eudat/query/TenantUserQuery.java | 4 +- .../query/UserDescriptionTemplateQuery.java | 2 + .../java/eu/eudat/query/UserRoleQuery.java | 2 + .../eu/eudat/query/UserSettingsQuery.java | 6 ++- .../FileTransformerRepository.java} | 8 ++-- .../FileTransformerServiceImpl.java | 17 ++++--- .../web/src/main/resources/config/errors.yml | 3 ++ 81 files changed, 517 insertions(+), 183 deletions(-) rename dmp-backend/core/src/main/java/eu/eudat/{repository/TransformerRepository.java => service/transformer/FileTransformerRepository.java} (90%) diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/TenantEntityManager.java b/dmp-backend/core/src/main/java/eu/eudat/data/TenantEntityManager.java index ba8a2b77b..9089ce296 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/data/TenantEntityManager.java +++ b/dmp-backend/core/src/main/java/eu/eudat/data/TenantEntityManager.java @@ -4,6 +4,7 @@ import eu.eudat.authorization.Permission; import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.commons.scope.tenant.TenantScoped; import eu.eudat.data.tenant.TenantScopedBaseEntity; +import eu.eudat.errorcode.ErrorThesaurusProperties; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.commons.web.oidc.principal.CurrentPrincipalResolver; import gr.cite.commons.web.oidc.principal.extractor.ClaimExtractor; @@ -24,9 +25,11 @@ public class TenantEntityManager { @PersistenceContext private EntityManager entityManager; private final TenantScope tenantScope; + private final ErrorThesaurusProperties errors; - public TenantEntityManager(TenantScope tenantScope) { + public TenantEntityManager(TenantScope tenantScope, ErrorThesaurusProperties errors) { this.tenantScope = tenantScope; + this.errors = errors; } @@ -37,9 +40,9 @@ public class TenantEntityManager { public T merge(T entity) throws InvalidApplicationException { if (tenantScope.isMultitenant() && (entity instanceof TenantScoped tenantScopedEntity)) { if (!tenantScope.isDefaultTenant()) { - if (tenantScopedEntity.getTenantId() == null || !tenantScopedEntity.getTenantId().equals(tenantScope.getTenant())) throw new MyForbiddenException("tenant tampering"); + if (tenantScopedEntity.getTenantId() == null || !tenantScopedEntity.getTenantId().equals(tenantScope.getTenant())) throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } else if (tenantScopedEntity.getTenantId() != null) { - throw new MyForbiddenException("tenant tampering"); + throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } } return this.entityManager.merge(entity); @@ -48,9 +51,9 @@ public class TenantEntityManager { public void remove(Object entity) throws InvalidApplicationException { if (tenantScope.isMultitenant() && (entity instanceof TenantScoped tenantScopedEntity)) { if (!tenantScope.isDefaultTenant()) { - if (tenantScopedEntity.getTenantId() == null || !tenantScopedEntity.getTenantId().equals(tenantScope.getTenant())) throw new MyForbiddenException("tenant tampering"); + if (tenantScopedEntity.getTenantId() == null || !tenantScopedEntity.getTenantId().equals(tenantScope.getTenant())) throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } else if (tenantScopedEntity.getTenantId() != null) { - throw new MyForbiddenException("tenant tampering"); + throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } } this.entityManager.remove(entity); diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/tenant/TenantListener.java b/dmp-backend/core/src/main/java/eu/eudat/data/tenant/TenantListener.java index e2d00d29f..40a109ddb 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/data/tenant/TenantListener.java +++ b/dmp-backend/core/src/main/java/eu/eudat/data/tenant/TenantListener.java @@ -3,7 +3,9 @@ package eu.eudat.data.tenant; import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.commons.scope.tenant.TenantScoped; +import eu.eudat.errorcode.ErrorThesaurusProperties; import gr.cite.tools.exception.MyForbiddenException; +import gr.cite.tools.exception.MyValidationException; import gr.cite.tools.logging.LoggerService; import jakarta.persistence.PrePersist; import jakarta.persistence.PreRemove; @@ -19,11 +21,15 @@ public class TenantListener { private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(TenantListener.class)); private final TenantScope tenantScope; + private final ErrorThesaurusProperties errors; + + @Autowired public TenantListener( - TenantScope tenantScope + TenantScope tenantScope, ErrorThesaurusProperties errors ) { this.tenantScope = tenantScope; + this.errors = errors; } @PrePersist @@ -31,7 +37,7 @@ public class TenantListener { if (tenantScope.isMultitenant()) { if (entity.getTenantId() != null && (this.tenantScope.isDefaultTenant() || entity.getTenantId().compareTo(tenantScope.getTenant()) != 0)) { logger.error("somebody tried to set not login tenant"); - throw new MyForbiddenException("tenant tampering"); + throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } if (!tenantScope.isDefaultTenant()) { final UUID tenantId = tenantScope.getTenant(); @@ -49,11 +55,11 @@ public class TenantListener { if (!tenantScope.isDefaultTenant()) { if (entity.getTenantId() == null) { logger.error("somebody tried to set null tenant"); - throw new MyForbiddenException("tenant tampering"); + throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } if (entity.getTenantId().compareTo(tenantScope.getTenant()) != 0) { logger.error("somebody tried to change an entries tenant"); - throw new MyForbiddenException("tenant tampering"); + throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } final UUID tenantId = tenantScope.getTenant(); @@ -61,13 +67,13 @@ public class TenantListener { } else { if (entity.getTenantId() != null) { logger.error("somebody tried to set null tenant"); - throw new MyForbiddenException("tenant tampering"); + throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } } } else { if (entity.getTenantId() != null && (!this.tenantScope.isDefaultTenant() ||entity.getTenantId().compareTo(tenantScope.getTenant()) != 0)) { logger.error("somebody tried to change an entries tenant"); - throw new MyForbiddenException("tenant tampering"); + throw new MyForbiddenException(this.errors.getTenantTampering().getCode(), this.errors.getTenantTampering().getMessage()); } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/errorcode/ErrorThesaurusProperties.java b/dmp-backend/core/src/main/java/eu/eudat/errorcode/ErrorThesaurusProperties.java index b6e19d58a..23cc87410 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/errorcode/ErrorThesaurusProperties.java +++ b/dmp-backend/core/src/main/java/eu/eudat/errorcode/ErrorThesaurusProperties.java @@ -164,4 +164,14 @@ public class ErrorThesaurusProperties { public void setTenantNotAllowed(ErrorDescription tenantNotAllowed) { this.tenantNotAllowed = tenantNotAllowed; } + + private ErrorDescription tenantTampering; + + public ErrorDescription getTenantTampering() { + return tenantTampering; + } + + public void setTenantTampering(ErrorDescription tenantTampering) { + this.tenantTampering = tenantTampering; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/ActionConfirmation.java b/dmp-backend/core/src/main/java/eu/eudat/model/ActionConfirmation.java index 39c9a0bad..8fa16868f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/ActionConfirmation.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/ActionConfirmation.java @@ -49,12 +49,12 @@ public class ActionConfirmation { private IsActive isActive; public static final String _isActive = "isActive"; - private Tenant tenant; - public static final String _tenant = "tenant"; - private String hash; public static final String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -103,14 +103,6 @@ public class ActionConfirmation { this.createdBy = createdBy; } - public Tenant getTenant() { - return tenant; - } - - public void setTenant(Tenant tenant) { - this.tenant = tenant; - } - public Instant getCreatedAt() { return createdAt; } @@ -143,6 +135,14 @@ public class ActionConfirmation { this.hash = hash; } + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } + public MergeAccountConfirmation getMergeAccountConfirmation() { return mergeAccountConfirmation; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/Description.java b/dmp-backend/core/src/main/java/eu/eudat/model/Description.java index bbea69453..3dd51f0ac 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/Description.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/Description.java @@ -78,6 +78,9 @@ public class Description { public static final String _dmp = "dmp"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -214,4 +217,12 @@ public class Description { public void setAuthorizationFlags(List authorizationFlags) { this.authorizationFlags = authorizationFlags; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionReference.java b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionReference.java index 4e5398702..9c2a30304 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionReference.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionReference.java @@ -40,6 +40,9 @@ public class DescriptionReference { private DescriptionReferenceData data; public static final String _data = "data"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -103,4 +106,12 @@ public class DescriptionReference { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTag.java b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTag.java index fbf863a81..0cd1e18d2 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTag.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTag.java @@ -35,6 +35,9 @@ public class DescriptionTag { public static final String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -90,4 +93,12 @@ public class DescriptionTag { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplate.java b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplate.java index 0f329441d..f0955b499 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplate.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplate.java @@ -57,6 +57,9 @@ public class DescriptionTemplate { public final static String _hash = "hash"; private String hash; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -176,4 +179,12 @@ public class DescriptionTemplate { public void setVersionStatus(DescriptionTemplateVersionStatus versionStatus) { this.versionStatus = versionStatus; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplateType.java b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplateType.java index 240266cc2..cee6a485f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplateType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DescriptionTemplateType.java @@ -33,6 +33,9 @@ public class DescriptionTemplateType { public final static String _hash = "hash"; private String hash; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -96,4 +99,12 @@ public class DescriptionTemplateType { public void setDefinition(Definition definition) { this.definition = definition; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/Dmp.java b/dmp-backend/core/src/main/java/eu/eudat/model/Dmp.java index 9e351b515..0ea032bbb 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/Dmp.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/Dmp.java @@ -87,6 +87,10 @@ public class Dmp { private List authorizationFlags; public static final String _authorizationFlags = "authorizationFlags"; + + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -286,4 +290,12 @@ public class Dmp { public void setAuthorizationFlags(List authorizationFlags) { this.authorizationFlags = authorizationFlags; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DmpBlueprint.java b/dmp-backend/core/src/main/java/eu/eudat/model/DmpBlueprint.java index aa81745df..e0c84629a 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DmpBlueprint.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DmpBlueprint.java @@ -54,6 +54,9 @@ public class DmpBlueprint { public static final String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -142,7 +145,11 @@ public class DmpBlueprint { this.hash = hash; } + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } - - - diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DmpDescriptionTemplate.java b/dmp-backend/core/src/main/java/eu/eudat/model/DmpDescriptionTemplate.java index d4f499661..16382a2d8 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DmpDescriptionTemplate.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DmpDescriptionTemplate.java @@ -48,6 +48,9 @@ public class DmpDescriptionTemplate{ public final static String _hash = "hash"; private String hash; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -127,4 +130,12 @@ public class DmpDescriptionTemplate{ public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DmpReference.java b/dmp-backend/core/src/main/java/eu/eudat/model/DmpReference.java index 857e11d42..c992d076f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DmpReference.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DmpReference.java @@ -30,6 +30,9 @@ public class DmpReference { public final static String _hash = "hash"; private String hash; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + private DmpReferenceData data; public static final String _data = "data"; @@ -88,4 +91,12 @@ public class DmpReference { public DmpReferenceData getData() { return data; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DmpUser.java b/dmp-backend/core/src/main/java/eu/eudat/model/DmpUser.java index 39473de83..a0aa71c12 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/DmpUser.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DmpUser.java @@ -44,6 +44,9 @@ public class DmpUser { private IsActive isActive; public static final String _isActive = "isActive"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -115,4 +118,12 @@ public class DmpUser { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/EntityDoi.java b/dmp-backend/core/src/main/java/eu/eudat/model/EntityDoi.java index 9c6be1c80..2d8e6ff2b 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/EntityDoi.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/EntityDoi.java @@ -45,6 +45,9 @@ public class EntityDoi { public static final String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -116,4 +119,12 @@ public class EntityDoi { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/Language.java b/dmp-backend/core/src/main/java/eu/eudat/model/Language.java index e0bd91e07..044e5be9d 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/Language.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/Language.java @@ -31,6 +31,9 @@ public class Language { private String hash; public final static String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -94,4 +97,12 @@ public class Language { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/Lock.java b/dmp-backend/core/src/main/java/eu/eudat/model/Lock.java index 09e163094..aabe86cba 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/Lock.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/Lock.java @@ -25,13 +25,13 @@ public class Lock { private Instant touchedAt; public static final String _touchedAt = "touchedAt"; - private Tenant tenant; - public static final String _tenant = "tenant"; - private String hash; public static final String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -80,14 +80,6 @@ public class Lock { this.touchedAt = touchedAt; } - public Tenant getTenant() { - return tenant; - } - - public void setTenant(Tenant tenant) { - this.tenant = tenant; - } - public String getHash() { return hash; } @@ -95,4 +87,12 @@ public class Lock { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/PrefillingSource.java b/dmp-backend/core/src/main/java/eu/eudat/model/PrefillingSource.java index 1fe4e5f66..b341eb960 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/PrefillingSource.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/PrefillingSource.java @@ -29,6 +29,9 @@ public class PrefillingSource { public final static String _hash = "hash"; private String hash; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -84,4 +87,12 @@ public class PrefillingSource { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/Reference.java b/dmp-backend/core/src/main/java/eu/eudat/model/Reference.java index 7cfd0081a..99ae9b978 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/Reference.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/Reference.java @@ -55,6 +55,9 @@ public class Reference { private String hash; public final static String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -174,4 +177,12 @@ public class Reference { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/ReferenceType.java b/dmp-backend/core/src/main/java/eu/eudat/model/ReferenceType.java index 02e8e7941..8ce288acb 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/ReferenceType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/ReferenceType.java @@ -32,6 +32,9 @@ public class ReferenceType { public final static String _hash = "hash"; private String hash; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -95,4 +98,12 @@ public class ReferenceType { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/StorageFile.java b/dmp-backend/core/src/main/java/eu/eudat/model/StorageFile.java index 763b3a1d5..4c7ed9b4e 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/StorageFile.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/StorageFile.java @@ -40,6 +40,9 @@ public class StorageFile { private User owner; public final static String _owner = "owner"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -127,4 +130,12 @@ public class StorageFile { public void setOwner(User owner) { this.owner = owner; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/SupportiveMaterial.java b/dmp-backend/core/src/main/java/eu/eudat/model/SupportiveMaterial.java index 34c77f0eb..33c50088b 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/SupportiveMaterial.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/SupportiveMaterial.java @@ -33,6 +33,9 @@ public class SupportiveMaterial { private String hash; public final static String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -96,4 +99,12 @@ public class SupportiveMaterial { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/Tag.java b/dmp-backend/core/src/main/java/eu/eudat/model/Tag.java index bea557327..598d6fbfd 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/Tag.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/Tag.java @@ -37,6 +37,9 @@ public class Tag { public static final String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -92,4 +95,12 @@ public class Tag { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/TenantUser.java b/dmp-backend/core/src/main/java/eu/eudat/model/TenantUser.java index aec6b0def..7a4850678 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/TenantUser.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/TenantUser.java @@ -28,6 +28,9 @@ public class TenantUser { private String hash; public final static String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -83,4 +86,12 @@ public class TenantUser { public void setHash(String hash) { this.hash = hash; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/UserDescriptionTemplate.java b/dmp-backend/core/src/main/java/eu/eudat/model/UserDescriptionTemplate.java index b5df816d2..380a0c8cf 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/UserDescriptionTemplate.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/UserDescriptionTemplate.java @@ -34,6 +34,9 @@ public class UserDescriptionTemplate { public final static String _hash = "hash"; private String hash; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -97,4 +100,12 @@ public class UserDescriptionTemplate { public void setUser(User user) { this.user = user; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/UserRole.java b/dmp-backend/core/src/main/java/eu/eudat/model/UserRole.java index 15c327668..8685b13c8 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/UserRole.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/UserRole.java @@ -17,6 +17,9 @@ public class UserRole { public static final String _createdAt = "createdAt"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -48,5 +51,13 @@ public class UserRole { public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/UserSettings.java b/dmp-backend/core/src/main/java/eu/eudat/model/UserSettings.java index 0a06a375e..e9b308d06 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/UserSettings.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/UserSettings.java @@ -31,6 +31,9 @@ public class UserSettings { private String hash; public static final String _hash = "hash"; + private Boolean belongsToCurrentTenant; + public static final String _belongsToCurrentTenant = "belongsToCurrentTenant"; + public UUID getId() { return id; } @@ -94,4 +97,12 @@ public class UserSettings { public void setValue(String value) { this.value = value; } + + public Boolean getBelongsToCurrentTenant() { + return belongsToCurrentTenant; + } + + public void setBelongsToCurrentTenant(Boolean belongsToCurrentTenant) { + this.belongsToCurrentTenant = belongsToCurrentTenant; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/ActionConfirmationBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/ActionConfirmationBuilder.java index 02eb98d40..dedbd5103 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/ActionConfirmationBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/ActionConfirmationBuilder.java @@ -3,11 +3,13 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.XmlHandlingService; import eu.eudat.commons.enums.ActionConfirmationType; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.commons.types.actionconfirmation.DmpInvitationEntity; import eu.eudat.commons.types.actionconfirmation.MergeAccountConfirmationEntity; import eu.eudat.commons.types.actionconfirmation.RemoveCredentialRequestEntity; import eu.eudat.convention.ConventionService; import eu.eudat.data.ActionConfirmationEntity; +import eu.eudat.data.tenant.TenantScopedBaseEntity; import eu.eudat.model.ActionConfirmation; import eu.eudat.model.Tenant; import eu.eudat.model.User; @@ -29,6 +31,7 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; +import javax.management.InvalidApplicationException; import java.util.*; import java.util.stream.Collectors; @@ -38,20 +41,23 @@ public class ActionConfirmationBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); @Autowired - public ActionConfirmationBuilder(ConventionService conventionService, BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService) { + public ActionConfirmationBuilder(ConventionService conventionService, BuilderFactory builderFactory, QueryFactory queryFactory, TenantScope tenantScope, XmlHandlingService xmlHandlingService) { super(conventionService, new LoggerService(LoggerFactory.getLogger(ActionConfirmationBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; - this.xmlHandlingService = xmlHandlingService; + this.tenantScope = tenantScope; + this.xmlHandlingService = xmlHandlingService; } public ActionConfirmationBuilder authorize(EnumSet values){ this.authorize = values; return this; } + @Override public List build(FieldSet fields, List data) throws MyApplicationException { this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0),Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size) .orElse(0)); @@ -65,9 +71,6 @@ public class ActionConfirmationBuilder extends BaseBuilder userMap = this.collectUsers(userFields, data); - FieldSet tenantFields = fields.extractPrefixed(this.asPrefix(ActionConfirmation._tenant)); - Map tenantMap = this.collectTenants(tenantFields, data); - List models = new ArrayList<>(); for(ActionConfirmationEntity d : data){ ActionConfirmation m = new ActionConfirmation(); @@ -76,6 +79,7 @@ public class ActionConfirmationBuilder extends BaseBuilder collectTenants(FieldSet fields, List datas) throws MyApplicationException { - if (fields.isEmpty() || datas.isEmpty()) return null; - this.logger.debug("checking related - {}", Tenant.class.getSimpleName()); - - Map itemMap = null; - if (!fields.hasOtherField(this.asIndexer(Tenant._id))) { - itemMap = this.asEmpty( - datas.stream().map(x -> x.getTenantId()).distinct().collect(Collectors.toList()), - x -> { - Tenant item = new Tenant(); - item.setId(x); - return item; - }, - x -> x.getId()); - } else { - FieldSet clone = new BaseFieldSet(fields.getFields()).ensure(Tenant._id); - TenantQuery q = this.queryFactory.query(TenantQuery.class).authorize(this.authorize).ids(datas.stream().map(x -> x.getTenantId()).distinct().collect(Collectors.toList())); - itemMap = this.builderFactory.builder(TenantBuilder.class).authorize(this.authorize).asForeignKey(q, clone, x -> x.getId()); - } - if (!fields.hasField(Tenant._id)) { - itemMap.values().stream().filter(x -> x != null).map(x -> { - x.setId(null); - return x; - }).collect(Collectors.toList()); - } - - return itemMap; - } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/BaseBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/BaseBuilder.java index e3f74e602..3d84f6fe1 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/BaseBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/BaseBuilder.java @@ -3,7 +3,9 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AffiliatedResource; import eu.eudat.authorization.Permission; import eu.eudat.authorization.PermissionNameProvider; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.convention.ConventionService; +import eu.eudat.data.tenant.TenantScopedBaseEntity; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.builder.Builder; import gr.cite.tools.data.query.QueryBase; @@ -11,6 +13,7 @@ import gr.cite.tools.exception.MyApplicationException; import gr.cite.tools.fieldset.FieldSet; import gr.cite.tools.logging.LoggerService; +import javax.management.InvalidApplicationException; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.time.Instant; @@ -121,5 +124,17 @@ public abstract class BaseBuilder implements Builder { return allowed; } + protected boolean getBelongsToCurrentTenant(TenantScopedBaseEntity entity, TenantScope tenantScope){ + if (!tenantScope.isSet()) return true; + try { + if (entity.getTenantId() == null && tenantScope.getTenant() == null) return true; + if (entity.getTenantId() == null || tenantScope.getTenant() == null) return false; + + return entity.getTenantId().equals(tenantScope.getTenant()); + } catch (InvalidApplicationException e) { + return false; + } + } + } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/DescriptionBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/DescriptionBuilder.java index 2be0069f6..1d51cc457 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/DescriptionBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/DescriptionBuilder.java @@ -5,6 +5,7 @@ import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.authorization.authorizationcontentresolver.AuthorizationContentResolver; import eu.eudat.commons.JsonHandlingService; import eu.eudat.commons.XmlHandlingService; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.commons.types.description.PropertyDefinitionEntity; import eu.eudat.commons.types.descriptiontemplate.DefinitionEntity; import eu.eudat.convention.ConventionService; @@ -43,6 +44,7 @@ public class DescriptionBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); @@ -50,7 +52,7 @@ public class DescriptionBuilder extends BaseBuilder values) { @@ -109,6 +112,7 @@ public class DescriptionBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); private final JsonHandlingService jsonHandlingService; + private final TenantScope tenantScope; @Autowired public DescriptionReferenceBuilder( ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory, JsonHandlingService jsonHandlingService) { + BuilderFactory builderFactory, QueryFactory queryFactory, JsonHandlingService jsonHandlingService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DescriptionReferenceBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; this.jsonHandlingService = jsonHandlingService; + this.tenantScope = tenantScope; } public DescriptionReferenceBuilder authorize(EnumSet values) { @@ -79,6 +82,7 @@ public class DescriptionReferenceBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public DescriptionTagBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory) { + ConventionService conventionService, + BuilderFactory builderFactory, QueryFactory queryFactory, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DescriptionTagBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; + this.tenantScope = tenantScope; } public DescriptionTagBuilder authorize(EnumSet values) { @@ -70,6 +73,7 @@ public class DescriptionTagBuilder extends BaseBuilder values) { @@ -94,6 +97,7 @@ public class DescriptionTemplateBuilder extends BaseBuilder { + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public DescriptionTemplateTypeBuilder( - ConventionService conventionService) { + ConventionService conventionService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DescriptionTemplateTypeBuilder.class))); + this.tenantScope = tenantScope; } public DescriptionTemplateTypeBuilder authorize(EnumSet values) { @@ -57,6 +60,7 @@ public class DescriptionTemplateTypeBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public DmpBlueprintBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, XmlHandlingService xmlHandlingService) { + ConventionService conventionService, + BuilderFactory builderFactory, XmlHandlingService xmlHandlingService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DmpBlueprintBuilder.class))); this.builderFactory = builderFactory; this.xmlHandlingService = xmlHandlingService; + this.tenantScope = tenantScope; } public DmpBlueprintBuilder authorize(EnumSet values) { @@ -75,6 +78,7 @@ public class DmpBlueprintBuilder extends BaseBuilder { private final JsonHandlingService jsonHandlingService; private final AuthorizationService authorizationService; private final AuthorizationContentResolver authorizationContentResolver; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public DmpBuilder(ConventionService conventionService, QueryFactory queryFactory, - BuilderFactory builderFactory, JsonHandlingService jsonHandlingService, AuthorizationService authorizationService, AuthorizationContentResolver authorizationContentResolver) { + BuilderFactory builderFactory, JsonHandlingService jsonHandlingService, AuthorizationService authorizationService, AuthorizationContentResolver authorizationContentResolver, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DmpBuilder.class))); this.queryFactory = queryFactory; this.builderFactory = builderFactory; this.jsonHandlingService = jsonHandlingService; this.authorizationService = authorizationService; this.authorizationContentResolver = authorizationContentResolver; + this.tenantScope = tenantScope; } public DmpBuilder authorize(EnumSet values) { @@ -109,6 +112,7 @@ public class DmpBuilder extends BaseBuilder { if (fields.hasField(this.asIndexer(Dmp._versionStatus))) m.setVersionStatus(d.getVersionStatus()); if (fields.hasField(this.asIndexer(Dmp._publicAfter))) m.setPublicAfter(d.getPublicAfter()); if (fields.hasField(this.asIndexer(Dmp._hash))) m.setHash(this.hashValue(d.getUpdatedAt())); + if (fields.hasField(this.asIndexer(Dmp._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); if (!userFields.isEmpty() && userItemsMap != null && userItemsMap.containsKey(d.getCreatorId())) m.setCreator(userItemsMap.get(d.getCreatorId())); if (!blueprintFields.isEmpty() && blueprintItemsMap != null && blueprintItemsMap.containsKey(d.getBlueprintId())) m.setBlueprint(blueprintItemsMap.get(d.getBlueprintId())); if (entityDoisMap != null && !entityDoisMap.isEmpty() && entityDoisMap.containsKey(d.getId())) m.setEntityDois(entityDoisMap.get(d.getId())); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/DmpDescriptionTemplateBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/DmpDescriptionTemplateBuilder.java index f00afb7eb..d1bf9b864 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/DmpDescriptionTemplateBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/DmpDescriptionTemplateBuilder.java @@ -2,6 +2,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.enums.DescriptionTemplateVersionStatus; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.convention.ConventionService; import eu.eudat.data.DmpDescriptionTemplateEntity; import eu.eudat.data.DmpEntity; @@ -32,16 +33,18 @@ public class DmpDescriptionTemplateBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public DmpDescriptionTemplateBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory) { + ConventionService conventionService, + BuilderFactory builderFactory, QueryFactory queryFactory, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DmpDescriptionTemplateBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; + this.tenantScope = tenantScope; } public DmpDescriptionTemplateBuilder authorize(EnumSet values) { @@ -75,6 +78,7 @@ public class DmpDescriptionTemplateBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public DmpReferenceBuilder( ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory, JsonHandlingService jsonHandlingService) { + BuilderFactory builderFactory, QueryFactory queryFactory, JsonHandlingService jsonHandlingService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DmpReferenceBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; this.jsonHandlingService = jsonHandlingService; + this.tenantScope = tenantScope; } public DmpReferenceBuilder authorize(EnumSet values) { @@ -78,6 +81,7 @@ public class DmpReferenceBuilder extends BaseBuilder{ private final BuilderFactory builderFactory; private final QueryFactory queryFactory; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public DmpUserBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory) { + ConventionService conventionService, + BuilderFactory builderFactory, QueryFactory queryFactory, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DmpUserBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; + this.tenantScope = tenantScope; } public DmpUserBuilder authorize(EnumSet values) { @@ -68,7 +71,8 @@ public class DmpUserBuilder extends BaseBuilder{ if (fields.hasField(this.asIndexer(DmpUser._createdAt))) m.setCreatedAt(d.getCreatedAt()); if (fields.hasField(this.asIndexer(DmpUser._updatedAt))) m.setUpdatedAt(d.getUpdatedAt()); if (fields.hasField(this.asIndexer(DmpUser._isActive))) m.setIsActive(d.getIsActive()); - if (fields.hasField(this.asIndexer(DmpReference._hash))) m.setHash(this.hashValue(d.getUpdatedAt())); + if (fields.hasField(this.asIndexer(DmpUser._hash))) m.setHash(this.hashValue(d.getUpdatedAt())); + if (fields.hasField(this.asIndexer(DmpUser._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); if (!userFields.isEmpty() && userItemsMap != null && userItemsMap.containsKey(d.getUserId())) m.setUser(userItemsMap.get(d.getUserId())); if (!dmpFields.isEmpty() && dmpItemsMap != null && dmpItemsMap.containsKey(d.getDmpId())) m.setDmp(dmpItemsMap.get(d.getDmpId())); if (!userFields.isEmpty() && userItemsMap != null && userItemsMap.containsKey(d.getUserId())) m.setUser(userItemsMap.get(d.getUserId())); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/EntityDoiBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/EntityDoiBuilder.java index a4cff8bd7..391509f95 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/EntityDoiBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/EntityDoiBuilder.java @@ -1,6 +1,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.convention.ConventionService; import eu.eudat.data.EntityDoiEntity; import eu.eudat.model.EntityDoi; @@ -20,12 +21,14 @@ import java.util.*; @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class EntityDoiBuilder extends BaseBuilder { + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public EntityDoiBuilder( - ConventionService conventionService) { + ConventionService conventionService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(EntityDoiBuilder.class))); + this.tenantScope = tenantScope; } public EntityDoiBuilder authorize(EnumSet values) { @@ -61,6 +64,7 @@ public class EntityDoiBuilder extends BaseBuilder { m.setIsActive(d.getIsActive()); if (fields.hasField(this.asIndexer(EntityDoi._hash))) m.setHash(hashValue(d.getUpdatedAt())); + if (fields.hasField(this.asIndexer(EntityDoi._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); models.add(m); } this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/LanguageBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/LanguageBuilder.java index f7ff10ceb..dc4369403 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/LanguageBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/LanguageBuilder.java @@ -2,6 +2,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.XmlHandlingService; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.convention.ConventionService; import eu.eudat.data.LanguageEntity; import eu.eudat.model.Language; @@ -22,13 +23,15 @@ import java.util.*; @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class LanguageBuilder extends BaseBuilder{ + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public LanguageBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService) { + ConventionService conventionService, + BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(LanguageBuilder.class))); + this.tenantScope = tenantScope; } public LanguageBuilder authorize(EnumSet values) { @@ -54,6 +57,7 @@ public class LanguageBuilder extends BaseBuilder{ if (fields.hasField(this.asIndexer(Language._updatedAt))) m.setUpdatedAt(d.getUpdatedAt()); if (fields.hasField(this.asIndexer(Language._isActive))) m.setIsActive(d.getIsActive()); if (fields.hasField(this.asIndexer(Language._hash))) m.setHash(this.hashValue(d.getUpdatedAt())); + if (fields.hasField(this.asIndexer(Language._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); models.add(m); } this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/LockBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/LockBuilder.java index 57bcbb236..df974399d 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/LockBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/LockBuilder.java @@ -2,6 +2,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.XmlHandlingService; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.convention.ConventionService; import eu.eudat.data.LockEntity; import eu.eudat.model.Lock; @@ -30,18 +31,18 @@ import java.util.stream.Collectors; public class LockBuilder extends BaseBuilder{ private final BuilderFactory builderFactory; + private final TenantScope tenantScope; private final QueryFactory queryFactory; - private final XmlHandlingService xmlHandlingService; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public LockBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService) { + ConventionService conventionService, + BuilderFactory builderFactory, TenantScope tenantScope, QueryFactory queryFactory) { super(conventionService, new LoggerService(LoggerFactory.getLogger(LockBuilder.class))); this.builderFactory = builderFactory; - this.queryFactory = queryFactory; - this.xmlHandlingService = xmlHandlingService; + this.tenantScope = tenantScope; + this.queryFactory = queryFactory; } public LockBuilder authorize(EnumSet values) { @@ -59,9 +60,6 @@ public class LockBuilder extends BaseBuilder{ FieldSet userFields = fields.extractPrefixed(this.asPrefix(Lock._lockedBy)); Map userMap = this.collectUsers(userFields, data); - FieldSet tenantFields = fields.extractPrefixed(this.asPrefix(Lock._tenant)); - Map tenantMap = this.collectTenants(tenantFields, data); - List models = new ArrayList<>(); for (LockEntity d : data) { Lock m = new Lock(); @@ -71,8 +69,8 @@ public class LockBuilder extends BaseBuilder{ if (fields.hasField(this.asIndexer(Lock._lockedAt))) m.setLockedAt(d.getLockedAt()); if (fields.hasField(this.asIndexer(Lock._touchedAt))) m.setTouchedAt(d.getTouchedAt()); if (fields.hasField(this.asIndexer(Lock._hash))) m.setHash(this.hashValue(d.getTouchedAt())); + if (fields.hasField(this.asIndexer(Lock._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); if (!userFields.isEmpty() && userMap != null && userMap.containsKey(d.getLockedBy())) m.setLockedBy(userMap.get(d.getLockedBy())); - if (!tenantFields.isEmpty() && tenantMap != null && tenantMap.containsKey(d.getTenantId())) m.setTenant(tenantMap.get(d.getTenantId())); models.add(m); } this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); @@ -108,33 +106,4 @@ public class LockBuilder extends BaseBuilder{ return itemMap; } - - private Map collectTenants(FieldSet fields, List datas) throws MyApplicationException { - if (fields.isEmpty() || datas.isEmpty()) return null; - this.logger.debug("checking related - {}", Tenant.class.getSimpleName()); - - Map itemMap = null; - if (!fields.hasOtherField(this.asIndexer(Tenant._id))) { - itemMap = this.asEmpty( - datas.stream().map(x -> x.getTenantId()).distinct().collect(Collectors.toList()), - x -> { - Tenant item = new Tenant(); - item.setId(x); - return item; - }, - x -> x.getId()); - } else { - FieldSet clone = new BaseFieldSet(fields.getFields()).ensure(Tenant._id); - TenantQuery q = this.queryFactory.query(TenantQuery.class).authorize(this.authorize).ids(datas.stream().map(x -> x.getTenantId()).distinct().collect(Collectors.toList())); - itemMap = this.builderFactory.builder(TenantBuilder.class).authorize(this.authorize).asForeignKey(q, clone, x -> x.getId()); - } - if (!fields.hasField(Tenant._id)) { - itemMap.values().stream().filter(x -> x != null).map(x -> { - x.setId(null); - return x; - }).collect(Collectors.toList()); - } - - return itemMap; - } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/PrefillingSourceBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/PrefillingSourceBuilder.java index 5d6b31426..898f2da88 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/PrefillingSourceBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/PrefillingSourceBuilder.java @@ -2,6 +2,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.XmlHandlingService; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.commons.types.prefillingsource.PrefillingSourceDefinitionEntity; import eu.eudat.convention.ConventionService; import eu.eudat.data.PrefillingSourceEntity; @@ -26,17 +27,17 @@ import java.util.*; public class PrefillingSourceBuilder extends BaseBuilder{ private final BuilderFactory builderFactory; - private final QueryFactory queryFactory; private final XmlHandlingService xmlHandlingService; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public PrefillingSourceBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService) { + ConventionService conventionService, + BuilderFactory builderFactory, XmlHandlingService xmlHandlingService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(PrefillingSourceBuilder.class))); this.builderFactory = builderFactory; - this.queryFactory = queryFactory; + this.tenantScope = tenantScope; this.xmlHandlingService = xmlHandlingService; } @@ -66,7 +67,8 @@ public class PrefillingSourceBuilder extends BaseBuilder{ private final BuilderFactory builderFactory; private final QueryFactory queryFactory; private final XmlHandlingService xmlHandlingService; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public ReferenceBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService) { + ConventionService conventionService, + BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(ReferenceBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; this.xmlHandlingService = xmlHandlingService; + this.tenantScope = tenantScope; } public ReferenceBuilder authorize(EnumSet values) { @@ -94,6 +97,7 @@ public class ReferenceBuilder extends BaseBuilder{ if (!typeFields.isEmpty() && typeItemsMap != null && typeItemsMap.containsKey(d.getTypeId())) m.setType(typeItemsMap.get(d.getTypeId())); if (dmpReferenceMap != null && !dmpReferenceMap.isEmpty() && dmpReferenceMap.containsKey(d.getId())) m.setDmpReferences(dmpReferenceMap.get(d.getId())); if (!userFields.isEmpty() && userItemsMap != null && userItemsMap.containsKey(d.getCreatedById())) m.setCreatedBy(userItemsMap.get(d.getCreatedById())); + if (fields.hasField(this.asIndexer(Reference._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); models.add(m); } this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/ReferenceTypeBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/ReferenceTypeBuilder.java index 440b88322..89e680ec7 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/ReferenceTypeBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/ReferenceTypeBuilder.java @@ -2,6 +2,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.XmlHandlingService; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.commons.types.referencetype.ReferenceTypeDefinitionEntity; import eu.eudat.convention.ConventionService; import eu.eudat.data.ReferenceTypeEntity; @@ -26,17 +27,17 @@ import java.util.*; public class ReferenceTypeBuilder extends BaseBuilder{ private final BuilderFactory builderFactory; - private final QueryFactory queryFactory; private final XmlHandlingService xmlHandlingService; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public ReferenceTypeBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService) { + ConventionService conventionService, + BuilderFactory builderFactory, XmlHandlingService xmlHandlingService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(ReferenceTypeBuilder.class))); this.builderFactory = builderFactory; - this.queryFactory = queryFactory; + this.tenantScope = tenantScope; this.xmlHandlingService = xmlHandlingService; } @@ -64,6 +65,7 @@ public class ReferenceTypeBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public StorageFileBuilder( - ConventionService conventionService, - QueryFactory queryFactory, - BuilderFactory builderFactory) { + ConventionService conventionService, + QueryFactory queryFactory, + BuilderFactory builderFactory, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(StorageFileBuilder.class))); this.queryFactory = queryFactory; this.builderFactory = builderFactory; + this.tenantScope = tenantScope; } public StorageFileBuilder authorize(EnumSet values) { @@ -69,6 +72,7 @@ public class StorageFileBuilder extends BaseBuilder{ - private final BuilderFactory builderFactory; - private final QueryFactory queryFactory; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public SupportiveMaterialBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory) { + ConventionService conventionService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(SupportiveMaterialBuilder.class))); - this.builderFactory = builderFactory; - this.queryFactory = queryFactory; + this.tenantScope = tenantScope; } public SupportiveMaterialBuilder authorize(EnumSet values) { @@ -63,6 +61,7 @@ public class SupportiveMaterialBuilder extends BaseBuilder{ private final QueryFactory queryFactory; - private final BuilderFactory builderFactory; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public TagBuilder( - ConventionService conventionService, QueryFactory queryFactory, BuilderFactory builderFactory) { + ConventionService conventionService, QueryFactory queryFactory, BuilderFactory builderFactory, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(TagBuilder.class))); this.queryFactory = queryFactory; this.builderFactory = builderFactory; + this.tenantScope = tenantScope; } public TagBuilder authorize(EnumSet values) { @@ -63,6 +65,7 @@ public class TagBuilder extends BaseBuilder{ if (fields.hasField(this.asIndexer(Tag._updatedAt))) m.setUpdatedAt(d.getUpdatedAt()); if (fields.hasField(this.asIndexer(Tag._isActive))) m.setIsActive(d.getIsActive()); if (!userFields.isEmpty() && userItemsMap != null && userItemsMap.containsKey(d.getCreatedById())) m.setCreatedBy(userItemsMap.get(d.getCreatedById())); + if (fields.hasField(this.asIndexer(Tag._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); models.add(m); } this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/TenantUserBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/TenantUserBuilder.java index bfab8e748..eb866e7e0 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/TenantUserBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/TenantUserBuilder.java @@ -1,6 +1,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.convention.ConventionService; import eu.eudat.data.TenantUserEntity; import eu.eudat.model.Tenant; @@ -30,6 +31,7 @@ public class TenantUserBuilder extends BaseBuilder private final BuilderFactory builderFactory; private final QueryFactory queryFactory; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @@ -37,11 +39,12 @@ public class TenantUserBuilder extends BaseBuilder public TenantUserBuilder( ConventionService conventionService, BuilderFactory builderFactory, - QueryFactory queryFactory + QueryFactory queryFactory, TenantScope tenantScope ) { super(conventionService, new LoggerService(LoggerFactory.getLogger(TenantUserBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; + this.tenantScope = tenantScope; } public TenantUserBuilder authorize(EnumSet values) { @@ -70,6 +73,7 @@ public class TenantUserBuilder extends BaseBuilder if (fields.hasField(this.asIndexer(TenantUser._createdAt))) m.setCreatedAt(d.getCreatedAt()); if (fields.hasField(this.asIndexer(TenantUser._updatedAt))) m.setUpdatedAt(d.getUpdatedAt()); if (fields.hasField(this.asIndexer(TenantUser._isActive))) m.setIsActive(d.getIsActive()); + if (fields.hasField(this.asIndexer(TenantUser._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); if (!userFields.isEmpty() && userMap != null && userMap.containsKey(d.getUserId())) m.setUser(userMap.get(d.getUserId())); if (!tenantFields.isEmpty() && tenantMap != null && tenantMap.containsKey(d.getTenantId())) m.setTenant(tenantMap.get(d.getTenantId())); models.add(m); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/UserDescriptionTemplateBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/UserDescriptionTemplateBuilder.java index 25b62a521..7f26ee7cb 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/UserDescriptionTemplateBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/UserDescriptionTemplateBuilder.java @@ -2,6 +2,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.commons.XmlHandlingService; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.convention.ConventionService; import eu.eudat.data.UserDescriptionTemplateEntity; import eu.eudat.model.Description; @@ -33,15 +34,15 @@ public class UserDescriptionTemplateBuilder extends BaseBuilder authorize = EnumSet.of(AuthorizationFlags.None); private final QueryFactory queryFactory; private final BuilderFactory builderFactory; - private final XmlHandlingService xmlHandlingService; + private final TenantScope tenantScope; @Autowired public UserDescriptionTemplateBuilder( - ConventionService conventionService, QueryFactory queryFactory, BuilderFactory builderFactory, XmlHandlingService xmlHandlingService) { + ConventionService conventionService, QueryFactory queryFactory, BuilderFactory builderFactory, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(UserDescriptionTemplateBuilder.class))); this.queryFactory = queryFactory; this.builderFactory = builderFactory; - this.xmlHandlingService = xmlHandlingService; + this.tenantScope = tenantScope; } public UserDescriptionTemplateBuilder authorize(EnumSet values) { @@ -71,6 +72,7 @@ public class UserDescriptionTemplateBuilder extends BaseBuilder { private final BuilderFactory builderFactory; private final QueryFactory queryFactory; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public UserRoleBuilder( - ConventionService conventionService, - BuilderFactory builderFactory, QueryFactory queryFactory) { + ConventionService conventionService, + BuilderFactory builderFactory, QueryFactory queryFactory, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(UserRoleBuilder.class))); this.builderFactory = builderFactory; this.queryFactory = queryFactory; + this.tenantScope = tenantScope; } public UserRoleBuilder authorize(EnumSet values) { @@ -63,6 +66,7 @@ public class UserRoleBuilder extends BaseBuilder { if (fields.hasField(this.asIndexer(UserRole._id))) m.setId(d.getId()); if (fields.hasField(this.asIndexer(UserRole._createdAt))) m.setCreatedAt(d.getCreatedAt()); if (fields.hasField(this.asIndexer(UserRole._role))) m.setRole(d.getRole()); + if (fields.hasField(this.asIndexer(UserRole._belongsToCurrentTenant))) m.setBelongsToCurrentTenant(this.getBelongsToCurrentTenant(d, this.tenantScope)); if (!userFields.isEmpty() && userItemsMap != null && userItemsMap.containsKey(d.getUserId())) m.setUser(userItemsMap.get(d.getUserId())); models.add(m); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/UserSettingsBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/UserSettingsBuilder.java index 89c9cec38..26f0dc6fc 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/UserSettingsBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/UserSettingsBuilder.java @@ -1,6 +1,7 @@ package eu.eudat.model.builder; import eu.eudat.authorization.AuthorizationFlags; +import eu.eudat.commons.scope.tenant.TenantScope; import eu.eudat.convention.ConventionService; import eu.eudat.data.UserSettingsEntity; import eu.eudat.model.UserSettings; @@ -22,15 +23,13 @@ import java.util.*; @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class UserSettingsBuilder extends BaseBuilder { - private final BuilderFactory builderFactory; - private final QueryFactory queryFactory; + private final TenantScope tenantScope; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); - public UserSettingsBuilder(ConventionService conventionService, BuilderFactory builderFactory, QueryFactory queryFactory) { + public UserSettingsBuilder(ConventionService conventionService, TenantScope tenantScope) { super(conventionService, new LoggerService(LoggerFactory.getLogger(UserSettingsBuilder.class))); - this.builderFactory = builderFactory; - this.queryFactory = queryFactory; + this.tenantScope = tenantScope; } public UserSettingsBuilder authorize(EnumSet values) { @@ -55,6 +54,7 @@ public class UserSettingsBuilder extends BaseBuilder { - private final BuilderFactory builderFactory; private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); @Autowired public DmpInvitationBuilder( - ConventionService conventionService, BuilderFactory builderFactory) { + ConventionService conventionService) { super(conventionService, new LoggerService(LoggerFactory.getLogger(DmpInvitationBuilder.class))); - this.builderFactory = builderFactory; } public DmpInvitationBuilder authorize(EnumSet values) { diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/LockCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/LockCensor.java index f845569fd..7c53e875d 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/LockCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/LockCensor.java @@ -43,8 +43,6 @@ public class LockCensor extends BaseCensor { logger.debug(new DataLogEntry("censoring fields", fields)); if (this.isEmpty(fields)) return; this.authService.authorizeAtLeastOneForce(userId != null ? List.of(new OwnedResource(userId)) : null, Permission.BrowseLock); - FieldSet tenantFields = fields.extractPrefixed(this.asIndexerPrefix(Lock._tenant)); - this.censorFactory.censor(TenantCensor.class).censor(tenantFields, null); FieldSet userFields = fields.extractPrefixed(this.asIndexerPrefix(Lock._lockedBy)); this.censorFactory.censor(UserCensor.class).censor(userFields, userId); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/ActionConfirmationQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/ActionConfirmationQuery.java index bf15f3ff7..49bdfaa6e 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/ActionConfirmationQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/ActionConfirmationQuery.java @@ -244,11 +244,11 @@ public class ActionConfirmationQuery extends QueryBase else if (item.prefix(ActionConfirmation._dmpInvitation)) return ActionConfirmationEntity._data; else if (item.prefix(ActionConfirmation._createdBy)) return ActionConfirmationEntity._createdById; else if (item.match(ActionConfirmation._createdBy)) return ActionConfirmationEntity._createdById; - else if (item.prefix(ActionConfirmation._tenant)) return ActionConfirmationEntity._tenantId; else if (item.match(ActionConfirmation._createdAt)) return ActionConfirmationEntity._createdAt; else if (item.match(ActionConfirmation._updatedAt)) return ActionConfirmationEntity._updatedAt; else if (item.match(ActionConfirmation._hash)) return ActionConfirmationEntity._updatedAt; else if (item.match(ActionConfirmation._isActive)) return ActionConfirmationEntity._isActive; + else if (item.match(ActionConfirmation._belongsToCurrentTenant)) return ActionConfirmationEntity._tenantId; else return null; } @@ -256,6 +256,7 @@ public class ActionConfirmationQuery extends QueryBase protected ActionConfirmationEntity convert(Tuple tuple, Set columns) { ActionConfirmationEntity item = new ActionConfirmationEntity(); item.setId(QueryBase.convertSafe(tuple, columns, ActionConfirmationEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, ActionConfirmationEntity._tenantId, UUID.class)); item.setType(QueryBase.convertSafe(tuple, columns, ActionConfirmationEntity._type, ActionConfirmationType.class)); item.setStatus(QueryBase.convertSafe(tuple, columns, ActionConfirmationEntity._status, ActionConfirmationStatus.class)); item.setToken(QueryBase.convertSafe(tuple, columns, ActionConfirmationEntity._token, String.class)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionQuery.java index 0c636e2d2..0bb0ecf7d 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionQuery.java @@ -315,6 +315,7 @@ public class DescriptionQuery extends QueryBase { else if (item.match(Description._descriptionTemplate) || item.match(PublicDescription._descriptionTemplate)) return DescriptionEntity._descriptionTemplateId; else if (item.prefix(Description._dmp)) return DescriptionEntity._dmpId; else if (item.match(Description._dmp)) return DescriptionEntity._dmpId; + else if (item.match(Description._belongsToCurrentTenant)) return DescriptionEntity._tenantId; else return null; } @@ -322,6 +323,7 @@ public class DescriptionQuery extends QueryBase { protected DescriptionEntity convert(Tuple tuple, Set columns) { DescriptionEntity item = new DescriptionEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DescriptionEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DescriptionEntity._tenantId, UUID.class)); item.setLabel(QueryBase.convertSafe(tuple, columns, DescriptionEntity._label, String.class)); item.setProperties(QueryBase.convertSafe(tuple, columns, DescriptionEntity._properties, String.class)); item.setStatus(QueryBase.convertSafe(tuple, columns, DescriptionEntity._status, DescriptionStatus.class)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionReferenceQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionReferenceQuery.java index 7f827698b..7836b6791 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionReferenceQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionReferenceQuery.java @@ -221,6 +221,7 @@ public class DescriptionReferenceQuery extends QueryBase columns) { DescriptionReferenceEntity item = new DescriptionReferenceEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._tenantId, UUID.class)); item.setDescriptionId(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._descriptionId, UUID.class)); item.setReferenceId(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._referenceId, UUID.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._createdAt, Instant.class)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTagQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTagQuery.java index 3c0fba6c4..5c10b66a4 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTagQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTagQuery.java @@ -189,6 +189,7 @@ public class DescriptionTagQuery extends QueryBase { protected DescriptionTagEntity convert(Tuple tuple, Set columns) { DescriptionTagEntity item = new DescriptionTagEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DescriptionTagEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DescriptionTagEntity._tenantId, UUID.class)); item.setTagId(QueryBase.convertSafe(tuple, columns, DescriptionTagEntity._tagId, UUID.class)); item.setDescriptionId(QueryBase.convertSafe(tuple, columns, DescriptionTagEntity._descriptionId, UUID.class)); item.setIsActive(QueryBase.convertSafe(tuple, columns, DescriptionTagEntity._isActive, IsActive.class)); @@ -206,6 +207,7 @@ public class DescriptionTagQuery extends QueryBase { else if (item.match(DescriptionTag._createdAt)) return DescriptionTagEntity._createdAt; else if (item.match(DescriptionTag._updatedAt)) return DescriptionTagEntity._updatedAt; else if (item.match(DescriptionTag._hash)) return DescriptionTagEntity._updatedAt; + else if (item.match(DescriptionTag._belongsToCurrentTenant)) return DescriptionTagEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java index 4cea81ea5..7939c389f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java @@ -326,6 +326,7 @@ public class DescriptionTemplateQuery extends QueryBase columns) { DescriptionTemplateEntity item = new DescriptionTemplateEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DescriptionTemplateEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DescriptionTemplateEntity._tenantId, UUID.class)); item.setLabel(QueryBase.convertSafe(tuple, columns, DescriptionTemplateEntity._label, String.class)); item.setDefinition(QueryBase.convertSafe(tuple, columns, DescriptionTemplateEntity._definition, String.class)); item.setDescription(QueryBase.convertSafe(tuple, columns, DescriptionTemplateEntity._description, String.class)); @@ -375,6 +376,8 @@ public class DescriptionTemplateQuery extends QueryBase columns) { DescriptionTemplateTypeEntity item = new DescriptionTemplateTypeEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DescriptionTemplateTypeEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DescriptionTemplateTypeEntity._tenantId, UUID.class)); item.setName(QueryBase.convertSafe(tuple, columns, DescriptionTemplateTypeEntity._name, String.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, DescriptionTemplateTypeEntity._createdAt, Instant.class)); item.setUpdatedAt(QueryBase.convertSafe(tuple, columns, DescriptionTemplateTypeEntity._updatedAt, Instant.class)); @@ -182,6 +183,7 @@ public class DescriptionTemplateTypeQuery extends QueryBase { protected DmpBlueprintEntity convert(Tuple tuple, Set columns) { DmpBlueprintEntity item = new DmpBlueprintEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DmpBlueprintEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DmpBlueprintEntity._tenantId, UUID.class)); item.setLabel(QueryBase.convertSafe(tuple, columns, DmpBlueprintEntity._label, String.class)); item.setDefinition(QueryBase.convertSafe(tuple, columns, DmpBlueprintEntity._definition, String.class)); item.setStatus(QueryBase.convertSafe(tuple, columns, DmpBlueprintEntity._status, DmpBlueprintStatus.class)); @@ -281,6 +282,8 @@ public class DmpBlueprintQuery extends QueryBase { return DmpBlueprintEntity._isActive; else if (item.match(DmpBlueprint._hash)) return DmpBlueprintEntity._updatedAt; + else if (item.match(DmpBlueprint._belongsToCurrentTenant)) + return DmpBlueprintEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DmpDescriptionTemplateQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DmpDescriptionTemplateQuery.java index e0934a780..d85324bc9 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DmpDescriptionTemplateQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DmpDescriptionTemplateQuery.java @@ -234,6 +234,7 @@ public class DmpDescriptionTemplateQuery extends QueryBase columns) { DmpDescriptionTemplateEntity item = new DmpDescriptionTemplateEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DmpDescriptionTemplateEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DmpDescriptionTemplateEntity._tenantId, UUID.class)); item.setDmpId(QueryBase.convertSafe(tuple, columns, DmpDescriptionTemplateEntity._dmpId, UUID.class)); item.setDescriptionTemplateGroupId(QueryBase.convertSafe(tuple, columns, DmpDescriptionTemplateEntity._descriptionTemplateGroupId, UUID.class)); item.setSectionId(QueryBase.convertSafe(tuple, columns, DmpDescriptionTemplateEntity._sectionId, UUID.class)); @@ -258,6 +259,7 @@ public class DmpDescriptionTemplateQuery extends QueryBase { else if (item.match(Dmp._language)) return DmpEntity._language; else if (item.match(Dmp._publicAfter)) return DmpEntity._publicAfter; else if (item.match(Dmp._versionStatus)) return DmpEntity._versionStatus; + else if (item.match(Dmp._belongsToCurrentTenant)) return DmpEntity._tenantId; else return null; } @@ -360,6 +361,7 @@ public class DmpQuery extends QueryBase { protected DmpEntity convert(Tuple tuple, Set columns) { DmpEntity item = new DmpEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DmpEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DmpEntity._tenantId, UUID.class)); item.setLabel(QueryBase.convertSafe(tuple, columns, DmpEntity._label, String.class)); item.setVersion(QueryBase.convertSafe(tuple, columns, DmpEntity._version, Short.class)); item.setStatus(QueryBase.convertSafe(tuple, columns, DmpEntity._status, DmpStatus.class)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DmpReferenceQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DmpReferenceQuery.java index 0d3f8646c..2b5523beb 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DmpReferenceQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DmpReferenceQuery.java @@ -208,6 +208,7 @@ public class DmpReferenceQuery extends QueryBase { protected DmpReferenceEntity convert(Tuple tuple, Set columns) { DmpReferenceEntity item = new DmpReferenceEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._tenantId, UUID.class)); item.setDmpId(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._dmpId, UUID.class)); item.setReferenceId(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._referenceId, UUID.class)); item.setData(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._data, String.class)); @@ -229,6 +230,7 @@ public class DmpReferenceQuery extends QueryBase { else if (item.match(DmpReference._createdAt)) return DmpReferenceEntity._createdAt; else if (item.match(DmpReference._updatedAt)) return DmpReferenceEntity._updatedAt; else if (item.match(DmpReference._hash)) return DmpReferenceEntity._updatedAt; + else if (item.match(DmpReference._belongsToCurrentTenant)) return DmpReferenceEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DmpUserQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DmpUserQuery.java index 14a7eddd9..b02ad395f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DmpUserQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DmpUserQuery.java @@ -277,6 +277,7 @@ public class DmpUserQuery extends QueryBase { protected DmpUserEntity convert(Tuple tuple, Set columns) { DmpUserEntity item = new DmpUserEntity(); item.setId(QueryBase.convertSafe(tuple, columns, DmpUserEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, DmpUserEntity._tenantId, UUID.class)); item.setDmpId(QueryBase.convertSafe(tuple, columns, DmpUserEntity._dmpId, UUID.class)); item.setUserId(QueryBase.convertSafe(tuple, columns, DmpUserEntity._userId, UUID.class)); item.setSectionId(QueryBase.convertSafe(tuple, columns, DmpUserEntity._sectionId, UUID.class)); @@ -300,6 +301,7 @@ public class DmpUserQuery extends QueryBase { else if (item.match(DmpUser._hash)) return DmpUserEntity._updatedAt; else if (item.match(DmpUser._dmp)) return DmpUserEntity._dmpId; else if (item.match(DmpUser._user)) return DmpUserEntity._userId; + else if (item.match(DmpUser._belongsToCurrentTenant)) return DmpUserEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/EntityDoiQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/EntityDoiQuery.java index c4bb9408e..a9dc30cd6 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/EntityDoiQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/EntityDoiQuery.java @@ -259,6 +259,7 @@ public class EntityDoiQuery extends QueryBase { protected EntityDoiEntity convert(Tuple tuple, Set columns) { EntityDoiEntity item = new EntityDoiEntity(); item.setId(QueryBase.convertSafe(tuple, columns, EntityDoiEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, EntityDoiEntity._tenantId, UUID.class)); item.setDoi(QueryBase.convertSafe(tuple, columns, EntityDoiEntity._doi, String.class)); item.setRepositoryId(QueryBase.convertSafe(tuple, columns, EntityDoiEntity._repositoryId, String.class)); item.setEntityId(QueryBase.convertSafe(tuple, columns, EntityDoiEntity._entityId, UUID.class)); @@ -288,6 +289,8 @@ public class EntityDoiQuery extends QueryBase { else if (item.match(EntityDoi._hash)) return EntityDoiEntity._updatedAt; else if (item.match(EntityDoi._isActive)) return EntityDoiEntity._isActive; + else if (item.match(EntityDoi._belongsToCurrentTenant)) + return EntityDoiEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/LanguageQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/LanguageQuery.java index 7ac85df97..1fbfbd05c 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/LanguageQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/LanguageQuery.java @@ -159,6 +159,7 @@ public class LanguageQuery extends QueryBase { protected LanguageEntity convert(Tuple tuple, Set columns) { LanguageEntity item = new LanguageEntity(); item.setId(QueryBase.convertSafe(tuple, columns, LanguageEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, LanguageEntity._tenantId, UUID.class)); item.setCode(QueryBase.convertSafe(tuple, columns, LanguageEntity._code, String.class)); item.setPayload(QueryBase.convertSafe(tuple, columns, LanguageEntity._payload, String.class)); item.setOrdinal(QueryBase.convertSafe(tuple, columns, LanguageEntity._ordinal, Integer.class)); @@ -178,6 +179,7 @@ public class LanguageQuery extends QueryBase { else if (item.match(Language._updatedAt)) return LanguageEntity._updatedAt; else if (item.match(Language._hash)) return LanguageEntity._updatedAt; else if (item.match(Language._isActive)) return LanguageEntity._isActive; + else if (item.match(Language._belongsToCurrentTenant)) return LanguageEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/LockQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/LockQuery.java index 528879f6e..5775bda65 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/LockQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/LockQuery.java @@ -211,6 +211,7 @@ public class LockQuery extends QueryBase { protected LockEntity convert(Tuple tuple, Set columns) { LockEntity item = new LockEntity(); item.setId(QueryBase.convertSafe(tuple, columns, LockEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, LockEntity._tenantId, UUID.class)); item.setTarget(QueryBase.convertSafe(tuple, columns, LockEntity._target, UUID.class)); item.setTargetType(QueryBase.convertSafe(tuple, columns, LockEntity._targetType, LockTargetType.class)); item.setLockedBy(QueryBase.convertSafe(tuple, columns, LockEntity._lockedBy, UUID.class)); @@ -228,8 +229,8 @@ public class LockQuery extends QueryBase { else if (item.prefix(Lock._lockedBy)) return LockEntity._lockedBy; else if (item.match(Lock._lockedAt)) return LockEntity._lockedAt; else if (item.match(Lock._touchedAt)) return LockEntity._touchedAt; - else if (item.prefix(Lock._tenant)) return LockEntity._tenantId; else if (item.match(Lock._hash)) return LockEntity._lockedAt; + else if (item.match(Lock._belongsToCurrentTenant)) return LockEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/PrefillingSourceQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/PrefillingSourceQuery.java index c876558e6..b985af971 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/PrefillingSourceQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/PrefillingSourceQuery.java @@ -137,6 +137,7 @@ public class PrefillingSourceQuery extends QueryBase { protected PrefillingSourceEntity convert(Tuple tuple, Set columns) { PrefillingSourceEntity item = new PrefillingSourceEntity(); item.setId(QueryBase.convertSafe(tuple, columns, PrefillingSourceEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, PrefillingSourceEntity._tenantId, UUID.class)); item.setLabel(QueryBase.convertSafe(tuple, columns, PrefillingSourceEntity._label, String.class)); item.setDefinition(QueryBase.convertSafe(tuple, columns, PrefillingSourceEntity._definition, String.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, PrefillingSourceEntity._createdAt, Instant.class)); @@ -154,6 +155,7 @@ public class PrefillingSourceQuery extends QueryBase { else if (item.match(PrefillingSource._updatedAt)) return PrefillingSourceEntity._updatedAt; else if (item.match(PrefillingSource._hash)) return PrefillingSourceEntity._updatedAt; else if (item.match(PrefillingSource._isActive)) return PrefillingSourceEntity._isActive; + else if (item.match(PrefillingSource._belongsToCurrentTenant)) return PrefillingSourceEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceQuery.java index a1bd7fc8c..87d917248 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceQuery.java @@ -293,6 +293,7 @@ public class ReferenceQuery extends QueryBase { protected ReferenceEntity convert(Tuple tuple, Set columns) { ReferenceEntity item = new ReferenceEntity(); item.setId(QueryBase.convertSafe(tuple, columns, ReferenceEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, ReferenceEntity._tenantId, UUID.class)); item.setLabel(QueryBase.convertSafe(tuple, columns, ReferenceEntity._label, String.class)); item.setDescription(QueryBase.convertSafe(tuple, columns, ReferenceEntity._description, String.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, ReferenceEntity._createdAt, Instant.class)); @@ -325,6 +326,7 @@ public class ReferenceQuery extends QueryBase { else if (item.match(Reference._type) || item.match(PublicReference._type)) return ReferenceEntity._typeId; else if (item.prefix(Reference._type) || item.prefix(PublicReference._type)) return ReferenceEntity._typeId; else if (item.prefix(Reference._createdBy)) return ReferenceEntity._createdById; + else if (item.prefix(Reference._belongsToCurrentTenant)) return ReferenceEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceTypeQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceTypeQuery.java index cba845bd5..932347568 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceTypeQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/ReferenceTypeQuery.java @@ -165,6 +165,7 @@ public class ReferenceTypeQuery extends QueryBase { protected ReferenceTypeEntity convert(Tuple tuple, Set columns) { ReferenceTypeEntity item = new ReferenceTypeEntity(); item.setId(QueryBase.convertSafe(tuple, columns, ReferenceTypeEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, ReferenceTypeEntity._tenantId, UUID.class)); item.setName(QueryBase.convertSafe(tuple, columns, ReferenceTypeEntity._name, String.class)); item.setCode(QueryBase.convertSafe(tuple, columns, ReferenceTypeEntity._code, String.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, ReferenceTypeEntity._createdAt, Instant.class)); @@ -185,6 +186,7 @@ public class ReferenceTypeQuery extends QueryBase { else if (item.match(ReferenceType._isActive)) return ReferenceTypeEntity._isActive; else if (item.match(ReferenceType._definition)) return ReferenceTypeEntity._definition; else if (item.prefix(ReferenceType._definition)) return ReferenceTypeEntity._definition; + else if (item.match(ReferenceType._belongsToCurrentTenant)) return ReferenceTypeEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/StorageFileQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/StorageFileQuery.java index d536d38f7..1b88a00ae 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/StorageFileQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/StorageFileQuery.java @@ -207,6 +207,7 @@ public class StorageFileQuery extends QueryBase { else if (item.match(StorageFile._purgedAt)) return StorageFileEntity._purgedAt; else if (item.match(StorageFile._owner)) return StorageFileEntity._ownerId; else if (item.prefix(StorageFile._owner)) return StorageFileEntity._ownerId; + else if (item.match(StorageFile._belongsToCurrentTenant)) return StorageFileEntity._tenantId; else return null; } @@ -214,6 +215,7 @@ public class StorageFileQuery extends QueryBase { protected StorageFileEntity convert(Tuple tuple, Set columns) { StorageFileEntity item = new StorageFileEntity(); item.setId(QueryBase.convertSafe(tuple, columns, StorageFileEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, StorageFileEntity._tenantId, UUID.class)); item.setName(QueryBase.convertSafe(tuple, columns, StorageFileEntity._name, String.class)); item.setFileRef(QueryBase.convertSafe(tuple, columns, StorageFileEntity._fileRef, String.class)); item.setExtension(QueryBase.convertSafe(tuple, columns, StorageFileEntity._extension, String.class)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/SupportiveMaterialQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/SupportiveMaterialQuery.java index 0cc1bdee1..befc27d63 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/SupportiveMaterialQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/SupportiveMaterialQuery.java @@ -188,6 +188,7 @@ public class SupportiveMaterialQuery extends QueryBase protected SupportiveMaterialEntity convert(Tuple tuple, Set columns) { SupportiveMaterialEntity item = new SupportiveMaterialEntity(); item.setId(QueryBase.convertSafe(tuple, columns, SupportiveMaterialEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, SupportiveMaterialEntity._tenantId, UUID.class)); item.setType(QueryBase.convertSafe(tuple, columns, SupportiveMaterialEntity._type, SupportiveMaterialFieldType.class)); item.setLanguageCode(QueryBase.convertSafe(tuple, columns, SupportiveMaterialEntity._languageCode, String.class)); item.setPayload(QueryBase.convertSafe(tuple, columns, SupportiveMaterialEntity._payload, String.class)); @@ -207,6 +208,7 @@ public class SupportiveMaterialQuery extends QueryBase else if (item.match(SupportiveMaterial._updatedAt)) return SupportiveMaterialEntity._updatedAt; else if (item.match(SupportiveMaterial._hash)) return SupportiveMaterialEntity._updatedAt; else if (item.match(SupportiveMaterial._isActive)) return SupportiveMaterialEntity._isActive; + else if (item.match(SupportiveMaterial._belongsToCurrentTenant)) return SupportiveMaterialEntity._tenantId; else return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java index 345f355a9..573f48cf3 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/TagQuery.java @@ -260,6 +260,7 @@ public class TagQuery extends QueryBase { else if (item.match(Tag._updatedAt)) return TagEntity._updatedAt; else if (item.match(Tag._hash)) return TagEntity._updatedAt; else if (item.match(Tag._isActive)) return TagEntity._isActive; + else if (item.match(Tag._belongsToCurrentTenant)) return TagEntity._tenantId; else return null; } @@ -267,6 +268,7 @@ public class TagQuery extends QueryBase { protected TagEntity convert(Tuple tuple, Set columns) { TagEntity item = new TagEntity(); item.setId(QueryBase.convertSafe(tuple, columns, TagEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, TagEntity._tenantId, UUID.class)); item.setLabel(QueryBase.convertSafe(tuple, columns, TagEntity._label, String.class)); item.setCreatedById(QueryBase.convertSafe(tuple, columns, TagEntity._createdById, UUID.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, TagEntity._createdAt, Instant.class)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/TenantUserQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/TenantUserQuery.java index a0884b075..c0ce98d05 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/TenantUserQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/TenantUserQuery.java @@ -135,7 +135,7 @@ public class TenantUserQuery extends QueryBase { if (ownerId != null) { predicates.add(queryContext.CriteriaBuilder.equal(queryContext.Root.get(TenantUserEntity._userId), ownerId)); } - if (predicates.size() > 0) { + if (!predicates.isEmpty()) { Predicate[] predicatesArray = predicates.toArray(new Predicate[0]); return queryContext.CriteriaBuilder.and(predicatesArray); } else { @@ -182,6 +182,7 @@ public class TenantUserQuery extends QueryBase { protected TenantUserEntity convert(Tuple tuple, Set columns) { TenantUserEntity item = new TenantUserEntity(); item.setId(QueryBase.convertSafe(tuple, columns, TenantUserEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, TenantUserEntity._tenantId, UUID.class)); item.setUserId(QueryBase.convertSafe(tuple, columns, TenantUserEntity._userId, UUID.class)); item.setTenantId(QueryBase.convertSafe(tuple, columns, TenantUserEntity._tenantId, UUID.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, TenantUserEntity._createdAt, Instant.class)); @@ -201,6 +202,7 @@ public class TenantUserQuery extends QueryBase { else if (item.match(TenantUser._hash)) return TenantUserEntity._updatedAt; else if (item.match(TenantUser._user, UserEntity._id)) return TenantUserEntity._userId; else if (item.prefix(TenantUser._user)) return TenantUserEntity._userId; + else if (item.match(TenantUser._belongsToCurrentTenant)) return TenantUserEntity._tenantId; else return null; } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/UserDescriptionTemplateQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/UserDescriptionTemplateQuery.java index f6910e024..91ef66656 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/UserDescriptionTemplateQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/UserDescriptionTemplateQuery.java @@ -192,6 +192,7 @@ public class UserDescriptionTemplateQuery extends QueryBase columns) { UserDescriptionTemplateEntity item = new UserDescriptionTemplateEntity(); item.setId(QueryBase.convertSafe(tuple, columns, UserDescriptionTemplateEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, UserDescriptionTemplateEntity._tenantId, UUID.class)); item.setUserId(QueryBase.convertSafe(tuple, columns, UserDescriptionTemplateEntity._userId, UUID.class)); item.setDescriptionTemplateId(QueryBase.convertSafe(tuple, columns, UserDescriptionTemplateEntity._descriptionTemplateId, UUID.class)); item.setRole(QueryBase.convertSafe(tuple, columns, UserDescriptionTemplateEntity._role, UserDescriptionTemplateRole.class)); @@ -213,6 +214,7 @@ public class UserDescriptionTemplateQuery extends QueryBase { else if (item.prefix(UserRole._user)) return UserRoleEntity._userId; else if (item.match(UserRole._user)) return UserRoleEntity._userId; else if (item.match(UserRole._createdAt) ) return UserRoleEntity._createdAt; + else if (item.match(UserRole._belongsToCurrentTenant) ) return UserRoleEntity._tenantId; else return null; } @@ -184,6 +185,7 @@ public class UserRoleQuery extends QueryBase { protected UserRoleEntity convert(Tuple tuple, Set columns) { UserRoleEntity item = new UserRoleEntity(); item.setId(QueryBase.convertSafe(tuple, columns, UserRoleEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, UserRoleEntity._tenantId, UUID.class)); item.setRole(QueryBase.convertSafe(tuple, columns, UserRoleEntity._role, String.class)); item.setUserId(QueryBase.convertSafe(tuple, columns, UserRoleEntity._userId, UUID.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, UserRoleEntity._createdAt, Instant.class)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/UserSettingsQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/UserSettingsQuery.java index 7f845c251..82a5d6932 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/UserSettingsQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/UserSettingsQuery.java @@ -151,7 +151,7 @@ public class UserSettingsQuery extends QueryBase { if (ownerId != null) { predicates.add(queryContext.CriteriaBuilder.equal(queryContext.Root.get(UserSettingsEntity._entityId), ownerId)); } - if (predicates.size() > 0) { + if (!predicates.isEmpty()) { Predicate[] predicatesArray = predicates.toArray(new Predicate[0]); return queryContext.CriteriaBuilder.and(predicatesArray); } else { @@ -198,7 +198,7 @@ public class UserSettingsQuery extends QueryBase { } - if (predicates.size() > 0) { + if (!predicates.isEmpty()) { Predicate[] predicatesArray = predicates.toArray(new Predicate[0]); return queryContext.CriteriaBuilder.and(predicatesArray); } else { @@ -216,6 +216,7 @@ public class UserSettingsQuery extends QueryBase { else if (item.match(UserSettings._createdAt)) return UserSettingsEntity._createdAt; else if (item.match(UserSettings._updatedAt)) return UserSettingsEntity._updatedAt; else if (item.match(UserSettings._hash)) return UserSettingsEntity._updatedAt; + else if (item.match(UserSettings._belongsToCurrentTenant)) return UserSettingsEntity._tenantId; else return null; } @@ -223,6 +224,7 @@ public class UserSettingsQuery extends QueryBase { protected UserSettingsEntity convert(Tuple tuple, Set columns) { UserSettingsEntity item = new UserSettingsEntity(); item.setId(QueryBase.convertSafe(tuple, columns, UserSettingsEntity._id, UUID.class)); + item.setTenantId(QueryBase.convertSafe(tuple, columns, UserSettingsEntity._tenantId, UUID.class)); item.setEntityId(QueryBase.convertSafe(tuple, columns, UserSettingsEntity._entityId, UUID.class)); item.setKey(QueryBase.convertSafe(tuple, columns, UserSettingsEntity._key, String.class)); item.setValue(QueryBase.convertSafe(tuple, columns, UserSettingsEntity._value, String.class)); diff --git a/dmp-backend/core/src/main/java/eu/eudat/repository/TransformerRepository.java b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerRepository.java similarity index 90% rename from dmp-backend/core/src/main/java/eu/eudat/repository/TransformerRepository.java rename to dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerRepository.java index d74f1befd..20c8ec800 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/repository/TransformerRepository.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerRepository.java @@ -1,4 +1,4 @@ -package eu.eudat.repository; +package eu.eudat.service.transformer; import eu.eudat.commonmodels.models.FileEnvelopeModel; import eu.eudat.commonmodels.models.description.DescriptionModel; @@ -6,17 +6,15 @@ import eu.eudat.commonmodels.models.dmp.DmpModel; import eu.eudat.file.transformer.interfaces.FileTransformerClient; import eu.eudat.file.transformer.interfaces.FileTransformerConfiguration; import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono; -public class TransformerRepository implements FileTransformerClient { +public class FileTransformerRepository implements FileTransformerClient { private final WebClient transformerClient; - public TransformerRepository(WebClient transformerClient) { + public FileTransformerRepository(WebClient transformerClient) { this.transformerClient = transformerClient; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java index 5b98098a5..dc9d10f58 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java @@ -15,7 +15,6 @@ import eu.eudat.model.file.RepositoryFileFormat; import eu.eudat.model.file.TransformerCacheModel; import eu.eudat.query.DescriptionQuery; import eu.eudat.query.DmpQuery; -import eu.eudat.repository.TransformerRepository; import eu.eudat.service.storage.StorageFileService; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.commons.web.oidc.filter.webflux.TokenExchangeCacheService; @@ -42,7 +41,7 @@ public class FileTransformerServiceImpl implements FileTransformerService { private static final Logger logger = LoggerFactory.getLogger(FileTransformerServiceImpl.class); private final FileTransformerProperties fileTransformerProperties; - private final Map clients; + private final Map clients; private final TokenExchangeCacheService tokenExchangeCacheService; private final FileTransformerConfigurationCache fileTransformerConfigurationCache; private final AuthorizationService authorizationService; @@ -65,7 +64,7 @@ public class FileTransformerServiceImpl implements FileTransformerService { this.clients = new HashMap<>(); } - private TransformerRepository getRepository(String repoId) { + private FileTransformerRepository getRepository(String repoId) { if (this.clients.containsKey(repoId)) return this.clients.get(repoId); //GK: It's register time @@ -75,7 +74,7 @@ public class FileTransformerServiceImpl implements FileTransformerService { TokenExchangeModel tokenExchangeModel = new TokenExchangeModel(host + "_" + source.getClientId(), source.getIssuerUrl(), source.getClientId(), source.getClientSecret(), source.getScope()); TokenExchangeFilterFunction tokenExchangeFilterFunction = new TokenExchangeFilterFunction(this.tokenExchangeCacheService, tokenExchangeModel); - TransformerRepository repository = new TransformerRepository(WebClient.builder().baseUrl(source.getUrl() + "/api/file-transformer").filters(exchangeFilterFunctions -> { + FileTransformerRepository repository = new FileTransformerRepository(WebClient.builder().baseUrl(source.getUrl() + "/api/file-transformer").filters(exchangeFilterFunctions -> { exchangeFilterFunctions.add(tokenExchangeFilterFunction); exchangeFilterFunctions.add(logRequest()); }).build()); @@ -103,7 +102,7 @@ public class FileTransformerServiceImpl implements FileTransformerService { if (configs == null) { List configurations = new ArrayList<>(); //GK: So much for lazy loading - List repositories = fileTransformerProperties.getSources().stream().map(depositSource -> getRepository(depositSource.getTransformerId())).toList(); + List repositories = fileTransformerProperties.getSources().stream().map(depositSource -> getRepository(depositSource.getTransformerId())).toList(); repositories = new ArrayList<>(repositories); repositories.forEach((client) -> { @@ -128,8 +127,8 @@ public class FileTransformerServiceImpl implements FileTransformerService { public eu.eudat.model.file.FileEnvelope exportDmp(UUID dmpId, String repositoryId, String format) { this.authorizationService.authorize(Permission.EditDmp); //GK: First get the right client - TransformerRepository repository = getRepository(repositoryId); - if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{format, TransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); + FileTransformerRepository repository = getRepository(repositoryId); + if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{format, FileTransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); //GK: Second get the Target Data Management Plan DmpQuery query = this.queryFactory.query(DmpQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).ids(dmpId); DmpModel dmpFileTransformerModel = this.builderFactory.builder(DmpCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).setRepositoryId(repository.getConfiguration().getFileTransformerId()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); @@ -148,8 +147,8 @@ public class FileTransformerServiceImpl implements FileTransformerService { public eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String repositoryId, String format) { this.authorizationService.authorize(Permission.EditDmp); //GK: First get the right client - TransformerRepository repository = getRepository(repositoryId); - if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{format, TransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); + FileTransformerRepository repository = getRepository(repositoryId); + if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{format, FileTransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); //GK: Second get the Target Data Management Plan DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).ids(descriptionId); diff --git a/dmp-backend/web/src/main/resources/config/errors.yml b/dmp-backend/web/src/main/resources/config/errors.yml index 4c704db53..6b3580195 100644 --- a/dmp-backend/web/src/main/resources/config/errors.yml +++ b/dmp-backend/web/src/main/resources/config/errors.yml @@ -56,3 +56,6 @@ error-thesaurus: dmp-description-template-can-not-remove: code: 122 message: Can not remove description template that is already in use. + tenant-tampering: + code: 123 + message: Tenant tampering