001 // $HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/ogcwebservices/getcapabilities/Operation.java $
002 /*----------------------------------------------------------------------------
003 This file is part of deegree, http://deegree.org/
004 Copyright (C) 2001-2009 by:
005 Department of Geography, University of Bonn
006 and
007 lat/lon GmbH
008
009 This library is free software; you can redistribute it and/or modify it under
010 the terms of the GNU Lesser General Public License as published by the Free
011 Software Foundation; either version 2.1 of the License, or (at your option)
012 any later version.
013 This library is distributed in the hope that it will be useful, but WITHOUT
014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
015 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
016 details.
017 You should have received a copy of the GNU Lesser General Public License
018 along with this library; if not, write to the Free Software Foundation, Inc.,
019 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020
021 Contact information:
022
023 lat/lon GmbH
024 Aennchenstr. 19, 53177 Bonn
025 Germany
026 http://lat-lon.de/
027
028 Department of Geography, University of Bonn
029 Prof. Dr. Klaus Greve
030 Postfach 1147, 53001 Bonn
031 Germany
032 http://www.geographie.uni-bonn.de/deegree/
033
034 e-mail: info@deegree.org
035 ----------------------------------------------------------------------------*/
036 package org.deegree.ogcwebservices.getcapabilities;
037
038 import java.io.Serializable;
039
040 import org.deegree.owscommon.OWSDomainType;
041
042 /**
043 * Represents the definition of an <code>Operation</code> in the capabilities document of an
044 * OGC-web service according to the <code>OWS Common
045 * Implementation Specification 0.2</code> (and
046 * <code>owsOperationsMetadata.xsd</code>).
047 * <p>
048 * It consists of a mandatory <code>name</code> attribute and the following elements: <table
049 * border="1">
050 * <tr>
051 * <th>Name</th>
052 * <th>Occurences</th>
053 * <th>Function</th>
054 * </tr>
055 * <tr>
056 * <td>ows:DCP</td>
057 * <td align="center">1-*</td>
058 * <td>Unordered list of Distributed Computing Platforms (DCPs) supported for this operation. At
059 * present, only the HTTP DCP is defined, so this element will appear only once.</td>
060 * </tr>
061 * <tr>
062 * <td>Parameter</td>
063 * <td align="center">0-*</td>
064 * <td>Optional unordered list of parameter domains that each apply to this operation which this
065 * server implements. If one of these Parameter elements has the same "name" attribute as a
066 * Parameter element in the OperationsMetadata element, this Parameter element shall override the
067 * other one for this operation. The list of required and optional parameter domain limitations for
068 * this operation shall be specified in the Implementation Specification for this service.</td>
069 * </tr>
070 * <tr>
071 * <td>ows:Metadata</td>
072 * <td align="center">0-*</td>
073 * <td>Optional unordered list of additional metadata about this operation and its' implementation.
074 * A list of required and optional metadata elements for this operation should be specified in the
075 * Implementation Specification for this service. (Informative: This metadata might specify the
076 * operation request parameters or provide the XML Schemas for the operation request.)</td>
077 * </tr>
078 * </table>
079 *
080 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a>
081 * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider </a>
082 * @author last edited by: $Author: mschneider $
083 *
084 * @version 1.0. $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $
085 *
086 * @since 2.0
087 */
088
089 public class Operation implements Serializable {
090
091 private static final long serialVersionUID = -4092984827471246029L;
092
093 private String name;
094
095 private DCPType[] dcps;
096
097 private OWSDomainType[] parameters;
098
099 private Object[] metadata;
100
101 /**
102 * Creates a new <code>Operation</code> instance that has no <code>Parameter</code>
103 * information.
104 *
105 * @param name
106 * @param dcps
107 */
108 public Operation( String name, DCPType[] dcps ) {
109 this( name, dcps, new OWSDomainType[0] );
110 }
111
112 /**
113 * Creates a new <code>Operation</code> instance with <code>Parameter</code> information.
114 *
115 * @param name
116 * @param dcpTypes
117 * @param parameters
118 */
119 public Operation( String name, DCPType[] dcpTypes, OWSDomainType[] parameters ) {
120 this.name = name;
121 this.dcps = dcpTypes;
122 this.parameters = parameters;
123 }
124
125 /**
126 * Returns the name of the <code>Operation</code>.
127 *
128 * @return the name of the <code>Operation</code>.
129 */
130 public String getName() {
131 return name;
132 }
133
134 /**
135 * Sets the name of the <code>Operation</code>.
136 *
137 * @param name
138 */
139 public void setName( String name ) {
140 this.name = name;
141 }
142
143 /**
144 * Returns the <code>DCP</code> definitions for the <code>Operation</code>.
145 *
146 * @return the <code>DCP</code> definitions for the <code>Operation</code>.
147 */
148 public DCPType[] getDCPs() {
149 return dcps;
150 }
151
152 /**
153 * Sets the <code>DCP</code> definitions for the <code>Operation</code>.
154 *
155 * @param dcpTypes
156 */
157 public void setDCPs( DCPType[] dcpTypes ) {
158 this.dcps = dcpTypes;
159 }
160
161 /**
162 * Returns the specified <code>Parameter</code> value for the <code>Operation</code>.
163 *
164 * @param name
165 * @return the domain type value
166 */
167 public OWSDomainType getParameter( String name ) {
168 for ( int i = 0; i < parameters.length; i++ ) {
169 if ( parameters[i].getName().equals( name ) ) {
170 return parameters[i];
171 }
172 }
173 return null;
174 }
175
176 /**
177 * Returns all <code>Parameters</code> of the <code>Operation</code>.
178 *
179 * @return all <code>Parameters</code> of the <code>Operation</code>.
180 */
181 public OWSDomainType[] getParameters() {
182 return parameters;
183 }
184
185 /**
186 * Sets the <code>Parameters</code> of the <code>Operation</code>.
187 *
188 * @param parameters
189 */
190 public void setParameters( OWSDomainType[] parameters ) {
191 this.parameters = parameters;
192 }
193
194 /**
195 * @return Returns the metadata.
196 */
197 public Object[] getMetadata() {
198 return metadata;
199 }
200
201 /**
202 * @param metadata
203 * The metadata to set.
204 */
205 public void setMetadata( Object[] metadata ) {
206 this.metadata = metadata;
207 }
208
209 }