@Override public List<Filter> build(Stack<Object> params) { final Object value1 = params.pop(); Filter gt = new Filter(propertyName(), ComparisonOperator.GREATER_THAN_EQUAL, value1); gt.setOwnerEntityType(entityType); gt.setBooleanOperator(booleanOperator); gt.setNegated(isNegated()); gt.setFunction(new PropertyComparison(value1)); setNestedAttributes(part, gt); final Object value2 = params.pop(); Filter lt = new Filter(propertyName(), ComparisonOperator.LESS_THAN_EQUAL, value2); lt.setOwnerEntityType(entityType); lt.setBooleanOperator(BooleanOperator.AND); lt.setNegated(isNegated()); lt.setFunction(new PropertyComparison(value2)); setNestedAttributes(part, lt); return Arrays.asList(gt, lt); } }
public Filter(String propertyName, ComparisonOperator comparisonOperator, Object propertyValue) { this(propertyName, new PropertyComparison(propertyValue), comparisonOperator); }
public Filter(String propertyName, ComparisonOperator comparisonOperator) { this(new PropertyComparison(null)); this.propertyName = propertyName; if (!EnumSet.of(ComparisonOperator.EXISTS, ComparisonOperator.IS_TRUE, ComparisonOperator.IS_NULL) .contains(comparisonOperator)) { throw new RuntimeException("This constructor can only be used with Unary comparison operators"); } this.comparisonOperator = comparisonOperator; }
@Override public List<Filter> build(Stack<Object> params) { final Object value1 = params.pop(); Filter gt = new Filter(propertyName(), ComparisonOperator.GREATER_THAN_EQUAL, value1); gt.setOwnerEntityType(entityType); gt.setBooleanOperator(booleanOperator); gt.setNegated(isNegated()); gt.setFunction(new PropertyComparison(value1)); setNestedAttributes(part, gt); final Object value2 = params.pop(); Filter lt = new Filter(propertyName(), ComparisonOperator.LESS_THAN_EQUAL, value2); lt.setOwnerEntityType(entityType); lt.setBooleanOperator(BooleanOperator.AND); lt.setNegated(isNegated()); lt.setFunction(new PropertyComparison(value2)); setNestedAttributes(part, lt); return Arrays.asList(gt, lt); } }
@Test public void equalComparisionShouldWork() { final String value = "someOtherThing"; Filter filter = new Filter("thing", ComparisonOperator.EQUALS, value); filter.setFunction(new PropertyComparison(value)); assertThat(filter.toCypher("n", true)).isEqualTo("WHERE n.`thing` = { `thing_0` } "); filter = new Filter("thing", ComparisonOperator.EQUALS, value); filter.ignoreCase(); assertThat(filter.toCypher("n", true)).isEqualTo("WHERE toLower(n.`thing`) = toLower({ `thing_0` }) "); }