/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2011, Open Source Geospatial Foundation (OSGeo)
* (C) 2005 Open Geospatial Consortium Inc.
*
* All Rights Reserved. http://www.opengis.org/legal/
*/
package org.opengis.filter;
import org.opengis.annotation.XmlElement;
/**
* Defines a filter that supports filtering on multi-valued attributes.
*
* @author Niels Charlier, Curtin University of Technology
*
*
* @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/filter/MultiValuedFilter.java $
*/
public interface MultiValuedFilter extends Filter {
/**
* Enumerated type for MatchAction property (used by comparison and geometry operations):
* When one or more of the operands evaluates to multiple values rather than a single value, which
* action should be taken?
*
* For example, in case of a binary comparison, if there are n values for the left operand
* and m values for the right operand, there are n * m possible combinations that can be compared,
*
* ANY - if any of the possible combinations match, the result is true (aggregated OR)
* ALL - only if all of the possible combinations match, the result is true (aggregated AND)
* ONE - only if exactly one of the possible combinations match, the result is true (aggregated XOR)
*
* @author Niels Charlier, Curtin University of Technology
*
*/
public enum MatchAction {ANY, ALL, ONE};
/***
* Flag Controlling MatchAction property
* When one or more of the operands evaluates to multiple values rather than a single value, which
* action should be taken?
* If there are n values for the left operand and m values for the right operand, there are
* n * m possible combinations that can be compared,
*
* ANY - if any of the possible combinations match, the result is true (aggregated OR)
* ALL - only if all of the possible combinations match, the result is true (aggregated AND)
* ONE - only if exactly one of the possible combinations match, the result is true (aggregated XOR)
*
* @return MatchAction flag
*
*/
@XmlElement("matchAction")
MatchAction getMatchAction();
}