001: //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/trunk/src/org/deegree/ogcwebservices/sos/capabilities/SOSGetCapabilities.java $
002: /*---------------- FILE HEADER ------------------------------------------
003:
004: This file is part of deegree.
005: Copyright (C) 2001-2008 by:
006: EXSE, Department of Geography, University of Bonn
007: http://www.giub.uni-bonn.de/deegree/
008: lat/lon GmbH
009: http://www.lat-lon.de
010:
011: This library is free software; you can redistribute it and/or
012: modify it under the terms of the GNU Lesser General Public
013: License as published by the Free Software Foundation; either
014: version 2.1 of the License, or (at your option) any later version.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: Contact:
026:
027: Andreas Poth
028: lat/lon GmbH
029: Aennchenstraße 19
030: 53177 Bonn
031: Germany
032: E-Mail: poth@lat-lon.de
033:
034: Prof. Dr. Klaus Greve
035: lat/lon GmbH
036: Aennchenstraße 19
037: 53177 Bonn
038: Germany
039: E-Mail: greve@giub.uni-bonn.de
040:
041: ---------------------------------------------------------------------------*/
042: package org.deegree.ogcwebservices.sos.capabilities;
043:
044: import java.util.HashMap;
045: import java.util.Map;
046:
047: import org.deegree.framework.util.StringTools;
048: import org.deegree.framework.xml.NamespaceContext;
049: import org.deegree.framework.xml.XMLParsingException;
050: import org.deegree.framework.xml.XMLTools;
051: import org.deegree.ogcbase.CommonNamespaces;
052: import org.deegree.ogcwebservices.OGCWebServiceException;
053: import org.deegree.ogcwebservices.getcapabilities.GetCapabilities;
054: import org.w3c.dom.Document;
055:
056: /**
057: * represents a sOs getCapabilities Request
058: *
059: * @author <a href="mailto:mkulbe@lat-lon.de">Matthias Kulbe </a>
060: * @author last edited by: $Author:wanhoff$
061: *
062: * @version $Revision: 9345 $, $Date:20.03.2007$
063: */
064: public class SOSGetCapabilities extends GetCapabilities {
065:
066: private static final NamespaceContext nsContext = CommonNamespaces
067: .getNamespaceContext();
068:
069: /**
070: * creates a GetCapabilities Request from a KVP Map
071: *
072: * @param map
073: * @return
074: */
075: public static SOSGetCapabilities create(Map<String, String> map) {
076:
077: String id = getParam("ID", map, "" + System.currentTimeMillis());
078:
079: // optional
080: //String version = getParam( "VERSION", map, null );
081:
082: // optional
083: String updateSequence = getParam("UPDATESEQUENCE", map, null);
084:
085: // optional and unbounded
086: String[] sections = null;
087: if (map.get("SECTIONS") != null) {
088: String tmp = getParam("SECTIONS", map, null);
089: sections = StringTools.toArray(tmp, ",", false);
090: }
091:
092: // optional and unbounded
093: String[] acceptVersions = null;
094: if (map.get("ACCEPTVERSIONS") != null) {
095: String tmp = getParam("ACCEPTVERSIONS", map, null);
096: acceptVersions = StringTools.toArray(tmp, ",", false);
097: }
098:
099: // optional and unbounded
100: String[] acceptFormats = null;
101: if (map.get("ACCEPTFORMATS") != null) {
102: String tmp = getParam("ACCEPTFORMATS", map, null);
103: acceptFormats = StringTools.toArray(tmp, ",", false);
104: }
105:
106: return new SOSGetCapabilities(id, updateSequence,
107: acceptVersions, sections, acceptFormats, map);
108:
109: }
110:
111: /**
112: * creates GetCapabilities Request from XML
113: *
114: * @param id
115: * @param doc
116: * @return
117: * @throws OGCWebServiceException
118: *
119: */
120: public static SOSGetCapabilities create(String id, Document doc)
121: throws OGCWebServiceException {
122:
123: try {
124: // optional
125: // String version = XMLTools.getNodeAsString( doc, "ows:GetCapabilities/@version",
126: // nsContext,
127: // null );
128:
129: // optional
130: String updateSequence = XMLTools.getNodeAsString(doc,
131: "ows:GetCapabilities/@updateSequence", nsContext,
132: null);
133:
134: // optional and unbounded
135: String[] sections = XMLTools
136: .getNodesAsStrings(
137: doc,
138: "ows:GetCapabilities/ows:Sections/ows:Section/text()",
139: nsContext);
140:
141: // optional and unbounded
142: String[] acceptVersions = XMLTools
143: .getNodesAsStrings(
144: doc,
145: "ows:GetCapabilities/ows:AcceptVersions/ows:Version/text()",
146: nsContext);
147:
148: // optional and unbounded
149: String[] acceptFormats = XMLTools
150: .getNodesAsStrings(
151: doc,
152: "ows:GetCapabilities/ows:AcceptFormats/ows:OutputFormat/text()",
153: nsContext);
154:
155: return new SOSGetCapabilities(id, updateSequence,
156: acceptVersions, sections, acceptFormats,
157: new HashMap<String, String>());
158:
159: } catch (XMLParsingException e) {
160: e.printStackTrace();
161: throw new OGCWebServiceException("sos webservice failure");
162: }
163: }
164:
165: /**
166: * creates GetCapabilities Request
167: *
168: * @param sections
169: * @param acceptFormats
170: * @param acceptVersions
171: * @param id
172: * @param updateSequence
173: * @param vendoreSpec
174: * @return
175: *
176: */
177: public static SOSGetCapabilities create(String id,
178: String[] sections, String[] acceptFormats,
179: String[] acceptVersions, String updateSequence,
180: Map<String, String> vendoreSpec) {
181: return new SOSGetCapabilities(id, updateSequence,
182: acceptVersions, sections, acceptFormats, vendoreSpec);
183: }
184:
185: /**
186: * @param id
187: * @param updateSequence
188: * @param acceptVersions
189: * @param sections
190: * @param acceptFormats
191: * @param vendoreSpec
192: */
193: public SOSGetCapabilities(String id, String updateSequence,
194: String[] acceptVersions, String[] sections,
195: String[] acceptFormats, Map<String, String> vendoreSpec) {
196: super (id, null, updateSequence, acceptVersions, sections,
197: acceptFormats, vendoreSpec);
198: }
199:
200: /**
201: * fixed 'SOS'
202: *
203: * @return the String "SOS"
204: */
205: public String getServiceName() {
206: return "SOS";
207: }
208: }
|