@Override public int count(final Set<String> adminRealms, final SearchCond cond, final AnyTypeKind kind) { if (adminRealms == null || adminRealms.isEmpty()) { LOG.error("No realms provided"); return 0; } LOG.debug("Search condition:\n{}", cond); if (cond == null || !cond.isValid()) { LOG.error("Invalid search condition:\n{}", cond); return 0; } return doCount(adminRealms, cond, kind); }
@Override public <T extends Any<?>> List<T> search( final Set<String> adminRealms, final SearchCond cond, final int page, final int itemsPerPage, final List<OrderByClause> orderBy, final AnyTypeKind kind) { if (adminRealms == null || adminRealms.isEmpty()) { LOG.error("No realms provided"); return Collections.<T>emptyList(); } LOG.debug("Search condition:\n{}", cond); if (cond == null || !cond.isValid()) { LOG.error("Invalid search condition:\n{}", cond); return Collections.<T>emptyList(); } List<OrderByClause> effectiveOrderBy; if (orderBy.isEmpty()) { OrderByClause keyClause = new OrderByClause(); keyClause.setField(kind == AnyTypeKind.USER ? "username" : "name"); keyClause.setDirection(OrderByClause.Direction.ASC); effectiveOrderBy = Collections.singletonList(keyClause); } else { effectiveOrderBy = orderBy.stream(). filter(clause -> !ArrayUtils.contains(ORDER_BY_NOT_ALLOWED, clause.getField())). collect(Collectors.toList()); } return doSearch(adminRealms, cond, page, itemsPerPage, effectiveOrderBy, kind); }
private void setDynMembership(final DynRealm dynRealm, final AnyType anyType, final String dynMembershipFIQL) { SearchCond dynMembershipCond = SearchCondConverter.convert(dynMembershipFIQL); if (!dynMembershipCond.isValid()) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidSearchExpression); sce.getElements().add(dynMembershipFIQL); throw sce; } DynRealmMembership dynMembership; if (dynRealm.getDynMembership(anyType).isPresent()) { dynMembership = dynRealm.getDynMembership(anyType).get(); } else { dynMembership = entityFactory.newEntity(DynRealmMembership.class); dynMembership.setDynRealm(dynRealm); dynMembership.setAnyType(anyType); dynRealm.add(dynMembership); } dynMembership.setFIQLCond(dynMembershipFIQL); }
private void setDynMembership(final Role role, final String dynMembershipFIQL) { SearchCond dynMembershipCond = SearchCondConverter.convert(dynMembershipFIQL); if (!dynMembershipCond.isValid()) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidSearchExpression); sce.getElements().add(dynMembershipFIQL); throw sce; } DynRoleMembership dynMembership; if (role.getDynMembership() == null) { dynMembership = entityFactory.newEntity(DynRoleMembership.class); dynMembership.setRole(role); role.setDynMembership(dynMembership); } else { dynMembership = role.getDynMembership(); } dynMembership.setFIQLCond(dynMembershipFIQL); }
private void setDynMembership(final Group group, final AnyType anyType, final String dynMembershipFIQL) { SearchCond dynMembershipCond = SearchCondConverter.convert(dynMembershipFIQL); if (!dynMembershipCond.isValid()) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidSearchExpression); sce.getElements().add(dynMembershipFIQL); throw sce; } if (anyType.getKind() == AnyTypeKind.GROUP) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidAnyType); sce.getElements().add(anyType.getKind().name()); throw sce; } DynGroupMembership<?> dynMembership; if (anyType.getKind() == AnyTypeKind.ANY_OBJECT && !group.getADynMembership(anyType).isPresent()) { dynMembership = entityFactory.newEntity(ADynGroupMembership.class); dynMembership.setGroup(group); ((ADynGroupMembership) dynMembership).setAnyType(anyType); group.add((ADynGroupMembership) dynMembership); } else if (anyType.getKind() == AnyTypeKind.USER && group.getUDynMembership() == null) { dynMembership = entityFactory.newEntity(UDynGroupMembership.class); dynMembership.setGroup(group); group.setUDynMembership((UDynGroupMembership) dynMembership); } else { dynMembership = anyType.getKind() == AnyTypeKind.ANY_OBJECT ? group.getADynMembership(anyType).get() : group.getUDynMembership(); } dynMembership.setFIQLCond(dynMembershipFIQL); }