private String getKind() { return builder.getModel().getKind(); }
@SuppressWarnings("unchecked") @Override public <T> List<T> objects(QueryBuilder<?> builder) { try { List<Entity> queryResult = generateResults(builder, false); List<T> objects = new ArrayList<>(); for (Entity entity : queryResult) { objects.add((T) toObject.convert(builder.getModel(), entity)); } return objects; } catch (FalsePredicateException e) { return Collections.emptyList(); } }
@SuppressWarnings("unchecked") @Override public <T> List<T> objects(QueryBuilder<?> builder) { try { QueryResultList<Entity> queryResult = generateResults(builder, false); List<T> objects = new ArrayList<>(); for (Entity entity : queryResult) { objects.add((T) toObject.convert(builder.getModel(), entity)); } return objects; } catch (FalsePredicateException e) { return Collections.emptyList(); } }
private String propertyLink(String fieldName, String actualFieldName, boolean scalar) { FieldModel fieldModel = builder.getModel().getFieldModel(fieldName); String retrieveOperator = scalar ? ">>" : ">"; if (fieldModel.isId()) { return "key"; } if (fieldModel.isNumber()) { return String.format("cast(properties-%s'%s' as numeric)", retrieveOperator, actualFieldName); } return String.format("properties-%s'%s'", retrieveOperator, actualFieldName); }
@SuppressWarnings("unchecked") @Override public <T> List<IdRef<T>> ids(QueryBuilder<?> builder) { try { QueryResultList<Entity> queryResult = generateResults(builder, true); List<IdRef<T>> ids = new ArrayList<>(); for (Entity entity : queryResult) { ids.add((IdRef<T>) IdRefToKey.toIdRef(r, entity.getKey(), builder.getModel())); } return ids; } catch (FalsePredicateException e) { return Collections.emptyList(); } }
@SuppressWarnings("unchecked") @Override public <T> List<IdRef<T>> ids(QueryBuilder<?> builder) { try { List<Entity> queryResult = generateResults(builder, false); List<IdRef<T>> ids = new ArrayList<>(); for (Entity entity : queryResult) { ids.add((IdRef<T>) IdRefToKey.toIdRef(r, entity.getKey(), builder.getModel())); } return ids; } catch (FalsePredicateException e) { return Collections.emptyList(); } }
private boolean isList(String fieldName) { FieldModel fieldModel = builder.getModel().getFieldModel(fieldName); return fieldModel.isList(); }
protected int getAncetorNumber(IdRef<?> parentId) { return builder.getModel().getAncestorNumber(parentId.getClazz()); }
private String order() { if (CollectionUtils.isEmpty(builder.getPreOrders())) { return ""; } Class<?> clazz = builder.getModel().getClazz(); boolean first = true; StringBuilder sb = new StringBuilder(); sb.append(" order by "); for (QueryOrder order : builder.getPreOrders()) { if (!first) { sb.append(", "); } else { first = false; } sb.append(String.format("properties->>'%s'", getActualFieldName(order.getProperty(), clazz))); if (order.isDesc()) { sb.append(" desc"); } } return sb.toString(); }
public static <T> void beforeQuery(QueryBuilder<T> query) { invokeHooks(query.getRepository(), query.getModel().getClazz(), query, "beforeQuery"); }
public static <T> void afterQuery(QueryBuilder<T> query) { invokeHooks(query.getRepository(), query.getModel().getClazz(), query, "afterQuery"); }
private void prepareQueryOrder(QueryBuilder<?> builder, Query q) { if (builder.getPreOrders().isEmpty()) { return; } for (QueryOrder order : builder.getPreOrders()) { String string = getActualFieldName(order.getProperty(), builder.getModel().getClazz()); q.addSort(string, getSortDirection(order)); } }
private List<Object> queryWhere(QueryBuilder<?> builder) { List<Object> objectsInStore = MockStore.list(builder.getModel().getClazz(), builder.getParentId()); BaseCondition condition = builder.getCondition(); List<Object> result = new ArrayList<Object>(); for (Object object : objectsInStore) { if (condition != null && !condition.evaluate(object)) { continue; } result.add(object); } return result; }
private PreparedQuery prepareQuery(QueryBuilder<?> builder, boolean keysOnly) throws FalsePredicateException { Query q = new Query(builder.getModel().getKind()); if (keysOnly) { q.setKeysOnly(); } prepareQueryAncestor(builder, q); prepareQueryWhere(builder, q); prepareQueryOrder(builder, q); return datastore().prepare(q); }
private Filter createSimpleFilter(QueryBuilder<?> builder, SimpleCondition condition) throws FalsePredicateException { String field = condition.getField(); Class<?> clazz = builder.getModel().getClazz(); Object whereValue = condition.getWhereValue(); WhereOperator whereOperator = condition.getWhereOperator(); String actualFieldName = getActualFieldName(field, clazz); Object actualValue = getActualFieldValue(field, clazz, whereValue); if (whereOperator == WhereOperator.IN && listSize(whereValue) == 0) { throw new FalsePredicateException(); } return new FilterPredicate(actualFieldName, getFilterOperator(whereOperator), actualValue); }
private String simpleWhere(SimpleCondition condition) throws FalsePredicateException { String fieldName = condition.getField(); Class<?> clazz = builder.getModel().getClazz(); Object whereValue = condition.getWhereValue(); WhereOperator whereOperator = condition.getWhereOperator(); String actualFieldName = getActualFieldName(fieldName, clazz); Object actualValue = getActualFieldValue(fieldName, clazz, whereValue); if (whereOperator == WhereOperator.IN) { if (listSize(whereValue) == 0) { throw new FalsePredicateException(); } return whereCollectionValue(fieldName, actualFieldName, whereOperator, (Collection<?>) actualValue); } return whereSingleValue(fieldName, actualFieldName, whereOperator, actualValue); }