/*
* 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.gml3.v3_2;
import org.geotools.gml2.bindings.GMLCoordinatesTypeBinding;
import org.geotools.gml3.bindings.AbstractFeatureCollectionTypeBinding;
import org.geotools.gml3.bindings.AbstractFeatureTypeBinding;
import org.geotools.gml3.bindings.AbstractGeometryTypeBinding;
import org.geotools.gml3.bindings.AbstractRingPropertyTypeBinding;
import org.geotools.gml3.bindings.ArcTypeBinding;
import org.geotools.gml3.bindings.BoundingShapeTypeBinding;
import org.geotools.gml3.bindings.CircleTypeBinding;
import org.geotools.gml3.bindings.ComplexSupportXSAnyTypeBinding;
import org.geotools.gml3.bindings.CurveArrayPropertyTypeBinding;
import org.geotools.gml3.bindings.CurvePropertyTypeBinding;
import org.geotools.gml3.bindings.CurveSegmentArrayPropertyTypeBinding;
import org.geotools.gml3.bindings.CurveTypeBinding;
import org.geotools.gml3.bindings.DirectPositionListTypeBinding;
import org.geotools.gml3.bindings.DirectPositionTypeBinding;
import org.geotools.gml3.bindings.DoubleListBinding;
import org.geotools.gml3.bindings.EnvelopeTypeBinding;
import org.geotools.gml3.bindings.FeatureArrayPropertyTypeBinding;
import org.geotools.gml3.bindings.FeaturePropertyTypeBinding;
import org.geotools.gml3.bindings.GML3EncodingUtils;
import org.geotools.gml3.bindings.GeometryPropertyTypeBinding;
import org.geotools.gml3.bindings.IntegerListBinding;
import org.geotools.gml3.bindings.LineStringSegmentTypeBinding;
import org.geotools.gml3.bindings.LineStringTypeBinding;
import org.geotools.gml3.bindings.LinearRingPropertyTypeBinding;
import org.geotools.gml3.bindings.LinearRingTypeBinding;
import org.geotools.gml3.bindings.LocationPropertyTypeBinding;
import org.geotools.gml3.bindings.MeasureTypeBinding;
import org.geotools.gml3.bindings.MultiCurvePropertyTypeBinding;
import org.geotools.gml3.bindings.MultiCurveTypeBinding;
import org.geotools.gml3.bindings.MultiPointPropertyTypeBinding;
import org.geotools.gml3.bindings.MultiPointTypeBinding;
import org.geotools.gml3.bindings.MultiSurfacePropertyTypeBinding;
import org.geotools.gml3.bindings.MultiSurfaceTypeBinding;
import org.geotools.gml3.bindings.PointArrayPropertyTypeBinding;
import org.geotools.gml3.bindings.PointPropertyTypeBinding;
import org.geotools.gml3.bindings.PointTypeBinding;
import org.geotools.gml3.bindings.PolygonPatchTypeBinding;
import org.geotools.gml3.bindings.PolygonTypeBinding;
import org.geotools.gml3.bindings.ReferenceTypeBinding;
import org.geotools.gml3.bindings.RingTypeBinding;
import org.geotools.gml3.bindings.SurfaceArrayPropertyTypeBinding;
import org.geotools.gml3.bindings.SurfacePatchArrayPropertyTypeBinding;
import org.geotools.gml3.bindings.SurfacePropertyTypeBinding;
import org.geotools.gml3.bindings.SurfaceTypeBinding;
import org.geotools.gml3.v3_2.bindings.GML32EncodingUtils;
import org.geotools.xml.Configuration;
import org.geotools.xs.XS;
import org.picocontainer.MutablePicoContainer;
/**
* Parser configuration for the http://www.opengis.net/gml/3.2 schema.
*
* @generated
*
*
* @source $URL$
*/
public class GMLConfiguration extends Configuration {
/**
* Creates a new configuration.
*
* @generated
*/
public GMLConfiguration() {
this(false);
}
/**
* Creates a new configuration specifying whether to enable extended arc/surface support.
*
*/
public GMLConfiguration(boolean arcSurfaceSupport) {
super(GML.getInstance());
this.extArcSurfaceSupport = arcSurfaceSupport;
}
/**
* extended support for arcs and surface flag
*/
boolean extArcSurfaceSupport = false;
/**
* Flag that when set triggers extended support for arcs and surfaces.
*/
public void setExtendedArcSurfaceSupport(boolean extArcSurfaceSupport) {
this.extArcSurfaceSupport = extArcSurfaceSupport;
}
public boolean isExtendedArcSurfaceSupport() {
return extArcSurfaceSupport;
}
/**
* Registers the bindings for the configuration.
*
* @generated
*/
protected final void registerBindings( MutablePicoContainer container ) {
//Types
container.registerComponentImplementation(GML.AbstractFeatureType,
AbstractFeatureTypeBinding.class);
container.registerComponentImplementation(GML.AbstractFeatureCollectionType,
AbstractFeatureCollectionTypeBinding.class);
container.registerComponentImplementation(GML.AbstractGeometryType,
AbstractGeometryTypeBinding.class);
container.registerComponentImplementation(GML.AbstractRingPropertyType,
AbstractRingPropertyTypeBinding.class);
container.registerComponentImplementation(GML.BoundingShapeType,
BoundingShapeTypeBinding.class);
container.registerComponentImplementation(GML.CoordinatesType,
GMLCoordinatesTypeBinding.class);
container.registerComponentImplementation(GML.CurveArrayPropertyType,
CurveArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.CurveType, CurveTypeBinding.class);
container.registerComponentImplementation(GML.CurvePropertyType,
CurvePropertyTypeBinding.class);
container.registerComponentImplementation(GML.CurveSegmentArrayPropertyType,
CurveSegmentArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.DirectPositionListType,
DirectPositionListTypeBinding.class);
container.registerComponentImplementation(GML.DirectPositionType,
DirectPositionTypeBinding.class);
container.registerComponentImplementation(GML.doubleList, DoubleListBinding.class);
container.registerComponentImplementation(GML.EnvelopeType, EnvelopeTypeBinding.class);
container.registerComponentImplementation(GML.FeatureArrayPropertyType,
FeatureArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.FeaturePropertyType,
FeaturePropertyTypeBinding.class);
container.registerComponentImplementation(GML.GeometryPropertyType,
GeometryPropertyTypeBinding.class);
container.registerComponentImplementation(GML.integerList, IntegerListBinding.class);
container.registerComponentImplementation(GML.LinearRingPropertyType,
LinearRingPropertyTypeBinding.class);
container.registerComponentImplementation(GML.LinearRingType, LinearRingTypeBinding.class);
container.registerComponentImplementation(GML.LineStringSegmentType,
LineStringSegmentTypeBinding.class);
container.registerComponentImplementation(GML.LineStringType, LineStringTypeBinding.class);
container.registerComponentImplementation(GML.LocationPropertyType,
LocationPropertyTypeBinding.class);
container.registerComponentImplementation(GML.MeasureType, MeasureTypeBinding.class);
container.registerComponentImplementation(GML.MultiCurveType, MultiCurveTypeBinding.class);
container.registerComponentImplementation(GML.MultiCurvePropertyType,
MultiCurvePropertyTypeBinding.class);
container.registerComponentImplementation(GML.MultiPointPropertyType,
MultiPointPropertyTypeBinding.class);
container.registerComponentImplementation(GML.MultiPointType, MultiPointTypeBinding.class);
container.registerComponentImplementation(GML.MultiSurfaceType,
MultiSurfaceTypeBinding.class);
container.registerComponentImplementation(GML.MultiSurfacePropertyType,
MultiSurfacePropertyTypeBinding.class);
container.registerComponentImplementation(GML.PointArrayPropertyType,
PointArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.PointPropertyType,
PointPropertyTypeBinding.class);
container.registerComponentImplementation(GML.PointType, PointTypeBinding.class);
container.registerComponentImplementation(GML.PolygonType, PolygonTypeBinding.class);
container.registerComponentImplementation(GML.ReferenceType, ReferenceTypeBinding.class);
container.registerComponentImplementation(GML.SurfaceArrayPropertyType,
SurfaceArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.SurfacePropertyType,
SurfacePropertyTypeBinding.class);
container.registerComponentImplementation(XS.ANYTYPE, ComplexSupportXSAnyTypeBinding.class);
//extended bindings for arc/surface support
if (isExtendedArcSurfaceSupport()) {
container.registerComponentImplementation(GML.ArcType,
ArcTypeBinding.class);
container.registerComponentImplementation(GML.CircleType,
CircleTypeBinding.class);
container.registerComponentImplementation(GML.PolygonPatchType,
PolygonPatchTypeBinding.class);
container.registerComponentImplementation(GML.RingType, RingTypeBinding.class);
container.registerComponentImplementation(GML.SurfacePatchArrayPropertyType,
SurfacePatchArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.SurfaceType, SurfaceTypeBinding.class);
container.registerComponentImplementation(GML.CurveArrayPropertyType,
org.geotools.gml3.bindings.ext.CurveArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.CurvePropertyType,
org.geotools.gml3.bindings.ext.CurvePropertyTypeBinding.class);
container.registerComponentImplementation(GML.CurveType,
org.geotools.gml3.bindings.ext.CurveTypeBinding.class);
container.registerComponentImplementation(GML.MultiCurveType,
org.geotools.gml3.bindings.ext.MultiCurveTypeBinding.class);
//container.registerComponentImplementation(GML.MultiPolygonType,
// org.geotools.gml3.bindings.ext.MultiPolygonTypeBinding.class);
container.registerComponentImplementation(GML.MultiSurfaceType,
org.geotools.gml3.bindings.ext.MultiSurfaceTypeBinding.class);
container.registerComponentImplementation(GML.PolygonPatchType,
org.geotools.gml3.bindings.ext.PolygonPatchTypeBinding.class);
container.registerComponentImplementation(GML.SurfaceArrayPropertyType,
org.geotools.gml3.bindings.ext.SurfaceArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.SurfacePatchArrayPropertyType,
org.geotools.gml3.bindings.ext.SurfacePatchArrayPropertyTypeBinding.class);
container.registerComponentImplementation(GML.SurfacePropertyType,
org.geotools.gml3.bindings.ext.SurfacePropertyTypeBinding.class);
container.registerComponentImplementation(GML.SurfaceType,
org.geotools.gml3.bindings.ext.SurfaceTypeBinding.class);
}
}
@Override
protected void configureContext(MutablePicoContainer container) {
super.configureContext(container);
new org.geotools.gml3.GMLConfiguration(extArcSurfaceSupport).configureContext(container);
container.unregisterComponent(GML3EncodingUtils.class);
container.registerComponentInstance(new GML32EncodingUtils());
}
}