@Override protected QueryExpression itrFieldComparisonExpression(FieldComparisonExpression q, Path context) { Path r = map(applyContext(context, q.getRfield())); Path l = map(applyContext(context, q.getField())); if (r != null || l != null) { return new FieldComparisonExpression(l == null ? q.getField() : removeContext(context, l, q.getField()), q.getOp(), r == null ? q.getRfield() : removeContext(context, r, q.getRfield())); } else { return q; } }
@Override protected QueryExpression itrNaryFieldRelationalExpression(NaryFieldRelationalExpression q, Path context) { Path r = map(applyContext(context, q.getRfield())); Path l = map(applyContext(context, q.getField())); if (r != null || l != null) { return new NaryFieldRelationalExpression(l == null ? q.getField() : removeContext(context, l, q.getField()), q.getOp(), r == null ? q.getRfield() : removeContext(context, r, q.getRfield())); } else { return q; } }
@Override protected QueryExpression itrNaryFieldRelationalExpression(NaryFieldRelationalExpression q, Path context) { Path r = map(applyContext(context, q.getRfield())); Path l = map(applyContext(context, q.getField())); if (r != null || l != null) { return new NaryFieldRelationalExpression(l == null ? q.getField() : removeContext(context, l, q.getField()), q.getOp(), r == null ? q.getRfield() : removeContext(context, r, q.getRfield())); } else { return q; } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Path p = applyContext(context, q.getArray()); if (p != null) { return new ArrayContainsExpression(removeContext(context, p, q.getArray()), q.getOp(), q.getValues()); } else { return q; } }
@Override protected QueryExpression itrFieldComparisonExpression(FieldComparisonExpression q, Path context) { Path r = map(applyContext(context, q.getRfield())); Path l = map(applyContext(context, q.getField())); if (r != null || l != null) { return new FieldComparisonExpression(l == null ? q.getField() : removeContext(context, l, q.getField()), q.getOp(), r == null ? q.getRfield() : removeContext(context, r, q.getRfield())); } else { return q; } }
@Override protected QueryExpression itrArrayContainsExpression(ArrayContainsExpression q, Path context) { Path p = applyContext(context, q.getArray()); if (p != null) { return new ArrayContainsExpression(removeContext(context, p, q.getArray()), q.getOp(), q.getValues()); } else { return q; } }
@Override protected QueryExpression itrValueComparisonExpression(ValueComparisonExpression q, Path context) { Path p = map(applyContext(context, q.getField())); if (p != null) { return new ValueComparisonExpression(removeContext(context, p, q.getField()), q.getOp(), q.getRvalue()); } else { return q; } }
@Override protected QueryExpression itrNaryValueRelationalExpression(NaryValueRelationalExpression q, Path context) { Path p = map(applyContext(context, q.getField())); if (p != null) { return new NaryValueRelationalExpression(removeContext(context, p, q.getField()), q.getOp(), q.getValues()); } else { return q; } }
@Override protected QueryExpression itrValueComparisonExpression(ValueComparisonExpression q, Path context) { Path p = map(applyContext(context, q.getField())); if (p != null) { return new ValueComparisonExpression(removeContext(context, p, q.getField()), q.getOp(), q.getRvalue()); } else { return q; } }
@Override protected QueryExpression itrNaryValueRelationalExpression(NaryValueRelationalExpression q, Path context) { Path p = map(applyContext(context, q.getField())); if (p != null) { return new NaryValueRelationalExpression(removeContext(context, p, q.getField()), q.getOp(), q.getValues()); } else { return q; } }
@Override protected QueryExpression itrArrayMatchExpression(ArrayMatchExpression q, Path context) { ArrayMatchExpression x = (ArrayMatchExpression) super.itrArrayMatchExpression(q, context); Path p = map(applyContext(context, x.getArray())); if (p != null) { return new ArrayMatchExpression(removeContext(context, p, x.getArray()), x.getElemMatch()); } else { return x; } }
@Override protected QueryExpression itrArrayMatchExpression(ArrayMatchExpression q, Path context) { ArrayMatchExpression x = (ArrayMatchExpression) super.itrArrayMatchExpression(q, context); Path p = map(applyContext(context, x.getArray())); if (p != null) { return new ArrayMatchExpression(removeContext(context, p, x.getArray()), x.getElemMatch()); } else { return x; } }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { Path p = map(applyContext(context, q.getField())); if (p != null) { return new RegexMatchExpression(removeContext(context, p, q.getField()), q.getRegex(), q.isCaseInsensitive(), q.isMultiline(), q.isExtended(), q.isDotAll()); } else { return q; } }
@Override protected QueryExpression itrRegexMatchExpression(RegexMatchExpression q, Path context) { Path p = map(applyContext(context, q.getField())); if (p != null) { return new RegexMatchExpression(removeContext(context, p, q.getField()), q.getRegex(), q.isCaseInsensitive(), q.isMultiline(), q.isExtended(), q.isDotAll()); } else { return q; } }