/************************************************************************************** * Copyright (C) 2008 EsperTech, Inc. All rights reserved. * * http://esper.codehaus.org * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package com.espertech.esper.filter; import com.espertech.esper.epl.expression.ExprEvaluatorContext; import com.espertech.esper.pattern.MatchedEventMap; import com.espertech.esper.util.MetaDefItem; import java.io.Serializable; /** * This class represents one filter parameter in an {@link FilterSpecCompiled} filter specification. * <p> Each filerting parameter has an attribute name and operator type. */ public abstract class FilterSpecParam implements MetaDefItem, Serializable { /** * The property name of the filter parameter. */ protected final FilterSpecLookupable lookupable; private final FilterOperator filterOperator; private static final long serialVersionUID = -677137265660114030L; FilterSpecParam(FilterSpecLookupable lookupable, FilterOperator filterOperator) { this.lookupable = lookupable; this.filterOperator = filterOperator; } /** * Return the filter parameter constant to filter for. * @param matchedEvents is the prior results that can be used to determine filter parameters * @return filter parameter constant's value */ public abstract Object getFilterValue(MatchedEventMap matchedEvents, ExprEvaluatorContext evaluatorContext); public FilterSpecLookupable getLookupable() { return lookupable; } /** * Returns the filter operator type. * @return filter operator type */ public FilterOperator getFilterOperator() { return filterOperator; } public String toString() { return "FilterSpecParam" + " lookupable=" + lookupable + " filterOp=" + filterOperator; } public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof FilterSpecParam)) { return false; } FilterSpecParam other = (FilterSpecParam) obj; if (!(this.lookupable.equals(other.lookupable))) { return false; } if (this.filterOperator != other.filterOperator) { return false; } return true; } public int hashCode() { int result; result = lookupable.hashCode(); result = 31 * result + filterOperator.hashCode(); return result; } }