/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.geoserver.wfsv.xml.v1_1_0; import java.math.BigInteger; import javax.xml.namespace.QName; import net.opengis.wfs.QueryType; import net.opengis.wfs.ResultTypeType; import net.opengis.wfsv.GetVersionedFeatureType; import net.opengis.wfsv.WfsvFactory; import org.geotools.xml.AbstractComplexBinding; import org.geotools.xml.ElementInstance; import org.geotools.xml.Node; /** * Binding object for the type * http://www.opengis.net/wfsv:GetVersionedFeatureType. * * <p> * * <pre> * <code> * <xsd:complexType name="GetVersionedFeatureType"> * <xsd:annotation> * <xsd:documentation> * The GetVersionedFeature extends GetFeature by returning a collection * of AbstractVersionedFeature, which do contain more information about * the last change occurred on each feature. * </xsd:documentation> * </xsd:annotation> * <xsd:complexContent> * <xsd:extension base="wfs:GetFeatureType"/> * </xsd:complexContent> * </xsd:complexType> * * </code> * </pre> * * </p> * * @generated */ public class GetVersionedFeatureTypeBinding extends AbstractComplexBinding { private WfsvFactory wfsvFactory; public GetVersionedFeatureTypeBinding(WfsvFactory wfsvFactory) { this.wfsvFactory = wfsvFactory; } /** * @generated */ public QName getTarget() { return WFSV.GetVersionedFeatureType; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated modifiable */ public Class getType() { return GetVersionedFeatureTypeBinding.class; } // public int getExecutionMode() { // return Binding.OVERRIDE; // } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated modifiable */ public Object parse(ElementInstance instance, Node node, Object value) throws Exception { GetVersionedFeatureType getFeature = wfsvFactory.createGetVersionedFeatureType(); // lt;xsd:element maxOccurs="unbounded" ref="wfs:Query"/> getFeature.getQuery().addAll(node.getChildValues(QueryType.class)); // <xsd:attribute default="results" name="resultType" // type="wfs:ResultTypeType" use="optional"> // Funny, it seems resultType is not being parsed, still a string... if (node.hasAttribute("resultType")) { Object rt = node.getAttributeValue("resultType"); if ("results".equals(rt)) { getFeature.setResultType(ResultTypeType.RESULTS_LITERAL); } else if ("hits".equals(rt)) { getFeature.setResultType(ResultTypeType.HITS_LITERAL); } else { getFeature.setResultType((ResultTypeType) rt); } } if (node.hasAttribute("version")) { getFeature.setVersion((String) node .getAttributeValue("version")); } // <xsd:attribute default="text/xml; subtype=gml/3.1.1" // name="outputFormat" type="xsd:string" use="optional"> if (node.hasAttribute("outputFormat")) { getFeature.setOutputFormat((String) node .getAttributeValue("outputFormat")); } else if("1.0.0".equals(getFeature.getVersion())) { // use GML2 output by default for 1.0 requests getFeature.setOutputFormat("GML2"); } // <xsd:attribute name="maxFeatures" type="xsd:positiveInteger" // use="optional"> if (node.hasAttribute("maxFeatures")) { getFeature.setMaxFeatures((BigInteger) node .getAttributeValue("maxFeatures")); } // <xsd:attribute name="traverseXlinkDepth" type="xsd:string" // use="optional"> if (node.hasAttribute("traverseXlinkDepth")) { getFeature.setTraverseXlinkDepth((String) node .getAttributeValue("traverseXlinkDepth")); } // <xsd:attribute name="traverseXlinkExpiry" // type="xsd:positiveInteger" use="optional"> if (node.hasAttribute("traverseXlinkExpiry")) { getFeature.setTraverseXlinkExpiry((BigInteger) node .getAttributeValue("traverseXlinkExpiry")); } return getFeature; } }