From e149b61b58fffebe2d89e5af1f05b28e0b10bcc1 Mon Sep 17 00:00:00 2001 From: Thomas Georgios Giannos Date: Tue, 24 Oct 2023 17:24:51 +0300 Subject: [PATCH] Adding 'dmp' query option on 'description' query --- .../java/eu/eudat/query/DescriptionQuery.java | 83 +++++++++++++++---- .../eudat/query/lookup/DescriptionLookup.java | 11 +++ 2 files changed, 76 insertions(+), 18 deletions(-) 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 cec8f41cc..4362d39b7 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 @@ -34,6 +34,8 @@ public class DescriptionQuery extends QueryBase { private Collection statuses; + private Collection dmpIds; + private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); private final UserScope userScope; @@ -110,6 +112,21 @@ public class DescriptionQuery extends QueryBase { return this; } + public DescriptionQuery dmpIds(UUID value) { + this.dmpIds = List.of(value); + return this; + } + + public DescriptionQuery dmpIds(UUID... value) { + this.dmpIds = Arrays.asList(value); + return this; + } + + public DescriptionQuery dmpIds(Collection values) { + this.dmpIds = values; + return this; + } + public DescriptionQuery authorize(EnumSet values) { this.authorize = values; return this; @@ -117,7 +134,12 @@ public class DescriptionQuery extends QueryBase { @Override protected Boolean isFalseQuery() { - return this.isEmpty(this.ids) || this.isEmpty(this.isActives) || this.isEmpty(this.excludedIds) || this.isEmpty(this.statuses); + return + this.isEmpty(this.ids) || + this.isEmpty(this.isActives) || + this.isEmpty(this.excludedIds) || + this.isEmpty(this.statuses) || + this.isEmpty(this.dmpIds); } @Override @@ -136,7 +158,8 @@ public class DescriptionQuery extends QueryBase { for (UUID item : this.ids) inClause.value(item); predicates.add(inClause); - }if (this.excludedIds != null) { + } + if (this.excludedIds != null) { CriteriaBuilder.In notInClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(DescriptionEntity._id)); for (UUID item : this.excludedIds) notInClause.value(item); @@ -154,6 +177,12 @@ public class DescriptionQuery extends QueryBase { inClause.value(item); predicates.add(inClause); } + if (this.dmpIds != null) { + CriteriaBuilder.In inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(DescriptionEntity._dmp)); + for (UUID item : this.dmpIds) + inClause.value(item); + predicates.add(inClause); + } if (!predicates.isEmpty()) { Predicate[] predicatesArray = predicates.toArray(new Predicate[0]); return queryContext.CriteriaBuilder.and(predicatesArray); @@ -164,22 +193,40 @@ public class DescriptionQuery extends QueryBase { @Override protected String fieldNameOf(FieldResolver item) { - if (item.match(Description._id)) return DescriptionEntity._id; - else if (item.match(Description._label)) return DescriptionEntity._label; - else if (item.match(Description._dmp)) return DescriptionEntity._dmp; - else if (item.match(Description._uri)) return DescriptionEntity._uri; - else if (item.match(Description._properties)) return DescriptionEntity._properties; - else if (item.match(Description._profile)) return DescriptionEntity._profile; - else if (item.match(Description._reference)) return DescriptionEntity._reference; - else if (item.match(Description._status)) return DescriptionEntity._status; - else if (item.match(Description._description)) return DescriptionEntity._description; - else if (item.match(Description._dmpSectionIndex)) return DescriptionEntity._dmpSectionIndex; - else if (item.match(Description._creator)) return DescriptionEntity._creator; - else if (item.match(Description._createdAt)) return DescriptionEntity._createdAt; - else if (item.match(Description._updatedAt)) return DescriptionEntity._updatedAt; - else if (item.match(Description._isActive)) return DescriptionEntity._isActive; - else if (item.match(Description._finalizedAt)) return DescriptionEntity._finalizedAt; - else return null; + if (item.match(Description._id)) + return DescriptionEntity._id; + else if (item.match(Description._label)) + return DescriptionEntity._label; + else if (item.prefix(Description._dmp)) + return DescriptionEntity._dmp; + else if (item.match(Description._dmp)) + return DescriptionEntity._dmp; + else if (item.match(Description._uri)) + return DescriptionEntity._uri; + else if (item.match(Description._properties)) + return DescriptionEntity._properties; + else if (item.match(Description._profile)) + return DescriptionEntity._profile; + else if (item.match(Description._reference)) + return DescriptionEntity._reference; + else if (item.match(Description._status)) + return DescriptionEntity._status; + else if (item.match(Description._description)) + return DescriptionEntity._description; + else if (item.match(Description._dmpSectionIndex)) + return DescriptionEntity._dmpSectionIndex; + else if (item.match(Description._creator)) + return DescriptionEntity._creator; + else if (item.match(Description._createdAt)) + return DescriptionEntity._createdAt; + else if (item.match(Description._updatedAt)) + return DescriptionEntity._updatedAt; + else if (item.match(Description._isActive)) + return DescriptionEntity._isActive; + else if (item.match(Description._finalizedAt)) + return DescriptionEntity._finalizedAt; + else + return null; } @Override diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/lookup/DescriptionLookup.java b/dmp-backend/core/src/main/java/eu/eudat/query/lookup/DescriptionLookup.java index 4352207cf..627abccb0 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/lookup/DescriptionLookup.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/lookup/DescriptionLookup.java @@ -22,6 +22,8 @@ public class DescriptionLookup extends Lookup { private List statuses; + private List dmpIds; + public String getLike() { return like; } @@ -62,6 +64,14 @@ public class DescriptionLookup extends Lookup { this.statuses = statuses; } + public List getDmpIds() { + return dmpIds; + } + + public void setDmpIds(List dmpIds) { + this.dmpIds = dmpIds; + } + public DescriptionQuery enrich(QueryFactory queryFactory) { DescriptionQuery query = queryFactory.query(DescriptionQuery.class); if (this.like != null) query.like(this.like); @@ -69,6 +79,7 @@ public class DescriptionLookup extends Lookup { if (this.excludedIds != null) query.excludedIds(this.excludedIds); if (this.isActive != null) query.isActive(this.isActive); if (this.statuses != null) query.statuses(this.statuses); + if (this.dmpIds != null) query.dmpIds(this.dmpIds); this.enrichCommon(query);