private Path applyContext(Path context, Path p) { if (context.isEmpty()) { return p; } else { return new Path(context, p); } }
private Path addPrefix(Path fieldName) { if (nestedFieldPrefix.isEmpty()) { return fieldName; } else { return new Path(nestedFieldPrefix, fieldName); } }
private Path addPrefix(Path fieldName) { if (nestedFieldPrefix.isEmpty()) { return fieldName; } else { return new Path(nestedFieldPrefix, fieldName); } }
private Path applyContext(Path context, Path p) { if (context.isEmpty()) { return p; } else { return new Path(context, p); } }
private static boolean isFieldQueried(Path field, Path qField, Path context) { LOGGER.debug("Checking if field {} is included in qfield={} with context={}", field, qField, context); Path absField = context.isEmpty() ? qField : new Path(context, qField); if (field.matchingPrefix(absField)) { LOGGER.debug("Field {} is queried", absField); return true; } else { LOGGER.debug("Field {} is not queried", absField); return false; } }
private static boolean isFieldQueried(Path field, Path qField, Path context) { LOGGER.debug("Checking if field {} is included in qfield={} with context={}", field, qField, context); Path absField = context.isEmpty() ? qField : new Path(context, qField); if (field.matchingPrefix(absField)) { LOGGER.debug("Field {} is queried", absField); return true; } else { LOGGER.debug("Field {} is not queried", absField); return false; } }
private Path removeContext(Path context, Path p, Path original) { if (context.isEmpty()) { return p; } else if (context.matchingPrefix(p)) { return p.suffix(-context.numSegments()); } else { return original; } } }
private Path toRelative(Path field, Path context) { Path abs = context.isEmpty() ? field : new Path(context, field); if (relativeTo.matchingPrefix(abs)) { return abs.suffix(-relativeTo.numSegments()); } else { throw new IllegalArgumentException("Cannot write " + abs + " relative to " + relativeTo); } } }
private Path toRelative(Path field, Path context) { Path abs = context.isEmpty() ? field : new Path(context, field); if (relativeTo.matchingPrefix(abs)) { return abs.suffix(-relativeTo.numSegments()); } else { throw new IllegalArgumentException("Cannot write " + abs + " relative to " + relativeTo); } } }
private Path removeContext(Path context, Path p, Path original) { if (context.isEmpty()) { return p; } else if (context.matchingPrefix(p)) { return p.suffix(-context.numSegments()); } else { return original; } } }
@Override protected Projection.Inclusion projectArray(Path p, QueryEvaluationContext ctx) { LOGGER.debug("Evaluating array query projection for {}", p); Path contextRoot = ctx.getPath(); QueryEvaluationContext nestedContext = ctx.getNestedContext(contextRoot.isEmpty() ? p : p.suffix(-contextRoot.numSegments())); if (query.evaluate(nestedContext)) { LOGGER.debug("query evaluates to true"); return isIncluded() ? Projection.Inclusion.explicit_inclusion : Projection.Inclusion.explicit_exclusion; } return isIncluded() ? Projection.Inclusion.explicit_exclusion : Projection.Inclusion.explicit_inclusion; } }
public ChildSlot(Path localContainerName, ResolvedReferenceField reference) { this.localContainerName = localContainerName; this.referenceFieldName = reference.getName(); this.reference = reference; this.slotFieldName = localContainerName.isEmpty() ? new Path(referenceFieldName) : new Path(localContainerName, new Path(referenceFieldName)); }
public ChildSlot(Path localContainerName, ResolvedReferenceField reference) { this.localContainerName = localContainerName; this.referenceFieldName = reference.getName(); this.reference = reference; this.slotFieldName = localContainerName.isEmpty() ? new Path(referenceFieldName) : new Path(localContainerName, new Path(referenceFieldName)); }
@Override protected Boolean projectArray(Path p, QueryEvaluationContext ctx) { Path contextRoot = ctx.getPath(); QueryEvaluationContext nestedContext = ctx.getNestedContext(contextRoot.isEmpty() ? p : p.suffix(-contextRoot.numSegments())); if (query.evaluate(nestedContext)) { setLastMatch(true); return isIncluded() ? Boolean.TRUE : Boolean.FALSE; } return null; } }
@Override protected QueryExpression itrValueComparisonExpression(ValueComparisonExpression q, Path context) { QueryFieldInfo qfi = findFieldInfo(q.getField(), q); if (qfi.getFieldEntity() != currentEntity) { return new TruePH(); } else if (qfi.getFieldNameInClause().equals(qfi.getEntityRelativeFieldName()) && nestedFieldPrefix.isEmpty()) { return q; } else { return new ValueComparisonExpression(addPrefix(qfi.getEntityRelativeFieldName()), q.getOp(), q.getRvalue()); } }
@Override protected QueryExpression itrNaryValueRelationalExpression(NaryValueRelationalExpression q, Path context) { QueryFieldInfo qfi = findFieldInfo(q.getField(), q); if (qfi.getFieldEntity() != currentEntity) { return new TruePH(); } else if (qfi.getFieldNameInClause().equals(qfi.getEntityRelativeFieldName()) && nestedFieldPrefix.isEmpty()) { return q; } else { return new NaryValueRelationalExpression(addPrefix(qfi.getEntityRelativeFieldName()), q.getOp(), q.getValues()); } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { QueryFieldInfo qfi = findFieldInfo(q.getArray(), q); if (qfi.getFieldEntity() != currentEntity) { return new TruePH(); } else if (qfi.getFieldNameInClause().equals(qfi.getEntityRelativeFieldName()) && nestedFieldPrefix.isEmpty()) { return q; } else { return new ArrayContainsExpression(addPrefix(qfi.getEntityRelativeFieldName()), q.getOp(), q.getValues()); } }
@Override protected QueryExpression itrNaryValueRelationalExpression(NaryValueRelationalExpression q, Path context) { QueryFieldInfo qfi = findFieldInfo(q.getField(), q); if (qfi.getFieldEntity() != currentEntity) { return new TruePH(); } else if (qfi.getFieldNameInClause().equals(qfi.getEntityRelativeFieldName()) && nestedFieldPrefix.isEmpty()) { return q; } else { return new NaryValueRelationalExpression(addPrefix(qfi.getEntityRelativeFieldName()), q.getOp(), q.getValues()); } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { QueryFieldInfo qfi = findFieldInfo(q.getArray(), q); if (qfi.getFieldEntity() != currentEntity) { return new TruePH(); } else if (qfi.getFieldNameInClause().equals(qfi.getEntityRelativeFieldName()) && nestedFieldPrefix.isEmpty()) { return q; } else { return new ArrayContainsExpression(addPrefix(qfi.getEntityRelativeFieldName()), q.getOp(), q.getValues()); } }
@Override protected QueryExpression itrValueComparisonExpression(ValueComparisonExpression q, Path context) { QueryFieldInfo qfi = findFieldInfo(q.getField(), q); if (qfi.getFieldEntity() != currentEntity) { return new TruePH(); } else if (qfi.getFieldNameInClause().equals(qfi.getEntityRelativeFieldName()) && nestedFieldPrefix.isEmpty()) { return q; } else { return new ValueComparisonExpression(addPrefix(qfi.getEntityRelativeFieldName()), q.getOp(), q.getRvalue()); } }