@Override public boolean equals(Object o) { return (this == o) || (o instanceof EqualCondition) && Objects.equal(_value, ((EqualCondition) o).getValue()); }
@Override public boolean visit(EqualCondition right) { // "Like" conditions are true only for strings, so it is distinct if the "equal" condition does not // contain a string constant which matches the "like" condition. return !(right.getValue() instanceof String && _left.matches((String) right.getValue())); }
@Override public Boolean visit(EqualCondition condition, @Nullable Object json) { return Objects.equal(condition.getValue(), json); }
@Nullable @Override public Boolean visit(EqualCondition condition, @Nullable String context) { return Objects.equal(condition.getValue(), context); }
@Nullable @Override public Void visit(EqualCondition condition, @Nullable Void context) { if (!(condition.getValue() instanceof Number)) { throw new IllegalArgumentException("Partition value must be an integer"); } Number partitionNum = (Number) condition.getValue(); int partition = partitionNum.intValue(); if (partitionNum.doubleValue() != partition) { throw new IllegalArgumentException("Partition value must be an integer"); } if (partition < 1 || partition > _numPartitions) { throw new IllegalArgumentException("Partition must be between 1 and " + _numPartitions); } return null; }
@Override public Boolean visit(MapCondition condition, Void context) { // Example: {"key":"value"} subset? {..,"key":like("v*")} return ConditionEvaluator.eval(right, _left.getValue(), null); } };
@Override public Boolean visit(ComparisonCondition right, Void context) { // Example: "value" subset? gt("v") return ConditionEvaluator.eval(right, left.getValue(), null); }
@Override public Boolean visit(InCondition right, Void context) { // Example: "do" subset? in("do", "re", "mi") return ConditionEvaluator.eval(right, _left.getValue(), null); }
@Override public Boolean visit(EqualCondition right, Void context) { // Example: in("value") subset? "value" return _left.getValues().equals(Sets.newHashSet(right.getValue())); }
@Override public Boolean visit(ContainsCondition right, Void context) { // Example: ["value"] subset? contains("value") return ConditionEvaluator.eval(right, left.getValue(), null); }
@Override public Boolean visit(LikeCondition right, Void context) { // Example: "value" subset? like("val*") return ConditionEvaluator.eval(right, left.getValue(), null); }
@Override public Boolean visit(EqualCondition right, Void context) { // Example: like("value") subset? "value" Object value = right.getValue(); if (value != null && value instanceof String) { String rValue = (String) value; String lValue = _left.getCondition(); // If it contains any wildcards it can't be a subset if (lValue.matches(".*(?<!\\\\)\\*.*")) { return false; } // Unescape all slashes lValue = lValue.replaceAll("\\\\\\\\", "\\\\"); return lValue.equals(rValue); } return false; }
@Override public Boolean visit(IsCondition right, Void context) { // Example: "value" subset? is(string) return right.getState() == State.DEFINED || ConditionEvaluator.eval(right, _left.getValue(), null); }
_values = Lists.newArrayList(); _values.add(((EqualCondition) condition).getValue());