/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-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.v1_0;
import org.eclipse.xsd.util.XSDSchemaLocationResolver;
import org.picocontainer.MutablePicoContainer;
import org.opengis.filter.FilterFactory;
import org.geotools.filter.FilterFactoryImpl;
import org.geotools.gml2.GMLConfiguration;
import org.geotools.xml.Configuration;
/**
* Parser configuration for the filter 1.0 schema.
*
* @author Justin Deoliveira, The Open Planning Project
*
*
* @source $URL$
*/
public class OGCConfiguration extends Configuration {
/**
* Adds a dependency on {@link GMLConfiguration}
*/
public OGCConfiguration() {
super(OGC.getInstance());
addDependency(new GMLConfiguration());
}
protected void registerBindings(MutablePicoContainer container) {
//expr.xsd
container.registerComponentImplementation(OGC.Add, OGCAddBinding.class);
container.registerComponentImplementation(OGC.BinaryOperatorType,
OGCBinaryOperatorTypeBinding.class);
container.registerComponentImplementation(OGC.Div, OGCDivBinding.class);
container.registerComponentImplementation(OGC.ExpressionType, OGCExpressionTypeBinding.class);
container.registerComponentImplementation(OGC.FunctionType, OGCFunctionTypeBinding.class);
container.registerComponentImplementation(OGC.LiteralType, OGCLiteralTypeBinding.class);
container.registerComponentImplementation(OGC.Mul, OGCMulBinding.class);
container.registerComponentImplementation(OGC.PropertyNameType,
OGCPropertyNameTypeBinding.class);
container.registerComponentImplementation(OGC.Sub, OGCSubBinding.class);
//filter.xsd
container.registerComponentImplementation(OGC.And, OGCAndBinding.class);
container.registerComponentImplementation(OGC.BBOXType, OGCBBOXTypeBinding.class);
container.registerComponentImplementation(OGC.Beyond, OGCBeyondBinding.class);
container.registerComponentImplementation(OGC.BinaryComparisonOpType,
OGCBinaryComparisonOpTypeBinding.class);
container.registerComponentImplementation(OGC.BinaryLogicOpType,
OGCBinaryLogicOpTypeBinding.class);
container.registerComponentImplementation(OGC.BinarySpatialOpType,
OGCBinarySpatialOpTypeBinding.class);
container.registerComponentImplementation(OGC.Contains, OGCContainsBinding.class);
container.registerComponentImplementation(OGC.Crosses, OGCCrossesBinding.class);
container.registerComponentImplementation(OGC.Disjoint, OGCDisjointBinding.class);
//container.registerComponentImplementation(OGC.COMPARISONOPSTYPE,OGCComparisonOpsTypeBinding.class);
container.registerComponentImplementation(OGC.DistanceBufferType,
OGCDistanceBufferTypeBinding.class);
container.registerComponentImplementation(OGC.DistanceType, OGCDistanceTypeBinding.class);
container.registerComponentImplementation(OGC.DWithin, OGCDWithinBinding.class);
container.registerComponentImplementation(OGC.Equals, OGCEqualsBinding.class);
container.registerComponentImplementation(OGC.FeatureIdType, OGCFeatureIdTypeBinding.class);
container.registerComponentImplementation(OGC.FilterType, OGCFilterTypeBinding.class);
//container.registerComponentImplementation(OGC.LOGICOPSTYPE,OGCLogicOpsTypeBinding.class);
container.registerComponentImplementation(OGC.Intersects, OGCIntersectsBinding.class);
container.registerComponentImplementation(OGC.LowerBoundaryType,
OGCLowerBoundaryTypeBinding.class);
container.registerComponentImplementation(OGC.Not, OGCNotBinding.class);
container.registerComponentImplementation(OGC.Or, OGCOrBinding.class);
container.registerComponentImplementation(OGC.PropertyIsBetweenType,
OGCPropertyIsBetweenTypeBinding.class);
container.registerComponentImplementation(OGC.PropertyIsEqualTo,
OGCPropertyIsEqualToBinding.class);
container.registerComponentImplementation(OGC.PropertyIsGreaterThan,
OGCPropertyIsGreaterThanBinding.class);
container.registerComponentImplementation(OGC.PropertyIsGreaterThanOrEqualTo,
OGCPropertyIsGreaterThanOrEqualToBinding.class);
container.registerComponentImplementation(OGC.PropertyIsLessThan,
OGCPropertyIsLessThanBinding.class);
container.registerComponentImplementation(OGC.PropertyIsLessThanOrEqualTo,
OGCPropertyIsLessThanOrEqualToBinding.class);
container.registerComponentImplementation(OGC.PropertyIsLikeType,
OGCPropertyIsLikeTypeBinding.class);
container.registerComponentImplementation(OGC.PropertyIsNullType,
OGCPropertyIsNullTypeBinding.class);
container.registerComponentImplementation(OGC.PropertyIsNotEqualTo,
OGCPropertyIsNotEqualToBinding.class);
container.registerComponentImplementation(OGC.Overlaps, OGCOverlapsBinding.class);
container.registerComponentImplementation(OGC.Touches, OGCTouchesBinding.class);
//container.registerComponentImplementation(OGC.SPATIALOPSTYPE,OGCSpatialOpsTypeBinding.class);
//container.registerComponentImplementation(OGC.UnaryLogicOpType,
// OGCUnaryLogicOpTypeBinding.class);
container.registerComponentImplementation(OGC.UpperBoundaryType,
OGCUpperBoundaryTypeBinding.class);
container.registerComponentImplementation(OGC.Within, OGCWithinBinding.class);
}
/**
* Configures the filter context.
* <p>
* The following factories are registered:
* <ul>
* <li>{@link FilterFactoryImpl} under {@link FilterFactory}
* </ul>
* </p>
*/
public void configureContext(MutablePicoContainer container) {
super.configureContext(container);
container.registerComponentImplementation(FilterFactory.class, FilterFactoryImpl.class);
}
}