/* * 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.feature.simple; import java.math.BigInteger; import java.net.URI; import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; import java.util.Collections; import javax.xml.namespace.QName; import org.geotools.feature.type.FeatureTypeFactoryImpl; import org.geotools.feature.type.SchemaImpl; import org.geotools.feature.NameImpl; import org.opengis.feature.type.AttributeType; import org.opengis.feature.type.FeatureTypeFactory; import org.opengis.feature.type.GeometryType; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryCollection; import com.vividsolutions.jts.geom.LineString; import com.vividsolutions.jts.geom.MultiLineString; import com.vividsolutions.jts.geom.MultiPoint; import com.vividsolutions.jts.geom.MultiPolygon; import com.vividsolutions.jts.geom.Point; import com.vividsolutions.jts.geom.Polygon; /** * Schema containing a set of "simple" types. * <p> * This schema is used to create features with simple content. It contains * attribute types which correspond to xml schema types from the xml schema * and gml namespaces. * </p> * <p> * The attribute types in this schema maintain a unique mapping to java classes * so it can be used to map from java class to attribute type and vice versa. * </p> * * @author Justin Deoliveira, The Open Planning Project, jdeolive@openplans.org * * @source $URL$ */ public class SimpleSchema extends SchemaImpl { //internal factory private static FeatureTypeFactory factory = new FeatureTypeFactoryImpl(); //schema namespace public static final String NAMESPACE = "http://www.geotools.org/simple"; // // Builtin Java Types // /** BOOLEAN to Boolean.class */ public static final AttributeType BOOLEAN = factory.createAttributeType( new NameImpl(NAMESPACE,"boolean"), Boolean.class, false, false, Collections.EMPTY_LIST, (AttributeType) null, null ); /** STRING to String.class */ public static final AttributeType STRING = factory.createAttributeType( new NameImpl(NAMESPACE,"string"), String.class, false, false,Collections.EMPTY_LIST, (AttributeType) null, null ); /** HEXBINRAY to byte[].class */ public static final AttributeType HEXBINARY = factory.createAttributeType( new NameImpl(NAMESPACE,"string"), byte[].class, false, false,Collections.EMPTY_LIST, (AttributeType) null, null ); /** QNAME to byte[].class */ public static final AttributeType QNAME = factory.createAttributeType( new NameImpl(NAMESPACE,"QName"), QName.class, false, false,Collections.EMPTY_LIST, (AttributeType) null, null ); /** QNAME to byte[].class */ public static final AttributeType URI = factory.createAttributeType( new NameImpl(NAMESPACE,"anyUri"), URI.class, false, false,Collections.EMPTY_LIST, (AttributeType) null, null ); // // Numerics // // /** NUMBER to Number.class */ // public static final AttributeType NUMBER = factory.createAttributeType( // new Name(NAMESPACE,"number"), Number.class, false, // false,Collections.EMPTY_LIST, (AttributeType) null, null // ); /** * INT to java Integer.class */ public static final AttributeType INT = factory.createAttributeType( new NameImpl(NAMESPACE,"int"), Integer.class, false, false,Collections.EMPTY_LIST,null, null ); /** * INTEGER to BigInteger */ public static final AttributeType INTEGER = factory.createAttributeType( new NameImpl(NAMESPACE,"integer"), BigInteger.class, false, false,Collections.EMPTY_LIST,null, null ); /** * FLOAT to java Float.class */ public static final AttributeType FLOAT = factory.createAttributeType( new NameImpl(NAMESPACE,"float"), Float.class, false, false,Collections.EMPTY_LIST,null, null ); /** DOUBLE to Double.class */ public static final AttributeType DOUBLE = factory.createAttributeType( new NameImpl(NAMESPACE,"double"), Double.class, false, false,Collections.EMPTY_LIST,null, null ); /** LONG to Long.class */ public static final AttributeType LONG = factory.createAttributeType( new NameImpl(NAMESPACE,"long"), Long.class, false, false,Collections.EMPTY_LIST,null, null ); /** SHORT to Short.class */ public static final AttributeType SHORT = factory.createAttributeType( new NameImpl(NAMESPACE,"short"), Short.class, false, false,Collections.EMPTY_LIST,null, null ); /** BYTE to Byte.class */ public static final AttributeType BYTE = factory.createAttributeType( new NameImpl(NAMESPACE,"byte"), Byte.class, false, false,Collections.EMPTY_LIST,null, null ); // // TEMPORAL // /** DATE to java.sql.Date.class */ public static final AttributeType DATE = factory.createAttributeType( new NameImpl(NAMESPACE,"date"), Date.class, false, false,Collections.EMPTY_LIST, (AttributeType) null, null ); /** TIME to java.sq1.Time.class */ public static final AttributeType TIME = factory.createAttributeType( new NameImpl(NAMESPACE,"time"), Time.class, false, false,Collections.EMPTY_LIST, (AttributeType) null, null ); /** * DATETIME to java.sql.Timestamp * <p> * Data and a Time like a timestamp. */ public static final AttributeType DATETIME = factory.createAttributeType( new NameImpl(NAMESPACE,"datetime"), Timestamp.class, false, false,Collections.EMPTY_LIST, (AttributeType) null, null ); // // Geomtries // /** Geometry to Geometry.class */ public static final GeometryType GEOMETRY = factory.createGeometryType( new NameImpl(NAMESPACE,"GeometryPropertyType"), Geometry.class, null, false, false, Collections.EMPTY_LIST, null, null ); /** POINT (extends GEOMETRY) binds to Point.class */ public static final GeometryType POINT = factory.createGeometryType( new NameImpl(NAMESPACE,"PointPropertyType"), Point.class, null, false, false, Collections.EMPTY_LIST, null, null ); /** LINESTRING (extends GEOMETRY) binds to LineString.class */ public static final GeometryType LINESTRING = factory.createGeometryType( new NameImpl(NAMESPACE,"LineStringPropertyType"), LineString.class, null, false, false, Collections.EMPTY_LIST, null, null ); // /** LINEARRING (extends GEOMETRY) binds to LinearRing.class */ // public static final GeometryType LINEARRING = factory.createGeometryType( // new Name(NAMESPACE,"LinearRingPropertyType"), LinearRing.class, null, false, // false, Collections.EMPTY_LIST, LINESTRING, null // ); /** POLYGON (extends GEOMETRY) binds to Polygon.class */ public static final GeometryType POLYGON = factory.createGeometryType( new NameImpl(NAMESPACE,"PolygonPropertyType"), Polygon.class, null, false, false, Collections.EMPTY_LIST, null, null ); /** MULTIGEOMETRY (extends GEOMETRY) binds to GeometryCollection.class */ public static final GeometryType MULTIGEOMETRY = factory.createGeometryType( new NameImpl(NAMESPACE,"MultiGeometryPropertyType"), GeometryCollection.class, null, false, false, Collections.EMPTY_LIST, null, null ); /** MULTIPOINT (extends MULTIGEOMETRY) binds to MultiPoint.class */ public static final GeometryType MULTIPOINT = factory.createGeometryType( new NameImpl(NAMESPACE,"MultiPointPropertyType"), MultiPoint.class, null, false, false, Collections.EMPTY_LIST, null, null ); /** MULTILINESTRING (extends MULTIGEOMETRY) binds to MultiLineString.class */ public static final GeometryType MULTILINESTRING = factory.createGeometryType( new NameImpl(NAMESPACE,"MultiLineStringPropertyType"), MultiLineString.class, null, false, false, Collections.EMPTY_LIST, null, null ); /** MULTIPOLYGON (extends MULTIGEOMETRY) binds to MultiPolygon.class */ public static final GeometryType MULTIPOLYGON = factory.createGeometryType( new NameImpl(NAMESPACE,"MultiPolytonPropertyType"), MultiPolygon.class, null, false, false, Collections.EMPTY_LIST, MULTIGEOMETRY, null ); public SimpleSchema() { super(NAMESPACE); put(INTEGER.getName(),INTEGER); put(DOUBLE.getName(),DOUBLE); put(LONG.getName(),LONG); put(FLOAT.getName(),FLOAT); put(SHORT.getName(),SHORT); put(BYTE.getName(),BYTE); //put(NUMBER.getName(),NUMBER); put(STRING.getName(),STRING); put(BOOLEAN.getName(),BOOLEAN); put(QNAME.getName(),QNAME); put(URI.getName(),URI); put(DATE.getName(),DATE); put(DATETIME.getName(),DATETIME); put(GEOMETRY.getName(),GEOMETRY); put(POINT.getName(),POINT); put(LINESTRING.getName(),LINESTRING); //put(LINEARRING.getName(),LINEARRING); put(POLYGON.getName(),POLYGON); put(MULTIGEOMETRY.getName(),MULTIGEOMETRY); put(MULTIGEOMETRY.getName(),MULTIGEOMETRY); put(MULTIPOINT.getName(),MULTIPOINT); put(MULTILINESTRING.getName(),MULTILINESTRING); put(MULTIPOLYGON.getName(),MULTIPOLYGON); } }