Package org.geotools.data.complex

Source Code of org.geotools.data.complex.ComplexFeatureConstants

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2010-2011, 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.data.complex;

import org.geotools.factory.Hints;
import org.geotools.feature.NameImpl;
import org.geotools.feature.type.AttributeDescriptorImpl;
import org.geotools.feature.type.Types;
import org.geotools.xlink.XLINK;
import org.geotools.xs.XSSchema;
import org.opengis.feature.Property;
import org.opengis.feature.type.Name;
import org.opengis.feature.type.PropertyDescriptor;

/**
* This is just a compilation of constants and static methods used in app-schema module.
* @author Rini Angreani (CSIRO Earth Science and Resource Engineering)
*
*
*
* @source $URL$
*/
public class ComplexFeatureConstants {
    /**
     * Static attribute name used to link different feature types.
     */   
    public static final String FEATURE_CHAINING_LINK_STRING = "FEATURE_LINK";

    public static final Name FEATURE_CHAINING_LINK_NAME = new NameImpl(FEATURE_CHAINING_LINK_STRING);

    /**
     * Static attribute descriptor used to link different feature types. This attribute won't appear
     * in the output document as it doesn't exist in the schema. Specifying the index would allow
     * more than one instances to be used in one type that can be chained by different parent
     * feature types.
     */
    public static final PropertyDescriptor FEATURE_CHAINING_LINK = new AttributeDescriptorImpl(
            XSSchema.STRING_TYPE, FEATURE_CHAINING_LINK_NAME, 0, -1, true, null);

    /**
     * Name representation of xlink:href
     */
    public static final Name XLINK_HREF_NAME = Types.toTypeName(XLINK.HREF);
   
   /**
     * Hints key for xlink:href used in ToXlinkHrefFunction
     */
    public static final Hints.Key STRING_KEY = new Hints.Key(String.class);

    /**
     * User data key to indicate the specified attribute index in the mapping file for the case of
     * multi-valued properties, e.g. gml:name[2]
     */
    public static final String MAPPED_ATTRIBUTE_INDEX = "MAPPED_ATTRIBUTE_INDEX";
   
    public static final String XPATH_SEPARATOR = "/";

    /**
     * Fake attribute name for simple contents of a complex type, eg. gml:name of gml:CodeType type
     */
    public static final Name SIMPLE_CONTENT = new NameImpl(null, "simpleContent");
   
    /**
     * Constant to indicate the last row from denormalised rows.
     */
    public static final String LAST_INDEX = "LAST";
   
   
    /**
     * Unpacks a value from an attribute container
     *
     * @param value
     * @return
     */
    public static Object unpack(Object value) {
       
        if (value instanceof org.opengis.feature.ComplexAttribute){
            Property simpleContent = ((org.opengis.feature.ComplexAttribute)value).getProperty(SIMPLE_CONTENT);
            if (simpleContent == null) {
                return null;
            } else {
                return simpleContent.getValue();
            }
        }
       
        if(value instanceof org.opengis.feature.Attribute){
            return ((org.opengis.feature.Attribute)value).getValue();
        }
       
        return value;
    }
}
TOP

Related Classes of org.geotools.data.complex.ComplexFeatureConstants

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.