134 CriteriaBuilder builder =
entityManager.getCriteriaBuilder();
135 CriteriaQuery<PolicyEntity> querybuilder = builder.createQuery(PolicyEntity.class);
136 Root<PolicyEntity> root = querybuilder.from(PolicyEntity.class);
137 List<Predicate> predicates =
new ArrayList();
138 querybuilder.select(root.get(
"id"));
140 if (resourceServerId != null) {
141 predicates.add(builder.equal(root.get(
"resourceServer").get(
"id"), resourceServerId));
144 attributes.forEach((name, value) -> {
145 if (
"permission".equals(name)) {
146 if (Boolean.valueOf(value[0])) {
147 predicates.add(root.get(
"type").in(
"resource",
"scope",
"uma"));
149 predicates.add(builder.not(root.get(
"type").in(
"resource",
"scope",
"uma")));
151 }
else if (
"id".equals(name)) {
152 predicates.add(root.get(name).in(value));
153 }
else if (
"owner".equals(name)) {
154 predicates.add(root.get(name).in(value));
155 }
else if (
"owner_is_not_null".equals(name)) {
156 predicates.add(builder.isNotNull(root.get(
"owner")));
157 }
else if (
"resource".equals(name)) {
158 predicates.add(root.join(
"resources").get(
"id").in(value));
159 }
else if (
"scope".equals(name)) {
160 predicates.add(root.join(
"scopes").get(
"id").in(value));
161 }
else if (name.startsWith(
"config:")) {
162 predicates.add(root.joinMap(
"config").key().in(name.substring(
"config:".length())));
163 predicates.add(builder.like(root.joinMap(
"config").value().as(String.class),
"%" + value[0] +
"%"));
165 predicates.add(builder.like(builder.lower(root.get(name)),
"%" + value[0].toLowerCase() +
"%"));
169 if (!attributes.containsKey(
"owner") && !attributes.containsKey(
"owner_is_not_null")) {
170 predicates.add(builder.isNull(root.get(
"owner")));
173 querybuilder.where(predicates.toArray(
new Predicate[predicates.size()])).orderBy(builder.asc(root.get(
"name")));
177 if (firstResult != -1) {
178 query.setFirstResult(firstResult);
180 if (maxResult != -1) {
181 query.setMaxResults(maxResult);
184 List<String> result = query.getResultList();
185 List<Policy> list =
new LinkedList<>();
186 for (String
id : result) {
188 if (Objects.nonNull(policy)) {
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
PolicyStore getPolicyStore()
final EntityManager entityManager
Definition: JPAPolicyStore.java:51
final AuthorizationProvider provider
Definition: JPAPolicyStore.java:52
Policy findById(String id, String resourceServerId)