001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/ogcwebservices/wfs/capabilities/WFSOperationsMetadata.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.wfs.capabilities; 037 038 import java.util.ArrayList; 039 import java.util.List; 040 041 import org.deegree.ogcwebservices.getcapabilities.Operation; 042 import org.deegree.ogcwebservices.getcapabilities.OperationsMetadata; 043 import org.deegree.owscommon.OWSDomainType; 044 045 /** 046 * Represents the <code>OperationMetadata</code> part in the capabilities document of a WFS 047 * according to the <code>Web Feature Service Implementation Specification 1.1.0</code>. 048 * <p> 049 * In addition to the <code>GetCapabilities</code> operation that all <code>OWS 0.3</code> 050 * compliant services must implement, it may define some or all of the following operations: <table 051 * border="1"> 052 * <tr> 053 * <th>Name</th> 054 * <th>Mandatory?</th> 055 * <th>Function</th> 056 * </tr> 057 * <tr> 058 * <td><code>DescribeFeatureType</code></td> 059 * <td align="center">X</td> 060 * <td>The function of the <code>DescribeFeatureType</code> operation is to generate a schema 061 * description of feature types serviced by a WFS implementation.</td> 062 * </tr> 063 * <tr> 064 * <td><code>GetFeature</code></td> 065 * <td align="center">X</td> 066 * <td>The <code>GetFeature</code> operation allows retrieval of features from a web feature 067 * service.</td> 068 * </tr> 069 * <tr> 070 * <td><code>GetFeatureWithLock</code></td> 071 * <td align="center">-</td> 072 * <td>The lock action of the <code>GetFeatureWithLock</code> request is to attempt to lock all 073 * identified feature instances. If all identified feature instances cannot be locked, then an 074 * exception report should be generated.</td> 075 * </tr> 076 * <tr> 077 * <td><code>GetGMLObject</code></td> 078 * <td align="center">-</td> 079 * <td>The <code>GetGMLObject</code> operation allows retrieval of features and elements by ID 080 * from a web feature service.</td> 081 * </tr> 082 * <tr> 083 * <td><code>LockFeature</code></td> 084 * <td align="center">-</td> 085 * <td>The purpose of the <code>LockFeature</code> operation is to expose a long term feature 086 * locking mechanism to ensure consistency. The lock is considered long term because network latency 087 * would make feature locks last relatively longer than native commercial database locks.</td> 088 * </tr> 089 * <tr> 090 * <td><code>Transaction</code></td> 091 * <td align="center">-</td> 092 * <td>The <code>Transaction</code> operation is used to describe data transformation operations 093 * that are to be applied to web accessible feature instances. When the transaction has been 094 * completed, a web feature service will generate an XML response document indicating the completion 095 * status of the transaction.</td> 096 * </tr> 097 * </table> 098 * 099 * @see org.deegree.ogcwebservices.getcapabilities.OperationsMetadata 100 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a> 101 * @author last edited by: $Author: mschneider $ 102 * 103 * @version $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18 Jun 2009) $ 104 */ 105 public class WFSOperationsMetadata extends OperationsMetadata { 106 107 private static final long serialVersionUID = -3953425919713834071L; 108 109 /** 110 * 111 */ 112 public static final String DESCRIBE_FEATURETYPE_NAME = "DescribeFeatureType"; 113 114 /** 115 * 116 */ 117 public static final String GET_FEATURE_NAME = "GetFeature"; 118 119 /** 120 * 121 */ 122 public static final String GET_FEATURE_WITH_LOCK_NAME = "GetFeatureWithLock"; 123 124 /** 125 * 126 */ 127 public static final String GET_GML_OBJECT_NAME = "GetGmlObject"; 128 129 /** 130 * 131 */ 132 public static final String LOCK_FEATURE_NAME = "LockFeature"; 133 134 /** 135 * 136 */ 137 public static final String TRANSACTION_NAME = "Transaction"; 138 139 private Operation describeFeatureType; 140 141 private Operation getFeature; 142 143 private Operation getFeatureWithLock; 144 145 private Operation getGMLObject; 146 147 private Operation lockFeature; 148 149 private Operation transaction; 150 151 /** 152 * Constructs a new <code>WFSOperationsMetadata</code> instance from the given parameters. 153 * 154 * @param getCapabilities 155 * @param describeFeatureType 156 * @param getFeature 157 * @param getFeatureWithLock 158 * optional operation (may be null) 159 * @param getGMLObject 160 * optional operation (may be null) 161 * @param lockFeature 162 * optional operation (may be null) 163 * @param transaction 164 * optional operation (may be null) 165 * @param parameters 166 * @param constraints 167 */ 168 public WFSOperationsMetadata( Operation getCapabilities, Operation describeFeatureType, 169 Operation getFeature, Operation getFeatureWithLock, 170 Operation getGMLObject, Operation lockFeature, 171 Operation transaction, OWSDomainType[] parameters, 172 OWSDomainType[] constraints ) { 173 super( getCapabilities, parameters, constraints ); 174 this.describeFeatureType = describeFeatureType; 175 this.getFeature = getFeature; 176 this.getFeatureWithLock = getFeatureWithLock; 177 this.getGMLObject = getGMLObject; 178 this.lockFeature = lockFeature; 179 this.transaction = transaction; 180 } 181 182 /** 183 * Returns all <code>Operations</code> known to the WFS. 184 * 185 * @return all <code>Operations</code> known to the WFS. 186 */ 187 @Override 188 public Operation[] getOperations() { 189 List<Operation> list = new ArrayList<Operation>( 10 ); 190 list.add( getFeature ); 191 list.add( describeFeatureType ); 192 list.add( getCapabilitiesOperation ); 193 if ( getFeatureWithLock != null ) { 194 list.add( getFeatureWithLock ); 195 } 196 if ( getGMLObject != null ) { 197 list.add( getGMLObject ); 198 } 199 if ( lockFeature != null ) { 200 list.add( lockFeature ); 201 } 202 if ( transaction != null ) { 203 list.add( transaction ); 204 } 205 206 Operation[] ops = new Operation[list.size()]; 207 return list.toArray( ops ); 208 } 209 210 /** 211 * @return Returns the describeFeatureType <code>Operation</code>. 212 */ 213 public Operation getDescribeFeatureType() { 214 return describeFeatureType; 215 } 216 217 /** 218 * @param describeFeatureType 219 * The describeFeatureType <code>Operation</code> to set. 220 */ 221 public void setDescribeFeatureType( Operation describeFeatureType ) { 222 this.describeFeatureType = describeFeatureType; 223 } 224 225 /** 226 * @return Returns the getFeature <code>Operation</code>. 227 */ 228 public Operation getGetFeature() { 229 return getFeature; 230 } 231 232 /** 233 * @param getFeature 234 * The getFeature <code>Operation</code> to set. 235 */ 236 public void setGetFeature( Operation getFeature ) { 237 this.getFeature = getFeature; 238 } 239 240 /** 241 * @return Returns the getFeatureWithLock <code>Operation</code>. 242 */ 243 public Operation getGetFeatureWithLock() { 244 return getFeatureWithLock; 245 } 246 247 /** 248 * @param getFeatureWithLock 249 * The getFeatureWithLock <code>Operation</code> to set. 250 */ 251 public void setGetFeatureWithLock( Operation getFeatureWithLock ) { 252 this.getFeatureWithLock = getFeatureWithLock; 253 } 254 255 /** 256 * @return Returns the getGMLObject <code>Operation</code>. 257 */ 258 public Operation getGetGMLObject() { 259 return getGMLObject; 260 } 261 262 /** 263 * @param getGMLObject 264 * The getGMLObject <code>Operation</code> to set. 265 */ 266 public void setGetGMLObject( Operation getGMLObject ) { 267 this.getGMLObject = getGMLObject; 268 } 269 270 /** 271 * @return Returns the lockFeature <code>Operation</code>. 272 */ 273 public Operation getLockFeature() { 274 return lockFeature; 275 } 276 277 /** 278 * @param lockFeature 279 * The lockFeature <code>Operation</code> to set. 280 */ 281 public void setLockFeature( Operation lockFeature ) { 282 this.lockFeature = lockFeature; 283 } 284 285 /** 286 * @return Returns the transaction <code>Operation</code>. 287 */ 288 public Operation getTransaction() { 289 return transaction; 290 } 291 292 /** 293 * @param transaction 294 * The transaction <code>Operation</code> to set. 295 */ 296 public void setTransaction( Operation transaction ) { 297 this.transaction = transaction; 298 } 299 }