FeaturePropertyType.java

package de.turnertech.ows.gml;

import javax.xml.namespace.QName;

import de.turnertech.ows.common.OwsContext;

/**
 * <p>Describes a single feature property, including aspects such as minimum occurences, XSD QNames or possible 
 * values etc.</p>
 * 
 * <p>For many GML types, there are often multiple entries such as "POINT" and "POINT_TYPE". These have an
 * impact on how GML will be interpreted. e.g. a Property of type POINT "has a" gml:Point as a nested element,
 * whereas POINT_TYPE "is a" gml:Point, simply with a different element name. Be cautious and do not let the
 * GML QName fool you, the naming is often misleading.</p>
 * 
 * <p>For more information, lookup the GML Simple Features Profile.</p>
 */
public enum FeaturePropertyType {
    
    ID(false, new QName(OwsContext.XSD_URI, "string")),
    TEXT(false, new QName(OwsContext.XSD_URI, "string")),
    INTEGER(false, new QName(OwsContext.XSD_URI, "integer")),
    DOUBLE(false, new QName(OwsContext.XSD_URI, "double")),
    INSTANT(false, new QName(OwsContext.XSD_URI, "dateTime ")),
    POINT(true, new QName(OwsContext.GML_URI, "PointPropertyType")),
    POINT_TYPE(true, new QName(OwsContext.GML_URI, "Point")),
    POLYGON(true, new QName(OwsContext.GML_URI, "SurfacePropertyType")),
    LINE_STRING(true, new QName(OwsContext.GML_URI, "CurvePropertyType")),
    POLYGON_TYPE(true, new QName(OwsContext.GML_URI, "Polygon")),
    GEOMETRY(true, new QName(OwsContext.GML_URI, "GeometryPropertyType"));

    private final boolean isBoundingBoxProvider;

    private final QName qualifiedName;

    private FeaturePropertyType(final boolean isBoundingBoxProvider, final QName qualifiedName) {
        this.isBoundingBoxProvider = isBoundingBoxProvider;
        this.qualifiedName = qualifiedName;
    }

    public boolean isBoundingBoxProvider() {
        return this.isBoundingBoxProvider;
    }

    public QName getQualifiedName() {
        return qualifiedName;
    }

}