@Override public void visit( Between between ) { strategy.visit(between); enqueue(between.getOperand()); enqueue(between.getLowerBound()); enqueue(between.getUpperBound()); visitNext(); }
@Override public void visit( Between between ) { strategy.visit(between); enqueue(between.getOperand()); enqueue(between.getLowerBound()); enqueue(between.getUpperBound()); visitNext(); }
@Override public void visit( Between between ) { between.getOperand().accept(this); append(" BETWEEN "); between.getLowerBound().accept(this); if (!between.isLowerBoundIncluded()) append(" EXCLUSIVE"); append(" AND "); between.getUpperBound().accept(this); if (!between.isUpperBoundIncluded()) append(" EXCLUSIVE"); }
@Override public void visit( Between between ) { between.getOperand().accept(this); append(" BETWEEN "); between.getLowerBound().accept(this); if (!between.isLowerBoundIncluded()) append(" EXCLUSIVE"); append(" AND "); between.getUpperBound().accept(this); if (!between.isUpperBoundIncluded()) append(" EXCLUSIVE"); }
@Test public void shouldParseConstraintFromStringWithValidBetweenExpressionUsing() { NamedSelector selector = new NamedSelector(selectorName("tableA")); Constraint constraint = parser.parseConstraint(tokens("tableA.id BETWEEN 'lower' AND 'upper'"), typeSystem, selector); assertThat(constraint, is(instanceOf(Between.class))); Between between = (Between)constraint; assertThat(between.isLowerBoundIncluded(), is(true)); assertThat(between.isUpperBoundIncluded(), is(true)); assertThat(between.getOperand(), is(instanceOf(PropertyValue.class))); PropertyValue operand = (PropertyValue)between.getOperand(); assertThat(operand.selectorName(), is(selector.name())); assertThat(operand.getPropertyName(), is("id")); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(literal("lower"))); assertThat(between.getUpperBound(), is(literal("upper"))); }
DynamicOperand operand = between.getOperand(); DynamicOperand newOperand = rewrite(context, operand); if (newOperand != operand) {
DynamicOperand operand = between.getOperand(); DynamicOperand newOperand = rewrite(context, operand); if (newOperand != operand) {
@Test public void shouldParseConstraintFromStringWithValidBetweenExpressionUsingExclusiveAndInclusive() { NamedSelector selector = new NamedSelector(selectorName("tableA")); Constraint constraint = parser.parseConstraint(tokens("tableA.id BETWEEN 'lower' EXCLUSIVE AND 'upper'"), typeSystem, selector); assertThat(constraint, is(instanceOf(Between.class))); Between between = (Between)constraint; assertThat(between.isLowerBoundIncluded(), is(false)); assertThat(between.isUpperBoundIncluded(), is(true)); assertThat(between.getOperand(), is(instanceOf(PropertyValue.class))); PropertyValue operand = (PropertyValue)between.getOperand(); assertThat(operand.selectorName(), is(selector.name())); assertThat(operand.getPropertyName(), is("id")); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(literal("lower"))); assertThat(between.getUpperBound(), is(literal("upper"))); }
@Test public void shouldParseConstraintFromStringWithValidBetweenExpressionUsingInclusiveAndExclusive() { NamedSelector selector = new NamedSelector(selectorName("tableA")); Constraint constraint = parser.parseConstraint(tokens("tableA.id BETWEEN 'lower' AND 'upper' EXCLUSIVE"), typeSystem, selector); assertThat(constraint, is(instanceOf(Between.class))); Between between = (Between)constraint; assertThat(between.isLowerBoundIncluded(), is(true)); assertThat(between.isUpperBoundIncluded(), is(false)); assertThat(between.getOperand(), is(instanceOf(PropertyValue.class))); PropertyValue operand = (PropertyValue)between.getOperand(); assertThat(operand.selectorName(), is(selector.name())); assertThat(operand.getPropertyName(), is("id")); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(literal("lower"))); assertThat(between.getUpperBound(), is(literal("upper"))); }
@Test public void shouldParseConstraintFromStringWithValidBetweenExpressionUsingExclusiveAndExclusive() { NamedSelector selector = new NamedSelector(selectorName("tableA")); Constraint constraint = parser.parseConstraint(tokens("tableA.id BETWEEN 'lower' EXCLUSIVE AND 'upper' EXCLUSIVE"), typeSystem, selector); assertThat(constraint, is(instanceOf(Between.class))); Between between = (Between)constraint; assertThat(between.isLowerBoundIncluded(), is(false)); assertThat(between.isUpperBoundIncluded(), is(false)); assertThat(between.getOperand(), is(instanceOf(PropertyValue.class))); PropertyValue operand = (PropertyValue)between.getOperand(); assertThat(operand.selectorName(), is(selector.name())); assertThat(operand.getPropertyName(), is("id")); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(literal("lower"))); assertThat(between.getUpperBound(), is(literal("upper"))); }
@Test public void shouldParseConstraintFromStringWithValidNotBetweenExpression() { NamedSelector selector = new NamedSelector(selectorName("tableA")); Constraint constraint = parser.parseConstraint(tokens("tableA.id NOT BETWEEN 'lower' AND 'upper'"), typeSystem, selector); assertThat(constraint, is(instanceOf(Not.class))); constraint = ((Not)constraint).getConstraint(); assertThat(constraint, is(instanceOf(Between.class))); Between between = (Between)constraint; assertThat(between.isLowerBoundIncluded(), is(true)); assertThat(between.isUpperBoundIncluded(), is(true)); assertThat(between.getOperand(), is(instanceOf(PropertyValue.class))); PropertyValue operand = (PropertyValue)between.getOperand(); assertThat(operand.selectorName(), is(selector.name())); assertThat(operand.getPropertyName(), is("id")); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(instanceOf(Literal.class))); assertThat(between.getLowerBound(), is(literal("lower"))); assertThat(between.getUpperBound(), is(literal("upper"))); }
DynamicOperand lhs = replaceAliasesWithProperties(context, between.getOperand(), propertyByAlias); if (lower == between.getOperand()) return between; return new Between(lhs, lower, upper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
DynamicOperand lhs = between.getOperand();
DynamicOperand lhs = between.getOperand();
DynamicOperand lhs = replaceAliasesWithProperties(context, between.getOperand(), propertyByAlias); if (lower == between.getOperand()) return between; return new Between(lhs, lower, upper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
DynamicOperand lhs = between.getOperand();
assertThat(newSelect.getParent(), is(sameInstance(project))); Between between = newSelect.getProperty(Property.SELECT_CRITERIA, Between.class); assertThat(between.getOperand(), is(select2.getProperty(Property.SELECT_CRITERIA, Comparison.class).getOperand1())); assertThat(between.getLowerBound(), is(select3.getProperty(Property.SELECT_CRITERIA, Comparison.class).getOperand2())); assertThat(between.getUpperBound(), is(select2.getProperty(Property.SELECT_CRITERIA, Comparison.class).getOperand2()));
assertThat(newSelect.getParent(), is(sameInstance(project))); Between between = newSelect.getProperty(Property.SELECT_CRITERIA, Between.class); assertThat(between.getOperand(), is(select2.getProperty(Property.SELECT_CRITERIA, Comparison.class).getOperand1())); assertThat(between.getLowerBound(), is(select3.getProperty(Property.SELECT_CRITERIA, Comparison.class).getOperand2())); assertThat(between.getUpperBound(), is(select2.getProperty(Property.SELECT_CRITERIA, Comparison.class).getOperand2()));
DynamicOperand operand = between.getOperand(); if (isPathOriented(operand)) { return new Between(operand, between.getLowerBound(), between.getUpperBound(), between.isLowerBoundIncluded(),
DynamicOperand lhs = between.getOperand();