void validateOrdering( QueryDescriptor query, Entity root, Ordering ordering, ValidationResult validationResult) { // validate paths in ordering String path = ordering.getSortSpecString(); Iterator<CayenneMapEntry> it = root.resolvePathComponents(path); while (it.hasNext()) { try { it.next(); } catch (ExpressionException e) { addFailure(validationResult, query, "Invalid ordering path: '%s'", path); } } }
public Object getValueAt(int row, int column) { Ordering ordering = getOrdering(row); switch (column) { case 0: return ordering.getSortSpecString(); case 1: return ordering.isAscending() ? Boolean.TRUE : Boolean.FALSE; case 2: return ordering.isCaseInsensitive() ? Boolean.TRUE : Boolean.FALSE; default: throw new IndexOutOfBoundsException("Invalid column: " + column); } }
void addOrdering() { String orderingPath = getSelectedPath(); if (orderingPath == null) { return; } // check if such ordering already exists for (Ordering ord : selectQuery.getOrderings()) { if (orderingPath.equals(ord.getSortSpecString())) { return; } } selectQuery.addOrdering(new Ordering(orderingPath, SortOrder.ASCENDING)); int index = selectQuery.getOrderings().size() - 1; OrderingModel model = (OrderingModel) table.getModel(); model.fireTableRowsInserted(index, index); mediator.fireQueryEvent(new QueryEvent(SelectQueryOrderingTab.this, selectQuery)); }
public Boolean isValidParameterNames(SelectQueryDescriptor query) { if (query.getQualifier() == null) { return true; } Map<String, String> queryParameters = queriesMap.get(query.getName()); if (queryParameters == null) { try { queryParameters = getParameterNames(query.getQualifier(), query.getRoot()); } catch (Exception e) { // if we have wrong path in queryParameters return false. return false; } } for (Ordering ordering : query.getOrderings()) { // validate paths in ordering String path = ordering.getSortSpecString(); Iterator<CayenneMapEntry> it = ((ObjEntity) query.getRoot()).resolvePathComponents(path); while (it.hasNext()) { try { it.next(); } catch (ExpressionException e) { // if we have wrong path in orderings return false. return false; } } } return true; }
for(Ordering ordering: ((SelectQuery)query).getOrderings()) { String path = ordering.getSortSpecString(); Iterator<CayenneMapEntry> it = ((ObjEntity)query.getRoot()).resolvePathComponents(path); while (it.hasNext()) {
key.append('/').append(o.getSortSpecString()); if (!o.isAscending()) { key.append(":d");
private void collectOrdering(ResourceEntity<?> resourceEntity, Sort sort) { String property = sort.getProperty(); if (property != null && !property.isEmpty()) { // TODO: do we need to support nested ID? AgEntity<?> entity = resourceEntity.getAgEntity(); // note using "toString" instead of "getPath" to convert ASTPath to // String representation. This ensures "db:" prefix is preserved if // present property = pathCache.getPathDescriptor(entity, new ASTObjPath(sort.getProperty())).getPathExp().toString(); // check for dupes... for (Ordering o : resourceEntity.getOrderings()) { if (property.equals(o.getSortSpecString())) { return; } } Dir direction = sort.getDirection(); if (direction == null) { direction = Dir.ASC; } SortOrder so = direction == Dir.ASC ? SortOrder.ASCENDING : SortOrder.DESCENDING; resourceEntity.getOrderings().add(new Ordering(property, so)); } } }
@Test public void testProcess_Array() { Sort sort = new Sort(Arrays.asList( new Sort("name"), new Sort("address"))); merger.merge(entity, sort); assertEquals(2, entity.getOrderings().size()); Iterator<Ordering> it = entity.getOrderings().iterator(); Ordering o1 = it.next(); Ordering o2 = it.next(); Assert.assertEquals(_E2.NAME.getName(), o1.getSortSpecString()); assertEquals(_E2.ADDRESS.getName(), o2.getSortSpecString()); }
@Test public void testProcess_Simple() { Sort sort = new Sort("name"); merger.merge(entity, sort); assertEquals(1, entity.getOrderings().size()); Iterator<Ordering> it = entity.getOrderings().iterator(); Ordering o1 = it.next(); assertEquals(_E2.NAME.getName(), o1.getSortSpecString()); }
@Test public void testSelectRequest_Sort() { SelectContext<E2> context = new SelectContext<>(E2.class); Sort sort = new Sort(Arrays.asList( new Sort("name", Dir.DESC), new Sort("address", Dir.ASC))); context.setRawRequest(AgRequest.builder().sort(sort).build()); createEntityStage.execute(context); ResourceEntity<E2> resourceEntity = context.getEntity(); assertEquals(2, resourceEntity.getOrderings().size()); Iterator<Ordering> it = resourceEntity.getOrderings().iterator(); Ordering o1 = it.next(); Ordering o2 = it.next(); assertEquals(SortOrder.DESCENDING, o1.getSortOrder()); assertEquals("name", o1.getSortSpecString()); assertEquals(SortOrder.ASCENDING, o2.getSortOrder()); assertEquals("address", o2.getSortSpecString()); }
@Test public void testSelectRequest_SortSimple_NoDir() { SelectContext<E2> context = new SelectContext<>(E2.class); Sort sort = new Sort(E2.NAME.getName()); context.setRawRequest(AgRequest.builder().sort(sort).build()); createEntityStage.execute(context); ResourceEntity<E2> resourceEntity = context.getEntity(); assertEquals(1, resourceEntity.getOrderings().size()); Ordering o1 = resourceEntity.getOrderings().iterator().next(); assertEquals(SortOrder.ASCENDING, o1.getSortOrder()); assertEquals(E2.NAME.getName(), o1.getSortSpecString()); }
@Test public void testSelectRequest_SortSimple_ASC() { SelectContext<E2> context = new SelectContext<>(E2.class); Sort sort = new Sort(E2.NAME.getName()); context.setRawRequest(AgRequest.builder() .sort(sort) .sortDirection(Dir.ASC) .build()); createEntityStage.execute(context); ResourceEntity<E2> resourceEntity = context.getEntity(); assertEquals(1, resourceEntity.getOrderings().size()); Ordering o1 = resourceEntity.getOrderings().iterator().next(); assertEquals(SortOrder.ASCENDING, o1.getSortOrder()); assertEquals(E2.NAME.getName(), o1.getSortSpecString()); }
@Test public void testSelectRequest_Sort_Dupes() { SelectContext<E2> context = new SelectContext<>(E2.class); Sort sort = new Sort(Arrays.asList( new Sort("name", Dir.DESC), new Sort("name", Dir.ASC))); context.setRawRequest(AgRequest.builder().sort(sort).build()); createEntityStage.execute(context); ResourceEntity<E2> resourceEntity = context.getEntity(); assertEquals(1, resourceEntity.getOrderings().size()); Iterator<Ordering> it = resourceEntity.getOrderings().iterator(); Ordering o1 = it.next(); assertEquals(SortOrder.DESCENDING, o1.getSortOrder()); assertEquals(E2.NAME.getName(), o1.getSortSpecString()); }
@Test public void testSelectRequest_SortSimple_DESC() { SelectContext<E2> context = new SelectContext<>(E2.class); Sort sort = new Sort(E2.NAME.getName()); context.setRawRequest(AgRequest.builder() .sort(sort) .sortDirection(Dir.DESC) .build()); createEntityStage.execute(context); ResourceEntity<E2> resourceEntity = context.getEntity(); assertEquals(1, resourceEntity.getOrderings().size()); Ordering o1 = resourceEntity.getOrderings().iterator().next(); assertEquals(SortOrder.DESCENDING, o1.getSortOrder()); assertEquals(E2.NAME.getName(), o1.getSortSpecString()); }