public static QueryEvaluator getInstance(QueryExpression expr, EntityMetadata md) { return getInstance(expr, md.getFieldTreeRoot()); }
public static QueryEvaluator getInstance(QueryExpression expr, EntityMetadata md) { return getInstance(expr, md.getFieldTreeRoot()); }
public Filter(ExecutionBlock block, Source<ResultDocument> source, QueryExpression q) { super(block); this.source = source; this.q = q; this.qe = QueryEvaluator.getInstance(q, block.getMetadata()); }
public Filter(ExecutionBlock block, Source<ResultDocument> source, QueryExpression q) { super(block); this.source = source; this.q = q; this.qe = QueryEvaluator.getInstance(q, block.getMetadata()); }
public static QueryEvaluator getInstance(QueryExpression expr, EntityMetadata md) { return getInstance(expr, md.getFieldTreeRoot()); }
public NaryLogicalExpressionEvaluator(NaryLogicalExpression expr, FieldTreeNode context) { List<QueryExpression> queries = expr.getQueries(); evaluators = new ArrayList<>(queries.size()); for (QueryExpression q : queries) { evaluators.add(QueryEvaluator.getInstance(q, context)); } operator = expr.getOp(); }
public NaryLogicalExpressionEvaluator(NaryLogicalExpression expr, FieldTreeNode context) { List<QueryExpression> queries = expr.getQueries(); evaluators = new ArrayList<>(queries.size()); for (QueryExpression q : queries) { evaluators.add(QueryEvaluator.getInstance(q, context)); } operator = expr.getOp(); }
public NaryLogicalExpressionEvaluator(NaryLogicalExpression expr, FieldTreeNode context) { List<QueryExpression> queries = expr.getQueries(); evaluators = new ArrayList<>(queries.size()); for (QueryExpression q : queries) { evaluators.add(QueryEvaluator.getInstance(q, context)); } operator = expr.getOp(); }
public UnaryLogicalExpressionEvaluator(UnaryLogicalExpression expr, FieldTreeNode context) { evaluator = QueryEvaluator.getInstance(expr.getQuery(), context); operator = expr.getOp(); }
public UnaryLogicalExpressionEvaluator(UnaryLogicalExpression expr, FieldTreeNode context) { evaluator = QueryEvaluator.getInstance(expr.getQuery(), context); operator = expr.getOp(); }
public UnaryLogicalExpressionEvaluator(UnaryLogicalExpression expr, FieldTreeNode context) { evaluator = QueryEvaluator.getInstance(expr.getQuery(), context); operator = expr.getOp(); }
/** * Ctor * * @param p The projection expression * @param ctxPath The absolute path relative to which this is to be * interpreted * @param context The metadata node at which this is to be interpreted */ public ArrayQueryProjector(ArrayQueryMatchProjection p, Path ctxPath, FieldTreeNode context) { super(p, ctxPath, context); FieldTreeNode nestedCtx = context.resolve(p.getField()); query = QueryEvaluator.getInstance(p.getMatch(), ((ArrayField) nestedCtx).getElement()); }
/** * Ctor * * @param p The projection expression * @param ctxPath The absolute path relative to which this is to be * interpreted * @param context The metadata node at which this is to be interpreted */ public ArrayQueryProjector(ArrayQueryMatchProjection p, Path ctxPath, FieldTreeNode context) { super(p, ctxPath, context); FieldTreeNode nestedCtx = context.resolve(p.getField()); query = QueryEvaluator.getInstance(p.getMatch(), ((ArrayField) nestedCtx).getElement()); }
/** * Ctor * * @param p The projection expression * @param ctxPath The absolute path relative to which this is to be * interpreted * @param context The metadata node at which this is to be interpreted */ public ArrayQueryProjector(ArrayQueryMatchProjection p, Path ctxPath, FieldTreeNode context) { super(p, ctxPath, context); FieldTreeNode nestedCtx = context.resolve(p.getField()); query = QueryEvaluator.getInstance(p.getMatch(), ((ArrayField) nestedCtx).getElement()); }
public ArrayMatchEvaluator(ArrayMatchExpression expr, FieldTreeNode context) { // field needs to be resolved relative to the current context field = expr.getArray(); FieldTreeNode node = context.resolve(field); if (node == null) { throw new EvaluationError(expr); } if (node instanceof ArrayField) { elem = ((ArrayField) node).getElement(); ev = QueryEvaluator.getInstance(expr.getElemMatch(), elem); } else { throw new EvaluationError(expr, CrudConstants.ERR_EXPECTED_ARRAY + field); } }
public ArrayMatchEvaluator(ArrayMatchExpression expr, FieldTreeNode context) { // field needs to be resolved relative to the current context field = expr.getArray(); FieldTreeNode node = context.resolve(field); if (node == null) { throw new EvaluationError(expr); } if (node instanceof ArrayField) { elem = ((ArrayField) node).getElement(); ev = QueryEvaluator.getInstance(expr.getElemMatch(), elem); } else { throw new EvaluationError(expr, CrudConstants.ERR_EXPECTED_ARRAY + field); } }
private void associateDocsWithIndex(CompositeMetadata childMetadata, ResultDocument parentDoc, Path destFieldName, BindQuery binders, List<ResultDocument> childDocs, AssociationQuery aq, MemDocIndex childIndex) { LOGGER.debug("Associating docs using index"); QueryExpression boundQuery = binders.iterate(aq.getQuery()); LOGGER.debug("Association query:{}", boundQuery); QueryEvaluator qeval = QueryEvaluator.getInstance(boundQuery, childMetadata); AnalyzeQuery analyzer=new AnalyzeQuery(block.rootMd,aq.getReference()); analyzer.iterate(boundQuery); List<QueryFieldInfo> qfi=analyzer.getFieldInfo(); GetIndexLookupSpec gils=new GetIndexLookupSpec(qfi); LookupSpec ls=gils.iterate(boundQuery); LOGGER.debug("Lookup spec:"+ls); List<ResultDocument> docs=reorder(childDocs,childIndex.find(ls)); ArrayNode destNode=null; for (ResultDocument childDoc : docs) { if (qeval.evaluate(childDoc.getDoc()).getResult()) { destNode=ensureDestNodeExists(parentDoc,destNode,destFieldName); destNode.add(childDoc.getDoc().getRoot()); } } }
private void associateDocsWithIndex(CompositeMetadata childMetadata, ResultDocument parentDoc, Path destFieldName, BindQuery binders, List<ResultDocument> childDocs, AssociationQuery aq, MemDocIndex childIndex) { LOGGER.debug("Associating docs using index"); QueryExpression boundQuery = binders.iterate(aq.getQuery()); LOGGER.debug("Association query:{}", boundQuery); QueryEvaluator qeval = QueryEvaluator.getInstance(boundQuery, childMetadata); AnalyzeQuery analyzer=new AnalyzeQuery(block.rootMd,aq.getReference()); analyzer.iterate(boundQuery); List<QueryFieldInfo> qfi=analyzer.getFieldInfo(); GetIndexLookupSpec gils=new GetIndexLookupSpec(qfi); LookupSpec ls=gils.iterate(boundQuery); LOGGER.debug("Lookup spec:"+ls); List<ResultDocument> docs=reorder(childDocs,childIndex.find(ls)); ArrayNode destNode=null; for (ResultDocument childDoc : docs) { if (qeval.evaluate(childDoc.getDoc()).getResult()) { destNode=ensureDestNodeExists(parentDoc,destNode,destFieldName); destNode.add(childDoc.getDoc().getRoot()); } } }
public ArrayMatchEvaluator(ArrayMatchExpression expr, FieldTreeNode context) { // field needs to be resolved relative to the current context field = expr.getArray(); FieldTreeNode node = context.resolve(field); if (node == null) { throw new EvaluationError(expr); } if (node instanceof ArrayField) { ArrayElement el = ((ArrayField) node).getElement(); if (el instanceof ObjectArrayElement) { elem = (ObjectArrayElement) el; ev = QueryEvaluator.getInstance(expr.getElemMatch(), elem); } else { throw new EvaluationError(expr, CrudConstants.ERR_EXPECTED_OBJECT_ARRAY + field); } } else { throw new EvaluationError(expr, CrudConstants.ERR_EXPECTED_ARRAY + field); } }
public ForEachExpressionEvaluator(JsonNodeFactory factory, FieldTreeNode context, ForEachExpression expr) { this.factory = factory; // Resolve the field, make sure it is an array field = expr.getField(); FieldTreeNode md = context.resolve(field); if (md instanceof ArrayField) { fieldMd = (ArrayField) md; } else { throw new EvaluationError(CrudConstants.ERR_FIELD_NOT_ARRAY + field); } if (field.nAnys() > 0) { throw new EvaluationError(CrudConstants.ERR_PATTERN_NOT_EXPECTED + field); } // Get a query evaluator QueryExpression query = expr.getQuery(); if (query instanceof AllMatchExpression) { queryEvaluator = new AllEvaluator(); } else { queryEvaluator = QueryEvaluator.getInstance(query, fieldMd.getElement()); } // Get an updater to execute on each matching element UpdateExpression upd = expr.getUpdate(); if (upd instanceof RemoveElementExpression) { updater = new RemoveEvaluator(fieldMd.getElement().getFullPath()); } else { updater = Updater.getInstance(factory, fieldMd.getElement(), upd); } }