/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.filter.visitor;
import org.opengis.filter.spatial.BBOX;
import org.opengis.filter.spatial.Beyond;
import org.opengis.filter.spatial.Contains;
import org.opengis.filter.spatial.Crosses;
import org.opengis.filter.spatial.DWithin;
import org.opengis.filter.spatial.Disjoint;
import org.opengis.filter.spatial.Equals;
import org.opengis.filter.spatial.Intersects;
import org.opengis.filter.spatial.Overlaps;
import org.opengis.filter.spatial.Touches;
import org.opengis.filter.spatial.Within;
/**
* Filter that can be applied to determine if a Filter contains any spatial filter
*
* @author Andrea Aime - GeoSolutions
* @since 2.7.5
*/
public class SpatialFilterVisitor extends DefaultFilterVisitor {
boolean hasSpatialFilter = false;
/**
* True if the filter had a spatial filter, false otherwise
* @return
*/
public boolean hasSpatialFilter() {
return hasSpatialFilter;
}
/**
* Resets this visitor so that it can be reused on another filter
*/
public void reset() {
hasSpatialFilter = false;
}
public Object visit(final BBOX filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Beyond filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Contains filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Crosses filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Disjoint filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(DWithin filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Equals filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Intersects filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Overlaps filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Touches filter, Object data) {
hasSpatialFilter = true;
return data;
}
public Object visit(Within filter, Object data) {
hasSpatialFilter = true;
return data;
}
}