From ae56e2dbf2d52dc2a9e505c7d8513d99d35c9114 Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Wed, 13 Mar 2024 11:47:48 +0200 Subject: [PATCH] fix counter backend --- .../java/eu/eudat/model/PublicReferenceType.java | 12 ++++++++++++ .../builder/PublicReferenceTypeBuilder.java | 1 + .../java/eu/eudat/query/DmpReferenceQuery.java | 16 ++++++++-------- .../service/dashborad/DashboardServiceImpl.java | 14 +++++--------- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/PublicReferenceType.java b/dmp-backend/core/src/main/java/eu/eudat/model/PublicReferenceType.java index 0c3a8fac0..a1c911b7b 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/PublicReferenceType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/PublicReferenceType.java @@ -12,6 +12,10 @@ public class PublicReferenceType { public static final String _name = "name"; + private String code; + public static final String _code = "code"; + + public UUID getId() { return id; } @@ -27,4 +31,12 @@ public class PublicReferenceType { public void setName(String name) { this.name = name; } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/PublicReferenceTypeBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/PublicReferenceTypeBuilder.java index e9cb821c3..8275e9642 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/PublicReferenceTypeBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/PublicReferenceTypeBuilder.java @@ -45,6 +45,7 @@ public class PublicReferenceTypeBuilder extends BaseBuilder { inClause.value(item); predicates.add(inClause); } -// if (this.dmpQuery != null) { -// QueryContext subQuery = this.applySubQuery(this.dmpQuery, queryContext, UUID.class, dmpEntityRoot -> dmpEntityRoot.get(DmpEntity._id)); -// predicates.add(queryContext.CriteriaBuilder.in(queryContext.Root.get(DmpReferenceEntity._dmpId)).value(subQuery.Query)); -// } -// if (this.referenceQuery != null) { -// QueryContext subQuery = this.applySubQuery(this.referenceQuery, queryContext, UUID.class, root -> root.get(ReferenceEntity._id)); -// predicates.add(queryContext.CriteriaBuilder.in(queryContext.Root.get(DmpReferenceEntity._referenceId)).value(subQuery.Query)); -// } + if (this.dmpQuery != null) { + QueryContext subQuery = this.applySubQuery(this.dmpQuery, queryContext, UUID.class, dmpEntityRoot -> dmpEntityRoot.get(DmpEntity._id)); + predicates.add(queryContext.CriteriaBuilder.in(queryContext.Root.get(DmpReferenceEntity._dmpId)).value(subQuery.Query)); + } + if (this.referenceQuery != null) { + QueryContext subQuery = this.applySubQuery(this.referenceQuery, queryContext, UUID.class, root -> root.get(ReferenceEntity._id)); + predicates.add(queryContext.CriteriaBuilder.in(queryContext.Root.get(DmpReferenceEntity._referenceId)).value(subQuery.Query)); + } if (!predicates.isEmpty()) { Predicate[] predicatesArray = predicates.toArray(new Predicate[0]); return queryContext.CriteriaBuilder.and(predicatesArray); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/dashborad/DashboardServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/dashborad/DashboardServiceImpl.java index 89bcc9f67..8eb8a2231 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/dashborad/DashboardServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/dashborad/DashboardServiceImpl.java @@ -135,24 +135,20 @@ public class DashboardServiceImpl implements DashboardService { DashboardStatisticsCacheService.DashboardStatisticsCacheValue cacheValue = this.dashboardStatisticsCacheService.lookup(this.dashboardStatisticsCacheService.buildKey(this.userScope.getUserId().toString().toLowerCase(Locale.ROOT))); if (cacheValue == null || cacheValue.getDashboardStatistics() == null) { - DmpUserQuery dmpUserLookup = this.queryFactory.query(DmpUserQuery.class); - dmpUserLookup.userIds(this.userScope.getUserId()); - dmpUserLookup.isActives(IsActive.Active); - - DmpQuery dmpQuery = this.queryFactory.query(DmpQuery.class).isActive(IsActive.Active).dmpUserSubQuery(dmpUserLookup).versionStatuses(DmpVersionStatus.Current); + DmpQuery dmpQuery = this.queryFactory.query(DmpQuery.class).isActive(IsActive.Active).versionStatuses(DmpVersionStatus.Current); DashboardStatistics statistics = new DashboardStatistics(); - statistics.setDmpCount(dmpQuery.authorize(EnumSet.of(AuthorizationFlags.DmpAssociated)).count()); - statistics.setDescriptionCount(this.queryFactory.query(DescriptionQuery.class).isActive(IsActive.Active).dmpSubQuery(dmpQuery).statuses(DescriptionStatus.Finalized).authorize(EnumSet.of(AuthorizationFlags.DmpAssociated)).count()); + statistics.setDmpCount(dmpQuery.authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).count()); + statistics.setDescriptionCount(this.queryFactory.query(DescriptionQuery.class).isActive(IsActive.Active).dmpSubQuery(dmpQuery).statuses(DescriptionStatus.Finalized).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).count()); statistics.setReferenceTypeStatistics(new ArrayList<>()); if (!this.conventionService.isListNullOrEmpty(this.config.getReferenceTypeCounters())){ for (UUID typeId : this.config.getReferenceTypeCounters()){ DashboardReferenceTypeStatistics referenceTypeStatistics = new DashboardReferenceTypeStatistics(); - referenceTypeStatistics.setCount(this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).typeIds(typeId).authorize(EnumSet.of(Owner)) + referenceTypeStatistics.setCount(this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).typeIds(typeId).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission) .dmpReferenceSubQuery(this.queryFactory.query(DmpReferenceQuery.class).isActives(IsActive.Active) .dmpSubQuery(dmpQuery)).count()); - referenceTypeStatistics.setReferenceType(this.builderFactory.builder(PublicReferenceTypeBuilder.class).build(new BaseFieldSet().ensure(PublicReferenceType._name), this.queryFactory.query(ReferenceTypeQuery.class).ids(typeId).first())); + referenceTypeStatistics.setReferenceType(this.builderFactory.builder(PublicReferenceTypeBuilder.class).build(new BaseFieldSet().ensure(PublicReferenceType._code), this.queryFactory.query(ReferenceTypeQuery.class).ids(typeId).first())); statistics.getReferenceTypeStatistics().add(referenceTypeStatistics); } }