/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2004-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.xpath; import java.util.Locale; import org.apache.commons.jxpath.ri.QName; import org.apache.commons.jxpath.ri.model.NodePointer; import org.apache.commons.jxpath.ri.model.NodePointerFactory; import org.opengis.feature.Attribute; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.type.AttributeType; /** * A node factory which creates special node pointers featurs. * <p> * The following types are supported: * <ul> * <li>{@link Attribute} * <li>{@link AttributeType} * </ul> * </p> * * @author Justin Deoliveira, The Open Planning Project * @author Gabriel Roldan, Axios Engineering * * * @source $URL$ */ public class AttributeNodePointerFactory implements NodePointerFactory { public int getOrder() { return 0; } public NodePointer createNodePointer(QName name, Object object, Locale locale) { /* * Do not handle SimpleFeature, which should be handled by FeatureNodeFactory, registered by * XPathPropertyAccessorFactory in gt-xsd-core. See GEOS-3525. */ if (object instanceof Attribute && !(object instanceof SimpleFeature)) { return new AttributeNodePointer(null, (Attribute) object, name); } /* * if (object instanceof AttributeType) { return new * FeatureTypePointer(null, (AttributeType) object, name); } */ return null; } public NodePointer createNodePointer(NodePointer parent, QName name, Object object) { /* * Do not handle SimpleFeature, which should be handled by FeatureNodeFactory, registered by * XPathPropertyAccessorFactory in gt-xsd-core. See GEOS-3525. */ if (object instanceof Attribute && !(object instanceof SimpleFeature)) { return new AttributeNodePointer(parent, (Attribute) object, name); } /* * if (object instanceof AttributeType) { return new * FeatureTypePointer(null, (AttributeType) object, name); } */ return null; } }