/* * 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.data.wms.xml; import java.io.IOException; import java.util.Map; import javax.naming.OperationNotSupportedException; import org.geotools.xml.PrintHandler; import org.geotools.xml.schema.Attribute; import org.geotools.xml.schema.ComplexType; import org.geotools.xml.schema.Element; import org.geotools.xml.schema.ElementGrouping; import org.geotools.xml.schema.Facet; import org.geotools.xml.schema.impl.AttributeGT; import org.geotools.xml.schema.impl.SequenceGT; import org.geotools.xml.styling.sldSchema; import org.xml.sax.helpers.AttributesImpl; public class ogcComplexTypes { protected static class VendorType extends ogcComplexType { private static ComplexType instance = new VendorType(); public static ComplexType getInstance() { return instance; } private static Attribute[] attrs = null; private static Element[] elems = null; private static ElementGrouping child = new SequenceGT(null); private VendorType() { super("VendorType", child, attrs, elems, null, false, false); } } protected static class _Size extends ogcComplexType { private static ComplexType instance = new _Size(); public static ComplexType getInstance() { return instance; } private static Attribute[] attrs = null; private static Element[] elems = new Element[]{ new ogcElement("Width", org.geotools.xml.xsi.XSISimpleTypes.PositiveInteger .getInstance()/* simpleType name is positiveInteger */, null, 1, 1), new ogcElement("Height", org.geotools.xml.xsi.XSISimpleTypes.PositiveInteger .getInstance()/* simpleType name is positiveInteger */, null, 1, 1)}; private static ElementGrouping child = new SequenceGT(null, new ElementGrouping[]{ new ogcElement("Width", org.geotools.xml.xsi.XSISimpleTypes.PositiveInteger .getInstance()/* simpleType name is positiveInteger */, null, 1, 1), new ogcElement("Height", org.geotools.xml.xsi.XSISimpleTypes.PositiveInteger .getInstance()/* simpleType name is positiveInteger */, null, 1, 1)}, 1, 1); private _Size() { super(null, child, attrs, elems, null, false, false); } } protected static class _Output extends ogcComplexType { private static ComplexType instance = new _Output(); public static ComplexType getInstance() { return instance; } private static Attribute[] attrs = null; private static Element[] elems = new Element[]{ new ogcElement("Format", ogcSimpleTypes.FormatType.getInstance(), null, 1, 1), new ogcElement("Transparent", org.geotools.xml.xsi.XSISimpleTypes.Boolean .getInstance(), null, 0, 1), new ogcElement("BGcolor", org.geotools.xml.xsi.XSISimpleTypes.String.getInstance(), null, 0, 1), new ogcElement("Size", ogcComplexTypes._Size.getInstance(), null, 1, 1)}; private static ElementGrouping child = new SequenceGT(elems); private _Output() { super(null, child, attrs, elems, null, false, false); } } protected static class _GetMap extends ogcComplexType { private static ComplexType instance = new _GetMap(); public static ComplexType getInstance() { return instance; } private static Attribute[] attrs = new Attribute[]{ new AttributeGT(null, "version", OGCSchema.NAMESPACE, org.geotools.xml.xsi.XSISimpleTypes.String.getInstance(), Attribute.REQUIRED, null, null, false), new AttributeGT(null, "service", OGCSchema.NAMESPACE, ogcSimpleTypes.OWSType .getInstance(), Attribute.REQUIRED, ogcSimpleTypes.OWSType.getInstance() .getFacets()[0].getValue(), ogcSimpleTypes.OWSType.getInstance() .getFacets()[0].getValue(), false)}; private static Element[] elems = new Element[]{ new ogcElement("StyledLayerDescriptor", new sldSchema().getSLDType(), null, 1, 1), new ogcElement("BoundingBox", org.geotools.xml.gml.GMLComplexTypes.BoxType .getInstance(), null, 1, 1), new ogcElement("Output", ogcComplexTypes._Output.getInstance(), null, 1, 1), new ogcElement("Exceptions", ogcSimpleTypes.ExceptionsType.getInstance(), null, 0, 1), new ogcElement("Vendor", ogcComplexTypes.VendorType.getInstance(), null, 0, 1)}; private static ElementGrouping child = new SequenceGT(elems); private _GetMap() { super(null, child, attrs, elems, null, false, false); } } protected static class _FeatureInfoSize extends ogcComplexType { private static ComplexType instance = new _FeatureInfoSize(); public static ComplexType getInstance() { return instance; } private static Attribute[] attrs = null; private static Element[] elems = new Element[]{new ogcElement("FeatureCount", null, null, 1, 1)}; private static ElementGrouping child = new SequenceGT(null, new ElementGrouping[]{new ogcElement("FeatureCount", null, null, 1, 1)}, 1, 1); private _FeatureInfoSize() { super(null, child, attrs, elems, null, false, false); } } protected static class _FeatureInfoOutput extends ogcComplexType { private static ComplexType instance = new _FeatureInfoOutput(); public static ComplexType getInstance() { return instance; } private static Attribute[] attrs = null; private static Element[] elems = new Element[]{ new ogcElement("Format", org.geotools.xml.xsi.XSISimpleTypes.String.getInstance(), null, 1, 1), new ogcElement("Size", ogcComplexTypes._FeatureInfoSize.getInstance(), null, 1, 1)}; private static ElementGrouping child = new SequenceGT(null, new ElementGrouping[]{ new ogcElement("Format", org.geotools.xml.xsi.XSISimpleTypes.String .getInstance(), null, 1, 1), new ogcElement("Size", ogcComplexTypes._FeatureInfoSize.getInstance(), null, 1, 1)}, 1, 1); private _FeatureInfoOutput() { super(null, child, attrs, elems, null, false, false); } } protected static class _GetFeatureInfo extends ogcComplexType { private static ComplexType instance = new _GetFeatureInfo(); public static ComplexType getInstance() { return instance; } private static Attribute[] attrs = new Attribute[]{ new AttributeGT(null, "version", OGCSchema.NAMESPACE, org.geotools.xml.xsi.XSISimpleTypes.String.getInstance(), Attribute.REQUIRED, null, null, false), new AttributeGT(null, "service", OGCSchema.NAMESPACE, ogcSimpleTypes.OWSType .getInstance(), Attribute.REQUIRED, ogcSimpleTypes.OWSType.getInstance() .getFacets()[0].getValue(), ogcSimpleTypes.OWSType.getInstance() .getFacets()[0].getValue(), false)}; private static Element[] elems = new Element[]{ new ogcElement("ogc:GetMap", null, null, 1, 1), new ogcElement("QueryLayer", org.geotools.xml.xsi.XSISimpleTypes.String .getInstance()/* simpleType name is string */, null, 1, 2147483647), new ogcElement("X", org.geotools.xml.xsi.XSISimpleTypes.NonNegativeInteger .getInstance()/* simpleType name is nonNegativeInteger */, null, 1, 1), new ogcElement("Y", org.geotools.xml.xsi.XSISimpleTypes.NonNegativeInteger .getInstance()/* simpleType name is nonNegativeInteger */, null, 1, 1), new ogcElement("Output", ogcComplexTypes._FeatureInfoOutput.getInstance(), null, 1, 1), new ogcElement("Exceptions", org.geotools.xml.xsi.XSISimpleTypes.String .getInstance()/* simpleType name is string */, null, 0, 1), new ogcElement("Vendor", null, null, 0, 1)}; private static ElementGrouping child = new SequenceGT(elems); private _GetFeatureInfo() { super(null, child, attrs, elems, null, false, false); } } protected static class _GetCapabilities extends ogcComplexType { private static ComplexType instance = new _GetCapabilities(); public static ComplexType getInstance() { return instance; } private static Attribute[] attrs = new Attribute[]{ new AttributeGT(null, "service", OGCSchema.NAMESPACE, ogcSimpleTypes.OWSType.getInstance(), Attribute.REQUIRED, null, null, false), new AttributeGT(null, "version", OGCSchema.NAMESPACE, org.geotools.xml.xsi.XSISimpleTypes.String.getInstance(), Attribute.REQUIRED, null, null, false), new AttributeGT(null, "updateSequence", OGCSchema.NAMESPACE, org.geotools.xml.xsi.XSISimpleTypes.String.getInstance(), Attribute.OPTIONAL, null, null, false)}; private static Element[] elems = new Element[]{new ogcElement("Section", ogcSimpleTypes.CapabilitiesSectionType.getInstance(), null, 0, 1)}; private static ElementGrouping child = new SequenceGT(null, new ElementGrouping[]{new ogcElement("Section", ogcSimpleTypes.CapabilitiesSectionType.getInstance(), null, 0, 1)}, 1, 1); private _GetCapabilities() { super(null, child, attrs, elems, null, false, false); } public boolean canEncode( Element element, Object value, Map hints ) { if (element.getType() != null && getName().equals(element.getType().getName())) { for (int i = 0; i < ogcSimpleTypes.CapabilitiesSectionType.getInstance().getFacets().length; i++) { Facet facet = ogcSimpleTypes.CapabilitiesSectionType.getInstance().getFacets()[i]; if (facet.getValue().equals(value)) { return true; } } if (value == null || value == "") { //$NON-NLS-1$ return true; } } return super.canEncode(element, value, hints); } public void encode( Element element, Object value, PrintHandler output, Map hints ) throws OperationNotSupportedException { if (canEncode(element, value, hints)) { AttributesImpl attributes = new AttributesImpl(); // attributes.addAttribute(WFSSchema.NAMESPACE.toString(), // attrs[0].getName(), null, "string", attrs[0].getFixed()); // attributes.addAttribute(WFSSchema.NAMESPACE.toString(), // attrs[1].getName(), null, "string", attrs[1].getFixed()); // attributes.addAttribute(WFSSchema.NAMESPACE.toString(), // attrs[2].getName(), null, "string", attrs[2].getFixed()); try { output.startElement(element.getNamespace(), element.getName(), attributes); output.endElement(element.getNamespace(), element.getName()); } catch (IOException e) { e.printStackTrace(); } } else { throw new UnsupportedOperationException(); } } public Class getInstanceType() { return String.class; } public String getName() { return "GetCapabilities"; } } }