Reduced code duplication
This commit is contained in:
parent
ee28be982f
commit
11b0c23937
2 changed files with 16 additions and 48 deletions
|
@ -65,6 +65,19 @@ public class JPAPermissionTicketStore implements PermissionTicketStore {
|
|||
|
||||
querybuilder.select(root.get("id"));
|
||||
|
||||
List<Predicate> predicates = getPredicates(builder, root, resourceServerId, attributes);
|
||||
|
||||
querybuilder.where(predicates.toArray(new Predicate[predicates.size()])).orderBy(builder.asc(root.get("id")));
|
||||
|
||||
TypedQuery query = entityManager.createQuery(querybuilder);
|
||||
|
||||
return query.getResultStream().count();
|
||||
}
|
||||
|
||||
private List<Predicate> getPredicates(CriteriaBuilder builder,
|
||||
Root<PermissionTicketEntity> root,
|
||||
String resourceServerId,
|
||||
Map<String, String> attributes) {
|
||||
List<Predicate> predicates = new ArrayList();
|
||||
|
||||
if (resourceServerId != null) {
|
||||
|
@ -106,12 +119,7 @@ public class JPAPermissionTicketStore implements PermissionTicketStore {
|
|||
throw new RuntimeException("Unsupported filter [" + name + "]");
|
||||
}
|
||||
});
|
||||
|
||||
querybuilder.where(predicates.toArray(new Predicate[predicates.size()])).orderBy(builder.asc(root.get("id")));
|
||||
|
||||
TypedQuery query = entityManager.createQuery(querybuilder);
|
||||
|
||||
return query.getResultStream().count();
|
||||
return predicates;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -234,47 +242,7 @@ public class JPAPermissionTicketStore implements PermissionTicketStore {
|
|||
|
||||
querybuilder.select(root.get("id"));
|
||||
|
||||
List<Predicate> predicates = new ArrayList();
|
||||
|
||||
if (resourceServerId != null) {
|
||||
predicates.add(builder.equal(root.get("resourceServer").get("id"), resourceServerId));
|
||||
}
|
||||
|
||||
attributes.forEach((name, value) -> {
|
||||
if (PermissionTicket.ID.equals(name)) {
|
||||
predicates.add(root.get(name).in(value));
|
||||
} else if (PermissionTicket.SCOPE.equals(name)) {
|
||||
predicates.add(root.join("scope").get("id").in(value));
|
||||
} else if (PermissionTicket.SCOPE_IS_NULL.equals(name)) {
|
||||
if (Boolean.valueOf(value)) {
|
||||
predicates.add(builder.isNull(root.get("scope")));
|
||||
} else {
|
||||
predicates.add(builder.isNotNull(root.get("scope")));
|
||||
}
|
||||
} else if (PermissionTicket.RESOURCE.equals(name)) {
|
||||
predicates.add(root.join("resource").get("id").in(value));
|
||||
} else if (PermissionTicket.RESOURCE_NAME.equals(name)) {
|
||||
predicates.add(root.join("resource").get("name").in(value));
|
||||
} else if (PermissionTicket.OWNER.equals(name)) {
|
||||
predicates.add(builder.equal(root.get("owner"), value));
|
||||
} else if (PermissionTicket.REQUESTER.equals(name)) {
|
||||
predicates.add(builder.equal(root.get("requester"), value));
|
||||
} else if (PermissionTicket.GRANTED.equals(name)) {
|
||||
if (Boolean.valueOf(value)) {
|
||||
predicates.add(builder.isNotNull(root.get("grantedTimestamp")));
|
||||
} else {
|
||||
predicates.add(builder.isNull(root.get("grantedTimestamp")));
|
||||
}
|
||||
} else if (PermissionTicket.REQUESTER_IS_NULL.equals(name)) {
|
||||
predicates.add(builder.isNull(root.get("requester")));
|
||||
} else if (PermissionTicket.POLICY_IS_NOT_NULL.equals(name)) {
|
||||
predicates.add(builder.isNotNull(root.get("policy")));
|
||||
} else if (PermissionTicket.POLICY.equals(name)) {
|
||||
predicates.add(root.join("policy").get("id").in(value));
|
||||
} else {
|
||||
throw new RuntimeException("Unsupported filter [" + name + "]");
|
||||
}
|
||||
});
|
||||
List<Predicate> predicates = getPredicates(builder, root, resourceServerId, attributes);
|
||||
|
||||
querybuilder.where(predicates.toArray(new Predicate[predicates.size()])).orderBy(builder.asc(root.get("id")));
|
||||
|
||||
|
|
|
@ -202,7 +202,7 @@ public class PermissionTicketService {
|
|||
@Path("/count")
|
||||
@GET
|
||||
@Produces("application/json")
|
||||
public Response getResourceCount(@QueryParam("scopeId") String scopeId,
|
||||
public Response getPermissionCount(@QueryParam("scopeId") String scopeId,
|
||||
@QueryParam("resourceId") String resourceId,
|
||||
@QueryParam("owner") String owner,
|
||||
@QueryParam("requester") String requester,
|
||||
|
|
Loading…
Reference in a new issue