public static SortKey fromJson(ObjectNode node) { if (node.size() != 1) { throw Error.get(QueryConstants.ERR_INVALID_SORT, node.toString()); } String fieldString = node.fieldNames().next(); String dir = node.get(fieldString).asText(); Path field = new Path(fieldString); boolean desc; switch (dir) { case "$asc": desc = false; break; case "$desc": desc = true; break; default: throw Error.get(QueryConstants.ERR_INVALID_SORT, node.toString()); } return new SortKey(field, desc); } }
public static SortKey fromJson(ObjectNode node) { if (node.size() != 1) { throw Error.get(QueryConstants.ERR_INVALID_SORT, node.toString()); } String fieldString = node.fieldNames().next(); String dir = node.get(fieldString).asText(); Path field = new Path(fieldString); boolean desc; switch (dir) { case "$asc": desc = false; break; case "$desc": desc = true; break; default: throw Error.get(QueryConstants.ERR_INVALID_SORT, node.toString()); } return new SortKey(field, desc); } }
private void ensureIdIndex(EntityInfo ei) { LOGGER.debug("ensureIdIndex: begin"); Indexes indexes = ei.getIndexes(); // We are looking for a unique index on _id boolean found = false; for (Index ix : indexes.getIndexes()) { List<SortKey> fields = ix.getFields(); if (fields.size() == 1 && fields.get(0).getField().equals(Translator.ID_PATH) && ix.isUnique()) { found = true; break; } } if (!found) { LOGGER.debug("Adding _id index"); Index idIndex = new Index(); idIndex.setUnique(true); List<SortKey> fields = new ArrayList<>(); fields.add(new SortKey(Translator.ID_PATH, false)); idIndex.setFields(fields); List<Index> ix = indexes.getIndexes(); ix.add(idIndex); indexes.setIndexes(ix); } else { LOGGER.debug("_id index exists"); } LOGGER.debug("ensureIdIndex: end"); }
private void validateIndexFields(EntityInfo ei) { for (Index ix : ei.getIndexes().getIndexes()) { List<SortKey> fields = ix.getFields(); List<SortKey> newFields = null; boolean copied = false; int i = 0; for (SortKey key : fields) { Path p = key.getField(); Path newPath = translateIndexPath(p); if (!p.equals(newPath)) { SortKey newKey = new SortKey(newPath, key.isDesc()); if (!copied) { newFields = new ArrayList<>(); newFields.addAll(fields); copied = true; } newFields.set(i, newKey); } } if (copied) { ix.setFields(newFields); LOGGER.debug("Index rewritten as {}", ix); } } }
dir = "$asc"; SortKey sort = new SortKey(new Path(fld), "$desc".equals(dir)); f.add(sort);