@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"); }
DynamicOperand newOperand = rewrite(context, operand); if (newOperand != operand) { return new Between(newOperand, between.getLowerBound(), between.getUpperBound(), between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
DynamicOperand newOperand = rewrite(context, operand); if (newOperand != operand) { return new Between(newOperand, between.getLowerBound(), between.getUpperBound(), between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
@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"))); }
@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"))); }
return new Between(newLhs, lower, upper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
return new Between(newLhs, lower, upper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
StaticOperand newUpper = replaceSubqueriesWithBindVariables(context, upper, subqueriesByVariableName); if (lower == newLower && upper == newUpper) return between; return new Between(lhs, newLower, newUpper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
StaticOperand newUpper = replaceSubqueriesWithBindVariables(context, upper, subqueriesByVariableName); if (lower == newLower && upper == newUpper) return between; return new Between(lhs, newLower, newUpper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
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(between.isLowerBoundIncluded(), is(true)); assertThat(between.isUpperBoundIncluded(), is(true)); assertChildren(newSelect, select1);
return new Between(lhs, lower, upper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
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(between.isLowerBoundIncluded(), is(false)); assertThat(between.isUpperBoundIncluded(), is(false)); assertChildren(newSelect, select1);
return new Between(lhs, lower, upper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
DynamicOperand operand = between.getOperand(); if (isPathOriented(operand)) { return new Between(operand, between.getLowerBound(), between.getUpperBound(), between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
return new Between(newLhs, lower, upper, between.isLowerBoundIncluded(), between.isUpperBoundIncluded());
DynamicOperand operand = between.getOperand(); if (isPathOriented(operand)) { return new Between(operand, between.getLowerBound(), between.getUpperBound(), between.isLowerBoundIncluded(), between.isUpperBoundIncluded());