public PageControl(int pageNumber, int pageSize, OrderingField... orderingFields) { this(pageNumber, pageSize); for (OrderingField orderingField : orderingFields) { // null fields are equivalent to not setting the ordering field at all if (orderingField.getField() != null) { this.orderingFields.add(orderingField); } } }
public void removeOrderingField(String doomedField) { for (Iterator<OrderingField> i = orderingFields.iterator(); i.hasNext();) { OrderingField field = i.next(); if (field.getField().equals(doomedField)) { i.remove(); break; } } }
public String getPrimarySortColumn() { OrderingField primaryOrderingField = getPrimaryOrderingField(); if (primaryOrderingField == null) { return null; } return primaryOrderingField.getField(); }
private static StringBuilder buildOrderBy(StringBuilder query, OrderingField... orderByFields) { boolean first = true; for (OrderingField orderingField : orderByFields) { if (first) { // TODO GH: We could see if there already is an order by clause and contribute or override it query.append(" ORDER BY "); first = false; } else { query.append(", "); } query.append(orderingField.getField()).append(" ").append(orderingField.getOrdering()); } return query; }
private static String getOrderByFragment(OrderingField... orderByFields) { boolean first = true; StringBuilder builder = new StringBuilder(); for (OrderingField orderingField : orderByFields) { if (first) { builder.append(" ORDER BY "); first = false; } else { builder.append(", "); } builder.append(orderingField.getField()).append(" ").append(orderingField.getOrdering()); } return builder.toString(); }
private void fixOrder(List<OrderingField> orderingFields) { Collections.reverse(orderingFields); if (this.currentOrderingFields != null && orderingFields.size() > 1 && orderingFields.size() == this.currentOrderingFields.size()) { for (int i = 1, sortFieldsSize = orderingFields.size(); i < sortFieldsSize; i++) { OrderingField orderingField = orderingFields.get(i); OrderingField currentOrderingField = this.currentOrderingFields.get(i); if (orderingField.getField().equals(currentOrderingField.getField()) && orderingField.getOrdering() != currentOrderingField.getOrdering()) { orderingFields.remove(i); orderingFields.add(0, orderingField); } } } } }
@Override public String toString() { StringBuilder buf = new StringBuilder("PageControl["); if (firstRecord != null) { buf.append("firstRow=").append(firstRecord); } else { buf.append("page=").append(pageNumber); } buf.append(", size=").append(pageSize); int i = 0; if (orderingFields.size() > 0) { buf.append(", sort["); for (OrderingField orderingField : orderingFields) { if (i++ != 0) { buf.append(", "); } buf.append(orderingField.getField()).append(" ").append(orderingField.getOrdering()); } buf.append("]"); } buf.append("]"); return buf.toString(); }
/** * Add a default ordering field. If the maximum number of sort fields (currently 3) are already * defined this call will have no effect. If the field is already a sort field this call will have no * effect. Otherwise, the ordering field will be appended to the existing ordering fields. * * @param defaultField * @param defaultPageOrdering */ public void addDefaultOrderingField(String defaultField, PageOrdering defaultPageOrdering) { if (orderingFields.size() >= MAX_ORDERING_FIELD_COUNT) { return; // only need to add defaults if there are less than 3 sort orders } for (OrderingField ordering : orderingFields) { if (ordering.getField().equals(defaultField)) { /* * return immediately, since we've apparently already added this sort field to the * list of OrderingFields; UI actions, in particular the integration of sort columns * on tabular displays with this PageControl object, will dictate whether or not the * PageOrdering will be reversed, but that logic occurs elsewhere */ return; } } orderingFields.add(new OrderingField(defaultField, defaultPageOrdering)); }
public void sortBy(String sortField) { boolean wasAlreadySortedOn = false; for (int i = 0, sz = orderingFields.size(); i < sz; i++) { OrderingField field = orderingFields.get(i); if (sortField.equals(field.getField())) { /* * When a user clicks on some column to sort it, that column is promoted to the primary sort column, and * the rest of the orderings move down in the list */ orderingFields.remove(i); field.flipOrdering(); orderingFields.addFirst(field); wasAlreadySortedOn = true; break; } } /* * if we weren't already sorting on this field, we'll add it as the new primary sort. however, for objects with * many, many fields we want to limit the number of sorted columns, so we'll remove any elements if the list * size exceeds MAX_ORDERING_FIELD_COUNT */ if (wasAlreadySortedOn == false) { OrderingField field = new OrderingField(sortField, PageOrdering.ASC); orderingFields.addFirst(field); if (orderingFields.size() > MAX_ORDERING_FIELD_COUNT) { orderingFields.removeLast(); } } }
private Query buildQuery(String queryString, PageControl pageControl) { boolean first = true; StringBuilder queryBuilder = new StringBuilder(queryString); for (OrderingField orderingField : pageControl.getOrderingFieldsAsArray()) { if (first) { // TODO GH: We could see if there already is an order by clause and contribute or override it queryBuilder.append(" ORDER BY "); first = false; } else { queryBuilder.append(", "); } queryBuilder.append(orderingField.getField()).append(" ").append(orderingField.getOrdering()); } Query query = entityManager.createQuery(queryBuilder.toString()); if (pageControl.getPageSize() > 0) { query.setFirstResult(pageControl.getStartRow()); query.setMaxResults(pageControl.getPageSize()); } return query; }
String fieldName = orderingField.getField(); String override = criteria.getJPQLSortOverride(fieldName); String suffix = (override == null) ? fieldName : override;
pc.truncateOrderingFields(1); // remove all but the primary sort OrderingField primary = pc.getOrderingFields().get(0); String field = primary.getField(); if (field.endsWith("Avail")) { String prefix = field.substring(0, field.length() - 5);
for (int i = 0, orderingFieldsSize = pageControl.getOrderingFields().size(); i < orderingFieldsSize; i++) { OrderingField field = pageControl.getOrderingFields().get(i); if (field.getField().equals(sortBy)) { sortFieldFound = true; writer.startElement("img", component);