From 9e2c94a0dccec656e3888ec7725e4377a337ea03 Mon Sep 17 00:00:00 2001 From: Tijs Rademakers Date: Fri, 26 Apr 2024 17:24:25 +0200 Subject: [PATCH] Add query option for multiple privilege ids --- .../org/flowable/idm/api/PrivilegeQuery.java | 3 ++ .../idm/engine/impl/PrivilegeQueryImpl.java | 15 ++++++++++ .../idm/db/mapping/entity/Privilege.xml | 7 +++++ .../test/api/identity/PrivilegesTest.java | 28 +++++++++++++++++++ 4 files changed, 53 insertions(+) diff --git a/modules/flowable-idm-api/src/main/java/org/flowable/idm/api/PrivilegeQuery.java b/modules/flowable-idm-api/src/main/java/org/flowable/idm/api/PrivilegeQuery.java index 32dd0b709a7..26ab49f1f70 100644 --- a/modules/flowable-idm-api/src/main/java/org/flowable/idm/api/PrivilegeQuery.java +++ b/modules/flowable-idm-api/src/main/java/org/flowable/idm/api/PrivilegeQuery.java @@ -26,6 +26,9 @@ public interface PrivilegeQuery extends Query { /** Only select {@link Privilege}s with the given id/ */ PrivilegeQuery privilegeId(String id); + + /** Only select {@link Privilege}s with the given ids/ */ + PrivilegeQuery privilegeIds(List id); /** Only select {@link Privilege}s with the given name */ PrivilegeQuery privilegeName(String name); diff --git a/modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/PrivilegeQueryImpl.java b/modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/PrivilegeQueryImpl.java index 08a3f431552..a9263904b77 100644 --- a/modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/PrivilegeQueryImpl.java +++ b/modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/PrivilegeQueryImpl.java @@ -32,6 +32,7 @@ public class PrivilegeQueryImpl extends AbstractQuery private static final long serialVersionUID = 1L; protected String id; + protected List ids; protected String name; protected String userId; protected String groupId; @@ -53,6 +54,12 @@ public PrivilegeQuery privilegeId(String id) { this.id = id; return this; } + + @Override + public PrivilegeQuery privilegeIds(List ids) { + this.ids = ids; + return this; + } @Override public PrivilegeQuery privilegeName(String name) { @@ -87,6 +94,14 @@ public void setId(String id) { this.id = id; } + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } + public String getName() { return name; } diff --git a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/mapping/entity/Privilege.xml b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/mapping/entity/Privilege.xml index 3cdb3c4750c..84d9379c1a9 100644 --- a/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/mapping/entity/Privilege.xml +++ b/modules/flowable-idm-engine/src/main/resources/org/flowable/idm/db/mapping/entity/Privilege.xml @@ -62,6 +62,13 @@ RES.ID_ = #{id} + + and RES.ID_ IN + + #{id} + + and RES.NAME_ = #{name} diff --git a/modules/flowable-idm-engine/src/test/java/org/flowable/idm/engine/test/api/identity/PrivilegesTest.java b/modules/flowable-idm-engine/src/test/java/org/flowable/idm/engine/test/api/identity/PrivilegesTest.java index d4d9c344d8d..dfcff86a20d 100644 --- a/modules/flowable-idm-engine/src/test/java/org/flowable/idm/engine/test/api/identity/PrivilegesTest.java +++ b/modules/flowable-idm-engine/src/test/java/org/flowable/idm/engine/test/api/identity/PrivilegesTest.java @@ -15,6 +15,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -224,5 +225,32 @@ public void testPrivilegeUniqueName() { idmIdentityService.deletePrivilege(privilege.getId()); } + + @Test + public void testGetPrivilegesByIds() { + Privilege adminPrivilege = idmIdentityService.createPrivilegeQuery().privilegeName(adminPrivilegename).singleResult(); + Privilege modelerPrivilege = idmIdentityService.createPrivilegeQuery().privilegeName(modelerPrivilegeName).singleResult(); + List privilegeIds = new ArrayList<>(); + privilegeIds.add(adminPrivilege.getId()); + privilegeIds.add(modelerPrivilege.getId()); + List privileges = idmIdentityService.createPrivilegeQuery().privilegeIds(privilegeIds).list(); + assertThat(privileges).hasSize(2); + assertThat(privileges) + .extracting(Privilege::getId) + .contains(adminPrivilege.getId(), modelerPrivilege.getId()); + assertThat(privileges) + .extracting(Privilege::getName) + .contains(adminPrivilegename, modelerPrivilegeName); + + privilegeIds.add("unexisting"); + privileges = idmIdentityService.createPrivilegeQuery().privilegeIds(privilegeIds).list(); + assertThat(privileges).hasSize(2); + + privilegeIds = new ArrayList<>(); + privilegeIds.add("unknown"); + privilegeIds.add("unexisting"); + privileges = idmIdentityService.createPrivilegeQuery().privilegeIds(privilegeIds).list(); + assertThat(privileges).hasSize(0); + } }