@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 String toOrderByStatement(final List<OrderByClause> orderByClauses) { StringBuilder statement = new StringBuilder(); for (OrderByClause clause : orderByClauses) { String field = clause.getField().trim(); if (ReflectionUtils.findField(JPAReportExec.class, field) != null) { statement.append("e.").append(field).append(' ').append(clause.getDirection().name()); } } if (statement.length() == 0) { statement.append("ORDER BY e.id DESC"); } else { statement.insert(0, "ORDER BY "); } return statement.toString(); }
protected List<OrderByClause> getOrderByClauses(final String orderBy) { if (StringUtils.isBlank(orderBy)) { return Collections.<OrderByClause>emptyList(); } List<OrderByClause> result = new ArrayList<>(); for (String clause : orderBy.split(",")) { String[] elems = clause.split(" "); if (elems.length > 0 && StringUtils.isNotBlank(elems[0])) { OrderByClause obc = new OrderByClause(); obc.setField(elems[0].trim()); if (elems.length > 1 && StringUtils.isNotBlank(elems[1])) { obc.setDirection(elems[1].trim().equalsIgnoreCase(OrderByClause.Direction.ASC.name()) ? OrderByClause.Direction.ASC : OrderByClause.Direction.DESC); } result.add(obc); } } return result; }
protected void parseOrderByForPlainSchema( final SearchSupport svs, final OrderBySupport obs, final OrderBySupport.Item item, final OrderByClause clause, final PlainSchema schema, final String fieldName) { // keep track of involvement of non-mandatory schemas in the order by clauses obs.nonMandatorySchemas = !"true".equals(schema.getMandatoryCondition()); if (schema.isUniqueConstraint()) { obs.views.add(svs.asSearchViewSupport().uniqueAttr()); item.select = new StringBuilder(). append(svs.asSearchViewSupport().uniqueAttr().alias).append('.'). append(svs.fieldName(schema.getType())). append(" AS ").append(fieldName).toString(); item.where = new StringBuilder(). append(svs.asSearchViewSupport().uniqueAttr().alias). append(".schema_id='").append(fieldName).append("'").toString(); item.orderBy = fieldName + " " + clause.getDirection().name(); } else { obs.views.add(svs.asSearchViewSupport().attr()); item.select = new StringBuilder(). append(svs.asSearchViewSupport().attr().alias).append('.').append(svs.fieldName(schema.getType())). append(" AS ").append(fieldName).toString(); item.where = new StringBuilder(). append(svs.asSearchViewSupport().attr().alias). append(".schema_id='").append(fieldName).append("'").toString(); item.orderBy = fieldName + " " + clause.getDirection().name(); } }
OrderByClause orderByClause = new OrderByClause(); orderByClause.setField("name"); orderByClause.setDirection(OrderByClause.Direction.ASC); List<Group> matching = searchDAO.search( SyncopeConstants.FULL_ADMIN_REALMS,
private String toOrderByStatement(final List<OrderByClause> orderByClauses) { StringBuilder statement = new StringBuilder(); for (OrderByClause clause : orderByClauses) { String field = clause.getField().trim(); if (ReflectionUtils.findField(JPAAccessToken.class, field) != null) { statement.append("e.").append(field).append(' ').append(clause.getDirection().name()); } } if (statement.length() == 0) { statement.append("ORDER BY e.expiryTime DESC"); } else { statement.insert(0, "ORDER BY "); } return statement.toString(); }
private String toOrderByStatement(final List<OrderByClause> orderByClauses) { StringBuilder statement = new StringBuilder(); for (OrderByClause clause : orderByClauses) { String field = clause.getField().trim(); if (ReflectionUtils.findField(JPATaskExec.class, field) != null) { statement.append("e.").append(field).append(' ').append(clause.getDirection().name()); } } if (statement.length() == 0) { statement.append("ORDER BY e.id DESC"); } else { statement.insert(0, "ORDER BY "); } return statement.toString(); }
String field = clause.getField().trim(); switch (field) { case "latestExecStatus": subStatement.append(field).append(' ').append(clause.getDirection().name()).append(','); });
queryString.append(" ORDER BY "); orderByClauses.forEach(clause -> { String field = clause.getField().trim(); boolean ack = true; if ("resource".equals(field)) { if (clause.getDirection() == OrderByClause.Direction.ASC) { queryString.append(" ASC"); } else {
OrderBySupport.Item item = new OrderBySupport.Item(); if (anyUtils.getField(clause.getField()) == null) { PlainSchema schema = schemaDAO.find(clause.getField()); if (schema != null) { if (schema.isUniqueConstraint()) { throw invalidSearch; parseOrderByForPlainSchema(svs, obs, item, clause, schema, clause.getField()); String fieldName = "key".equals(clause.getField()) ? "id" : clause.getField(); item.orderBy = svs.field().alias + "." + fieldName + " " + clause.getDirection().name();
-> new SortKey(clause.getField(), clause.getDirection() == OrderByClause.Direction.ASC)). collect(Collectors.toList()));