/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 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.wps.bindings; import javax.xml.namespace.QName; import net.opengis.wps10.DefaultType2; import net.opengis.wps10.LanguagesType; import net.opengis.wps10.LanguagesType1; import net.opengis.wps10.Wps10Factory; import org.geotools.ows.v1_1.OWS; import org.geotools.wps.WPS; import org.geotools.xml.AbstractComplexBinding; import org.geotools.xml.ElementInstance; import org.geotools.xml.Node; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * Manual binding for 'wps:Languages' in wpsGetCapabilibies_response.xsd'. *<p> *This binding is implemented because it is an anonymous complex type which contains another *anonymous complex type. On top of all that its name conflicts with another type in the schema. *</p> * <pre> * <element name="Languages"> * <annotation> * <documentation>Listing of the default and other languages supported by this service. </documentation> * </annotation> * <complexType> * <sequence> * <element name="Default"> * <annotation> * <documentation>Identifies the default language that will be used unless the operation request specifies another supported language. </documentation> * </annotation> * <complexType> * <sequence> * <element ref="ows:Language"> * </element> * </sequence> * </complexType> * </element> * <element name="Supported" type="wps:LanguagesType"> * <annotation> * <documentation>Unordered list of references to all of the languages supported by this service. The default language shall be included in this list.</documentation> * </annotation> * </element> * </sequence> * </complexType> * </element> * * </pre> * @author Justin Deoliveira, The Open Planning Project * * * * @source $URL$ */ public class LanguagesBinding extends AbstractComplexBinding { Wps10Factory factory; public LanguagesBinding( Wps10Factory factory ) { this.factory = factory; } public QName getTarget() { return WPS._Languages; } public Class getType() { return LanguagesType1.class; } public Object parse(ElementInstance instance, Node node, Object value) throws Exception { LanguagesType1 langs = factory.createLanguagesType1(); DefaultType2 def = factory.createDefaultType2(); langs.setDefault( def ); def.setLanguage( (String) node.getChildValue( "Default") ); LanguagesType supported = (LanguagesType) node.getChildValue( "Supported" ); langs.setSupported( supported ); return langs; } @Override public Element encode(Object object, Document document, Element value) throws Exception { LanguagesType1 langs = (LanguagesType1) object; //add the default manually Element def = document.createElementNS( WPS.NAMESPACE, "Default"); value.appendChild( def ); Element lang = document.createElementNS( OWS.NAMESPACE, OWS.Language.getLocalPart() ); def.appendChild( lang ); lang.appendChild( document.createTextNode( langs.getDefault().getLanguage() ) ); return value; } @Override public Object getProperty(Object object, QName name) throws Exception { LanguagesType1 langs = (LanguagesType1) object; if ( "Supported".equals( name.getLocalPart() ) ) { return langs.getSupported(); } return null; } }