package org.infinispan.objectfilter.impl.syntax; import org.infinispan.objectfilter.impl.ql.AggregationFunction; import org.infinispan.objectfilter.impl.syntax.parser.AggregationPropertyPath; /** * @author anistor@redhat.com * @since 8.0 */ public final class AggregationExpr extends PropertyValueExpr { private final AggregationPropertyPath<?> propertyPath; public AggregationExpr(AggregationPropertyPath<?> propertyPath, boolean isRepeated, Class<?> primitiveType) { super(propertyPath, isRepeated, primitiveType); this.propertyPath = propertyPath; } public AggregationFunction getAggregationType() { return propertyPath.getAggregationFunction(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; AggregationExpr other = (AggregationExpr) o; return propertyPath.equals(other.propertyPath); } @Override public int hashCode() { return propertyPath.hashCode(); } @Override public String toString() { return propertyPath.getAggregationFunction().name() + "(" + super.toString() + ")"; } @Override public String toQueryString() { return propertyPath.getAggregationFunction().name() + "(" + super.toQueryString() + ")"; } @Override public <T> T acceptVisitor(Visitor<?, ?> visitor) { return (T) visitor.visit(this); } }