// $Header:
// /cvsroot/deegree/src/org/deegree/ogcwebservices/OGCRequestFactory.java,v 1.12
// 2004/08/10 17:17:02 tf Exp $
/*---------------- FILE HEADER ------------------------------------------
This file is part of deegree.
Copyright (C) 2001-2006 by:
EXSE, Department of Geography, University of Bonn
http://www.giub.uni-bonn.de/deegree/
lat/lon GmbH
http://www.lat-lon.de
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; either
version 2.1 of the License, or (at your option) any later version.
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.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Contact:
Andreas Poth
lat/lon GmbH
Aennchenstr. 19
53177 Bonn
Germany
E-Mail: poth@lat-lon.de
Prof. Dr. Klaus Greve
Department of Geography
University of Bonn
Meckenheimer Allee 166
53115 Bonn
Germany
E-Mail: greve@giub.uni-bonn.de
---------------------------------------------------------------------------*/
package org.deegree.ogcwebservices;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import org.deegree.framework.log.ILogger;
import org.deegree.framework.log.LoggerFactory;
import org.deegree.framework.util.CharsetUtils;
import org.deegree.framework.util.IDGenerator;
import org.deegree.framework.util.StringTools;
import org.deegree.framework.xml.XMLFragment;
import org.deegree.framework.xml.XMLParsingException;
import org.deegree.framework.xml.XMLTools;
import org.deegree.ogcbase.CommonNamespaces;
import org.deegree.ogcwebservices.csw.capabilities.CatalogueGetCapabilities;
import org.deegree.ogcwebservices.csw.capabilities.CatalogueOperationsMetadata;
import org.deegree.ogcwebservices.csw.discovery.DescribeRecord;
import org.deegree.ogcwebservices.csw.discovery.GetRecordById;
import org.deegree.ogcwebservices.csw.discovery.GetRecords;
import org.deegree.ogcwebservices.csw.manager.Harvest;
import org.deegree.ogcwebservices.getcapabilities.OperationsMetadata;
import org.deegree.ogcwebservices.sos.capabilities.SOSGetCapabilities;
import org.deegree.ogcwebservices.sos.capabilities.SOSOperationsMetadata;
import org.deegree.ogcwebservices.sos.describeplatform.DescribePlatformRequest;
import org.deegree.ogcwebservices.sos.describesensor.DescribeSensorRequest;
import org.deegree.ogcwebservices.sos.getobservation.GetObservationRequest;
import org.deegree.ogcwebservices.wass.common.CloseSession;
import org.deegree.ogcwebservices.wass.common.GetSession;
import org.deegree.ogcwebservices.wass.was.operation.DescribeUser;
import org.deegree.ogcwebservices.wass.was.operation.WASGetCapabilities;
import org.deegree.ogcwebservices.wass.wss.operation.DoService;
import org.deegree.ogcwebservices.wass.wss.operation.WSSGetCapabilities;
import org.deegree.ogcwebservices.wcs.describecoverage.DescribeCoverage;
import org.deegree.ogcwebservices.wcs.getcapabilities.WCSGetCapabilities;
import org.deegree.ogcwebservices.wcs.getcoverage.GetCoverage;
import org.deegree.ogcwebservices.wfs.operation.DescribeFeatureType;
import org.deegree.ogcwebservices.wfs.operation.GetFeature;
import org.deegree.ogcwebservices.wfs.operation.WFSGetCapabilities;
import org.deegree.ogcwebservices.wfs.operation.transaction.Transaction;
import org.deegree.ogcwebservices.wmps.operation.PrintMap;
import org.deegree.ogcwebservices.wmps.operation.WMPSGetCapabilities;
import org.deegree.ogcwebservices.wms.operation.GetFeatureInfo;
import org.deegree.ogcwebservices.wms.operation.GetLegendGraphic;
import org.deegree.ogcwebservices.wms.operation.GetMap;
import org.deegree.ogcwebservices.wms.operation.WMSGetCapabilities;
import org.deegree.ogcwebservices.wps.capabilities.WPSGetCapabilitiesRequest;
import org.deegree.ogcwebservices.wps.describeprocess.DescribeProcessRequest;
import org.deegree.ogcwebservices.wps.execute.ExecuteRequest;
import org.deegree.ogcwebservices.wpvs.operation.GetView;
import org.deegree.ogcwebservices.wpvs.operation.WPVSGetCapabilities;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/**
* Factory for generating request objects for OGC Web Services.
* <p>
* Requests may be generated from KVP or DOM representations. Also contains methods that decide
* whether an incoming request representation is valid for a certain service.
* </p>
* Currently supported services are:
* <ul>
* <li>CSW</li>
* <li>WFS</li>
* <li>WCS</li>
* <li>WMS</li>
* <li>WFS-G</li>
* <li>SOS</li>
* <li>WMPS</li>
* <li>WSS</li>
* <li>WAS</li>
* </ul>
*
* @version $Revision: 1.87 $
* @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a>
* @author last edited by: $Author: poth $
*
* @version 1.0. $Revision: 1.87 $, $Date: 2006/11/29 16:19:10 $
*
* @since 2.0
*/
public class OGCRequestFactory {
private static final ILogger LOG = LoggerFactory.getLogger( OGCRequestFactory.class );
private static final String CSW_SERVICE_NAME = "CSW";
private static final String WFS_SERVICE_NAME = "WFS";
private static final String WCS_SERVICE_NAME = "WCS";
private static final String WMS_SERVICE_NAME = "WMS";
private static final String WFSG_SERVICE_NAME = "WFS-G";
private static final String SOS_SERVICE_NAME = "SOS";
private static final String WPVS_SERVICE_NAME = "WPVS";
private static final String WMPS_SERVICE_NAME = "WMPS";
private static final String WPS_SERVICE_NAME = "WPS";
private static final String WSS_SERVICE_NAME = "WSS";
private static final String WAS_SERVICE_NAME = "WAS";
/**
* Creates an <code>OGCWebServiceRequest</code> from the content contained within the passed
* request.
*
* @param request
* @return the request object
* @throws IOException
* @throws OGCWebServiceException
* @throws XMLParsingException
* @throws SAXException
*/
public static OGCWebServiceRequest create( ServletRequest request )
throws IOException, OGCWebServiceException, SAXException {
// according to javax.servlet.* documentation, the type is correct
Map<String, String[]> map = request.getParameterMap();
Map<String, String> result = new HashMap<String, String>();
for( String key : map.keySet() ) {
result.put( key.toUpperCase(), StringTools.arrayToString( map.get( key ), ',' ) );
}
LOG.logDebug( "Request parameters: " + result );
if ( map.size() != 0 ) {
return createFromKVP( result );
}
XMLFragment fragment = null;
if ( request.getContentType() != null ) {
fragment = new XMLFragment( request.getReader(), XMLFragment.DEFAULT_URL );
} else {
// DO NOT REMOVE THIS !!!!!
// IT IS ABSOLUTLY NECESSARY TO ENSURE CORRECT CHARACTER ENCODING !!!
StringReader sr = new StringReader( getRequestContent( (HttpServletRequest)request ) );
fragment = new XMLFragment( sr, XMLFragment.DEFAULT_URL );
}
Document doc = fragment.getRootElement().getOwnerDocument();
return createFromXML( doc );
}
/**
* DO NOT REMOVE THIS !!!!!
* IT IS ABSOLUTLY NECESSARY TO ENSURE CORRECT CHARACTER ENCODING !!!
* @param request
* @return
* @throws IOException
*/
private static String getRequestContent( HttpServletRequest request )
throws IOException {
String method = request.getMethod();
if ( method.equalsIgnoreCase( "POST" ) ) {
String charset = request.getCharacterEncoding();
if ( charset == null ) {
charset = "UTF-8";
}
StringBuffer req = readPost( request, charset );
if ( charset.equalsIgnoreCase( CharsetUtils.getSystemCharset() ) ) {
return req.toString();
}
if ( charset.equalsIgnoreCase( "UTF-8" )
&& !charset.equalsIgnoreCase( CharsetUtils.getSystemCharset() ) ) {
String s = new String( req.toString().getBytes(), CharsetUtils.getSystemCharset() );
return s;
}
if ( !charset.equalsIgnoreCase( "UTF-8" )
&& !charset.equalsIgnoreCase( CharsetUtils.getSystemCharset() ) ) {
String s = new String( req.toString().getBytes(), "UTF-8" );
return s;
}
return req.toString();
}
LOG.logDebug( "request string ", request.getQueryString() );
return URLDecoder.decode( request.getQueryString(), CharsetUtils.getSystemCharset() );
}
/**
* DO NOT REMOVE THIS !!!!!
* IT IS ABSOLUTLY NECESSARY TO ENSURE CORRECT CHARACTER ENCODING !!!
* @param request
* @param charset
* @return
* @throws UnsupportedEncodingException
* @throws IOException
*/
private static StringBuffer readPost( HttpServletRequest request, String charset )
throws UnsupportedEncodingException, IOException {
java.io.Reader reader = new InputStreamReader( request.getInputStream(), charset );
BufferedReader br = new BufferedReader( reader );
StringBuffer req = new StringBuffer( 10000 );
for ( String line = null; ( line = br.readLine() ) != null; ) {
req.append( ( new StringBuilder( String.valueOf( line ) ) ).append( "\n" ).toString() );
}
br.close();
return req;
}
/**
* Creates an instance of an <code>AbstractOGCWebServiceRequest</code> from the passed DOM
* object. Supported OWS are 'WMS', 'WFS', 'WCS' and 'CSW'. If a request for another service is
* passed or a request that isn't supported by one of the listed services an exception will be
* thrown. <BR>
* Notice that not all listed services will support request processing by reading the request to
* be performed from a DOM object. In this case also an exception will be thrown even if the
* same request may can be performed if KVP is used.
*
* @param doc
* @return the request object
* @throws OGCWebServiceException
* @throws XMLParsingException
*/
public static OGCWebServiceRequest createFromXML( Document doc )
throws OGCWebServiceException {
if ( LOG.getLevel() == ILogger.LOG_DEBUG ) {
XMLFragment xml = new XMLFragment();
xml.setRootElement( doc.getDocumentElement() );
LOG.logDebug( "XML request: ", xml.getAsString() );
}
String service = XMLTools.getAttrValue( doc.getDocumentElement(), "service" );
String request = doc.getDocumentElement().getLocalName();
service = getTargetService( service, request, doc );
if ( "unknown".equals( service ) ) {
throw new OGCWebServiceException("OGCRequestFactory", "Specified service '"
+ service + "' is not a known OGC service type." );
}
OGCWebServiceRequest ogcRequest = null;
if ( request == null ) {
throw new OGCWebServiceException( "Request parameter must be set!" );
} else if ( WMS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWMSRequest( request, doc );
} else if ( WFS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWFSRequest( request, doc );
} else if ( WCS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWCSRequest( request, doc );
} else if ( CSW_SERVICE_NAME.equals( service ) ) {
ogcRequest = getCSWRequest( request, doc );
} else if ( WFSG_SERVICE_NAME.equals( service ) ) {
// ogcRequest = getWFSGRequest( request, doc );
} else if ( SOS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getSOSRequest( request, doc );
} else if ( WPVS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getSOSRequest( request, doc );
} else if ( WMPS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWMPSRequest( request, doc );
} else if ( WPS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWPSRequest( request, doc );
} else if ( WSS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWSSRequest( request, doc );
} else if ( WAS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWASRequest( request, doc );
} else {
throw new OGCWebServiceException( "OGCRequestFactory", "No handler for service "
+ service
+ " in OGCRequestFactory." );
}
return ogcRequest;
}
/**
* Creates an instance of an <code>AbstractOGCWebServiceRequest</code> from the passed KVP
* encoded request. Supported OWS are 'WMS', 'WFS', 'WCS' and 'CSW'. If a request for another
* service is passed or a request that isn't supported by one of the listed services an
* exception will be thrown. <BR>
* Notice that not all listed services will support request processing by reading the request to
* be performed from KVPs. In this case also an exception will be thrown even if the same
* request may be performed if a DOM object is used.
*
* @param map
* @return the request object
* @throws OGCWebServiceException
*/
public static OGCWebServiceRequest createFromKVP( Map<String, String> map )
throws OGCWebServiceException {
LOG.logDebug( "KVP request: ", map );
// request parameter given?
String request = map.get( "REQUEST" );
if ( request == null ) {
LOG.logInfo( "parameter: ", map );
throw new InvalidParameterValueException( "OGCRequestFactory",
"Request parameter must be set." );
}
// service parameter given?
String service = map.get( "SERVICE" );
if ( service == null ) {
// a profile of a service will be treated as a service
// (e.g. WFS-G)
service = map.get( "PROFILE" );
if ( service == null ) {
service = getTargetService( service, request, null );
}
}
OGCWebServiceRequest ogcRequest = null;
if ( WMS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWMSRequest( request, map );
} else if ( WFS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWFSRequest( request, map );
} else if ( WCS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWCSRequest( request, map );
} else if ( CSW_SERVICE_NAME.equals( service ) ) {
ogcRequest = getCSWRequest( request, map );
} else if ( WFSG_SERVICE_NAME.equals( service ) ) {
// ogcRequest = getWFSGRequest( request, map );
} else if ( SOS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getSOSRequest( request, map );
} else if ( WPVS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWPVSRequest( request, map );
} else if ( WMPS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWMPSRequest( request, map );
} else if ( WPS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWPSRequest( request, map );
} else if ( WSS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWSSRequest( request, map );
} else if ( WAS_SERVICE_NAME.equals( service ) ) {
ogcRequest = getWASRequest( request, map );
} else {
throw new OGCWebServiceException( "OGCRequestFactory", "Specified service '" +
map.get( "SERVICE" ) +
"' is not a known OGC service type." );
}
return ogcRequest;
}
/**
* Creates the corresponding WFS request object from the given parameters.
*
* @param request
* @param map
* @return the corresponding WFS request object
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWFSRequest( String request, Map<String, String> map )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
map.put( "ID", "" + IDGenerator.getInstance().generateUniqueID() );
if ( request.equals( "GetCapabilities" ) ) {
ogcRequest = WFSGetCapabilities.create( map );
} else if ( request.equals( "GetFeature" ) ) {
ogcRequest = GetFeature.create( map );
} else if ( request.equals( "GetFeatureWithLock" ) ) {
throw new OGCWebServiceException( "'GetFeatureWithLock' operation is not implemented. " );
} else if ( request.equals( "GetGmlObject" ) ) {
throw new OGCWebServiceException( "'GetGmlObject' operation is not implemented. " );
} else if ( request.equals( "LockFeature" ) ) {
throw new OGCWebServiceException( "'LockFeature' operation is not implemented. " );
} else if ( request.equals( "DescribeFeatureType" ) ) {
ogcRequest = DescribeFeatureType.create( map );
} else if ( request.equals( "Transaction" ) ) {
ogcRequest = Transaction.create( map );
} else if ( request.equals( "Transaction" ) ) {
ogcRequest = Transaction.create( map );
} else {
throw new InvalidParameterValueException( "Unknown WFS request type: '" + request
+ "'." );
}
return ogcRequest;
}
/**
* @param request
* @param map
* @return
* @todo GetFeature request not completely implemented, parameter missing
*/
// private static OGCWebServiceRequest getWFSGRequest( String request, Map map )
// throws OGCWebServiceException {
// OGCWebServiceRequest ogcRequest = null;
// map.put( "ID", ""
// + IDGenerator.getInstance().generateUniqueID() );
// if ( request.equals( "GetCapabilities" ) ) {
// ogcRequest =
// WFSGOperationFactory.createWFSGGetCapabilitiesRequest( (String) map.get( "ID" ) );
// } else if ( request.equals( "GetFeature" ) ) {
// ogcRequest = WFSGOperationFactory.createWFSGGetFeatureRequest( "ID", map );
// } else {
// throw new InvalidParameterValueException( "Unknown WFS request type: '"
// + request + "'." );
// }
// return ogcRequest;
// }
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>Document</code>. The
* returned request will be a WFS request. The type of request is determined by also submitted
* request name. Known requests are:
* <ul>
* <li>GetCapabilities</li>
* <li>GetFeature</li>
* <li>DescribeFeatureType</li>
* </ul>
* <p>
* Any other request passed to the method causes an <code>OGCWebServiceException</code> to be
* thrown.
* </p>
*
* @param request
* @param doc
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWFSRequest( String request, Document doc )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
if ( request.equals( "GetCapabilities" ) ) {
ogcRequest = WFSGetCapabilities.create( id, doc.getDocumentElement() );
} else if ( request.equals( "GetFeature" ) ) {
ogcRequest = GetFeature.create( id, doc.getDocumentElement() );
} else if ( request.equals( "DescribeFeatureType" ) ) {
ogcRequest = DescribeFeatureType.create( id, doc.getDocumentElement() );
} else if ( request.equals( "Transaction" ) ) {
ogcRequest = Transaction.create( id, doc.getDocumentElement() );
} else {
throw new OGCWebServiceException( "Unknown / unimplemented WFS request type: '"
+ request + "'." );
}
return ogcRequest;
}
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>Document</code>. The
* returned request will be a WSS request. The type of request is determined by also submitted
* request name. Known requests are:
* <ul>
* <li>GetCapabilities</li>
* <li>GetSession</li>
* <li>CloseSession</li>
* <li>DoService</li>
* </ul>
* <p>
* Any other request passed to the method causes an <code>OGCWebServiceException</code> to be
* thrown.
* </p>
*
* @param request
* @param doc
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWSSRequest( String request, Document doc )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
if ( ( "GetCapabilities" ).equals( request ) ) {
ogcRequest = WSSGetCapabilities.create( id, doc.getDocumentElement() );
} else if ( ( "GetSession" ).equals( request ) ) {
ogcRequest = GetSession.create( id, doc.getDocumentElement() );
} else if ( ( "CloseSession" ).equals( request ) ) {
ogcRequest = CloseSession.create( id, doc.getDocumentElement() );
} else if ( ( "DoService" ).equals( request ) ) {
ogcRequest = DoService.create( id, doc.getDocumentElement() );
} else {
throw new OGCWebServiceException( "Unknown / unimplemented WSS request type: '"
+ request + "'." );
}
return ogcRequest;
}
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>key value pair</code>.
* The returned request will be a WSS request. The type of request is determined by also
* submitted request name. Known requests are:
* <ul>
* <li>GetCapabilities</li>
* <li>GetSession</li>
* <li>CloseSession</li>
* <li>DoService</li>
* </ul>
* <p>
* Any other request passed to the method causes an <code>OGCWebServiceException</code> to be
* thrown.
* </p>
*
* @param request
* @param kvp
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWSSRequest( String request, Map<String, String> kvp )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
if ( ( "GetCapabilities" ).equals( request ) ) {
ogcRequest = WSSGetCapabilities.create( id, kvp );
} else if ( ( "GetSession" ).equals( request ) ) {
ogcRequest = GetSession.create( id, kvp );
} else if ( ( "CloseSession" ).equals( request ) ) {
ogcRequest = CloseSession.create( id, kvp );
} else if ( ( "DoService" ).equals( request ) ) {
ogcRequest = DoService.create( id, kvp );
} else {
throw new OGCWebServiceException( "Unknown / unimplemented WSS request type: '"
+ request + "'." );
}
return ogcRequest;
}
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>Document</code>. The
* returned request will be a WAS request. The type of request is determined by also submitted
* request name. Known requests are:
* <ul>
* <li>GetCapabilities</li>
* <li>GetSession</li>
* <li>CloseSession</li>
* </ul>
* <p>
* Any other request passed to the method causes an <code>OGCWebServiceException</code> to be
* thrown.
* </p>
*
* @param request
* @param doc
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWASRequest( String request, Document doc )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
// note: DescribeUser is only supported through KVP
if ( ( "GetCapabilities" ).equals( request ) ) {
ogcRequest = WASGetCapabilities.create( id, doc.getDocumentElement() );
} else if ( ( "GetSession" ).equals( request ) ) {
ogcRequest = GetSession.create( id, doc.getDocumentElement() );
} else if ( ( "CloseSession" ).equals( request ) ) {
ogcRequest = CloseSession.create( id, doc.getDocumentElement() );
} else {
throw new OGCWebServiceException( "Unknown / unimplemented WAS request type: '"
+ request + "'." );
}
return ogcRequest;
}
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>key value pair</code>.
* The returned request will be a WAS request. The type of request is determined by also
* submitted request name. Known requests are:
* <ul>
* <li>GetCapabilities</li>
* <li>GetSession</li>
* <li>CloseSession</li>
* <li>DescribeUser</li>
* </ul>
* <p>
* Any other request passed to the method causes an <code>OGCWebServiceException</code> to be
* thrown.
* </p>
*
* @param request
* @param kvp
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWASRequest( String request, Map<String, String> kvp )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
if ( ( "GetCapabilities" ).equals( request ) ) {
ogcRequest = WASGetCapabilities.create( id, kvp );
} else if ( ( "GetSession" ).equals( request ) ) {
ogcRequest = GetSession.create( id, kvp );
} else if ( ( "CloseSession" ).equals( request ) ) {
ogcRequest = CloseSession.create( id, kvp );
} else if ( ( "DescribeUser" ).equals( request ) ) {
ogcRequest = new DescribeUser( id, kvp );
} else {
throw new OGCWebServiceException( "Unknown / unimplemented WAS request type: '"
+ request + "'." );
}
return ogcRequest;
}
/**
* @param request
* @param doc
* @return
*/
// private static OGCWebServiceRequest getWFSGRequest( String request, Document doc )
// throws OGCWebServiceException {
//
// try {
// return WFSGOperationFactory.createRequest( "id", doc );
// } catch (GazetteerException e) {
// throw new OGCWebServiceException( "could not create WFS-G GetFeature request", e
// .getMessage() );
// } catch (IOException e) {
// throw new OGCWebServiceException( "-", e.getMessage() );
// } catch (SAXException e) {
// throw new OGCWebServiceException( "could not parse WFS-G GetFeature request", e
// .getMessage() );
// }
// }
/**
* return the type of service the passed request targets
*
* @param service
* @param request
* @param doc
* @return
*/
public static String getTargetService( String service, String request, Document doc ) {
if ( WMS_SERVICE_NAME.equals( service ) || isWMSRequest( request ) ) {
return WMS_SERVICE_NAME;
} else if ( WFSG_SERVICE_NAME.equals( service ) || isWFSGRequest( doc ) ) {
return WFSG_SERVICE_NAME;
} else if ( WFS_SERVICE_NAME.equals( service ) || isWFSRequest( request, doc ) ) {
return WFS_SERVICE_NAME;
} else if ( WCS_SERVICE_NAME.equals( service ) || isWCSRequest( request ) ) {
return WCS_SERVICE_NAME;
} else if ( CSW_SERVICE_NAME.equals( service ) || isCSWRequest( request, doc ) ) {
return CSW_SERVICE_NAME;
} else if ( SOS_SERVICE_NAME.equals( service ) || isSOSRequest( request ) ) {
return SOS_SERVICE_NAME;
} else if ( WPVS_SERVICE_NAME.equals( service ) || isWPVSRequest( request ) ) {
return WPVS_SERVICE_NAME;
} else if ( WMPS_SERVICE_NAME.equals( service ) || isWMPSRequest( request ) ) {
return WMPS_SERVICE_NAME;
} else if ( WPS_SERVICE_NAME.equals( service ) || isWPSRequest( request ) ) {
return WPS_SERVICE_NAME;
} else if ( WAS_SERVICE_NAME.equals( service ) || isWASRequest( request ) ) {
return WAS_SERVICE_NAME;
} else if ( WSS_SERVICE_NAME.equals( service ) || isWSSRequest( request ) ) {
return WSS_SERVICE_NAME;
} else {
return "unknown";
}
}
/**
* returns true if the request is a WMPS request
*
* @param request
* name, e.g. 'GetCapabilities' name, e.g. 'PrintMap'
* @return
*/
private static boolean isWMPSRequest( String request ) {
if ( "GetCapabilities".equals( request ) || ( "PrintMap".equals( request ) ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a WMS request
*
* @param request
* @return
*/
private static boolean isWMSRequest( String request ) {
if ( "GetMap".equals( request ) || "map".equals( request )
|| "GetFeatureInfo".equals( request ) || "feature_info".equals( request )
|| "GetLegendGraphic".equals( request ) || "GetStyles".equals( request )
|| "PutStyles".equals( request ) || "DescribeLayer".equals( request ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a WFS request
*
* @param request
* @param doc
* @return
*/
private static boolean isWFSRequest( String request, Document doc ) {
if ( doc != null ) {
String s = doc.getDocumentElement().getNamespaceURI();
if ( CommonNamespaces.WFSNS.toString().equals( s ) ) {
return true;
}
}
if ( "GetFeature".equals( request ) || "GetFeatureWithLock".equals( request )
|| "DescribeFeatureType".equals( request ) || "Lock".equals( request ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a WFS request
*
* @param doc
* @param request
* @return
*/
private static boolean isWFSGRequest( Document doc ) {
if ( doc != null ) {
String s = doc.getDocumentElement().getNamespaceURI();
if ( CommonNamespaces.WFSGNS.toString().equals( s ) )
return true;
}
return false;
}
/**
* returns true if the request is a WCS request
*
* @param request
* @return
*/
private static boolean isWCSRequest( String request ) {
if ( "GetCoverage".equals( request ) || "DescribeCoverage".equals( request ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a CSW request
*
* @param request
* @return
*/
private static boolean isCSWRequest( String request, Document doc ) {
if ( doc != null ) {
String s = doc.getDocumentElement().getNamespaceURI();
if ( CommonNamespaces.CSWNS.toString().equals( s ) ) {
return true;
}
}
if ( CatalogueOperationsMetadata.GET_RECORDS_NAME.equals( request )
|| CatalogueOperationsMetadata.DESCRIBE_RECORD_NAME.equals( request )
|| CatalogueOperationsMetadata.GET_RECORD_BY_ID_NAME.equals( request )
|| CatalogueOperationsMetadata.GET_DOMAIN_NAME.equals( request )
|| CatalogueOperationsMetadata.HARVEST_NAME.equals( request ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a SOS request
*
* @param request
* @return
*/
private static boolean isSOSRequest( String request ) {
if ( "GetObservation".equals( request ) || "DescribeSensor".equals( request )
|| "DescribePlatform".equals( request ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a WPVS request
*
* @param request
* name, e.g. 'GetView'
* @return
*/
private static boolean isWPVSRequest( String request ) {
if ( "GetView".equals( request ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a WPS request
*
* @param request
* name, e.g. 'GetCapabilities' name, e.g. 'DescribeProcess', e.g. 'Exceute'
* @return
*/
private static boolean isWPSRequest( String request ) {
if ( "DescribeProcess".equals( request ) || "Execute".equals( request ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a WAS request
*
* @param request
* name, e.g. 'GetSession' name, e.g. 'CloseSession', e.g. 'GetSAMLResponse'
* @return true if and only if the request contains one of the above Strings
*/
private static boolean isWASRequest( String request ) {
if ( "GetSession".equals( request ) || "CloseSession".equals( request )
|| "GetSAMLResponse".equals( request ) || "DescribeUser".equals( request ) ) {
return true;
}
return false;
}
/**
* returns true if the request is a WSS request
*
* @param request
* name, e.g. 'GetSession' name, e.g. 'CloseSession', e.g. 'GetSAMLResponse'
* @return true if and only if the request contains one of the above Strins
*/
private static boolean isWSSRequest( String request ) {
if ( "GetSession".equals( request ) || "CloseSession".equals( request )
|| "DoService".equals( request ) ) {
return true;
}
return false;
}
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>Object</code>. the
* returned request will be a WCS request. The type of request is determind by the the also
* passed 'request' parameter. Possible requests are:
* <ul>
* <li>GetCapabilities
* <li>GetCoverage
* <li>DescribeCoverage
* </ul>
* <p>
* Any other request passed to the method causes an exception to be thrown.
* </p>
*
* @param request
* @param req
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWMSRequest( String request, Object req )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
try {
if ( request.equals( "GetCapabilities" ) || "capabilities".equals( request ) ) {
if ( req instanceof Map ) {
Map<String, String> map = (Map) req;
map.put( "ID", id );
// defaulting to 1.1.1 is not possible because of spec requirements
// if( ( map.get( "VERSION" ) == null ) && ( map.get( "WMTVER" ) == null ) )
// {
// map.put( "VERSION", "1.3.0" );
// }
ogcRequest = WMSGetCapabilities.create( map );
// } else {
// ogcRequest = WMSGetCapabilities.create(id, (Document) req);
}
} else if ( request.equals( "GetMap" ) || request.equals( "map" ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = GetMap.create( (Map) req );
} else {
ogcRequest = GetMap.create( id, (Document) req );
}
} else if ( request.equals( "GetFeatureInfo" ) || request.equals( "feature_info" ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = GetFeatureInfo.create( (Map) req );
// } else {
// ogcRequest = GetFeatureInfo.create( id, (Document) req);
}
} else if ( request.equals( "GetLegendGraphic" ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = GetLegendGraphic.create( (Map) req );
// } else {
// ogcRequest = GetLegendGraphic.create( id, (Document) req);
}
} else {
throw new OGCWebServiceException( "Unknown WMS request type: '" + request + "'." );
}
} catch ( MalformedURLException e ) {
LOG.logError( e.getLocalizedMessage(), e );
throw new OGCWebServiceException( e.getMessage() );
} catch ( XMLParsingException e ) {
LOG.logError( e.getLocalizedMessage(), e );
throw new OGCWebServiceException( e.getMessage() );
}
return ogcRequest;
}
/**
* Creates an <code>AbstractOGCWebServiceRequest</code> from the passed <code>Object</code>.
* the returned request will be a WCS request. The type of request is determind by the the also
* passed 'request' parameter. Possible requests are:
* <ul>
* <li>GetCapabilities
* <li>GetCoverage
* <li>DescribeCoverage
* </ul>
* Any other request passed to the method causes an exception to be thrown.
*
* @param request
* @param req
* @return
* @throws OGCWebServiceException
*/
private static AbstractOGCWebServiceRequest getWCSRequest( String request, Object req )
throws OGCWebServiceException {
AbstractOGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
if ( request.equals( "GetCapabilities" ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = WCSGetCapabilities.create( (Map) req );
} else {
ogcRequest = WCSGetCapabilities.create( id, (Document) req );
}
} else if ( request.equals( "GetCoverage" ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = GetCoverage.create( (Map) req );
} else {
ogcRequest = GetCoverage.create( id, (Document) req );
}
} else if ( request.equals( "DescribeCoverage" ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = DescribeCoverage.create( (Map) req );
} else {
ogcRequest = DescribeCoverage.create( id, (Document) req );
}
} else {
throw new OGCWebServiceException( "Unknown WCS request type: '" + request + "'." );
}
return ogcRequest;
}
/**
* Creates an <code>AbstractOGCWebServiceRequest</code> from the passed <code>Object</code>.
* The returned request will be a <code>CSW</code> request. The type of request is determined
* by the the also passed 'request' parameter. Allowed values for the request parameter are:
* <ul>
* <li>GetCapabilities
* <li>GetRecords
* <li>DescribeRecord
* </ul>
*
* Any other request passed to the method causes an exception to be thrown.
*
* TODO: Add missing request types.
*
* @param request
* @param req
* @return
* @throws OGCWebServiceException
*/
private static AbstractOGCWebServiceRequest getCSWRequest( String request, Object req )
throws OGCWebServiceException {
AbstractOGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
LOG.logDebug( StringTools.concat( 200, "Creating CSW request '", request, "' with ID=", id,
"/type:", req.getClass().getName() ) );
if ( OperationsMetadata.GET_CAPABILITIES_NAME.equals( request ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = CatalogueGetCapabilities.create( (Map) req );
} else {
ogcRequest = CatalogueGetCapabilities.create(
id,
( (Document) req ).getDocumentElement() );
}
} else if ( CatalogueOperationsMetadata.GET_RECORDS_NAME.equals( request ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = GetRecords.create( (Map) req );
} else {
ogcRequest = GetRecords.create( id, ( (Document) req ).getDocumentElement() );
}
} else if ( CatalogueOperationsMetadata.GET_RECORD_BY_ID_NAME.equals( request ) ) {
if ( req instanceof Map ) {
ogcRequest = GetRecordById.create( (Map) req );
} else {
ogcRequest = GetRecordById.create( id, ( (Document) req ).getDocumentElement() );
}
} else if ( CatalogueOperationsMetadata.DESCRIBE_RECORD_NAME.equals( request ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = DescribeRecord.create( (Map) req );
} else {
ogcRequest = DescribeRecord.create( id, ( (Document) req ).getDocumentElement() );
}
} else if ( CatalogueOperationsMetadata.GET_DOMAIN_NAME.equals( request ) ) {
// TODO
throw new OGCWebServiceException( CatalogueOperationsMetadata.TRANSACTION_NAME
+ " is not supported." );
} else if ( CatalogueOperationsMetadata.TRANSACTION_NAME.equals( request ) ) {
if ( req instanceof Map ) {
throw new OGCWebServiceException( CatalogueOperationsMetadata.TRANSACTION_NAME
+ " through HTTP Get is not supported." );
}
ogcRequest = org.deegree.ogcwebservices.csw.manager.Transaction.create(
id,
( (Document) req ).getDocumentElement() );
} else if ( CatalogueOperationsMetadata.HARVEST_NAME.equals( request ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = Harvest.create( (Map) req );
} else {
throw new OGCWebServiceException( CatalogueOperationsMetadata.HARVEST_NAME
+ " through HTTP post is not supported." );
}
} else {
throw new OGCWebServiceException( "Unknown CSW request type: '" + request + "'." );
}
LOG.logDebug( "CSW request created: " + ogcRequest );
return ogcRequest;
}
/**
*
* @param request
* @param req
* @return
* @throws OGCWebServiceException
*/
private static AbstractOGCWebServiceRequest getSOSRequest( String request, Object req )
throws OGCWebServiceException {
AbstractOGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
LOG.logDebug( "Creating SOS request '" + request + "' with ID=" + id + "/type:"
+ req.getClass().getName() );
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
}
if ( OperationsMetadata.GET_CAPABILITIES_NAME.equals( request ) ) {
if ( req instanceof Map ) {
ogcRequest = SOSGetCapabilities.create( (Map) req );
} else {
ogcRequest = SOSGetCapabilities.create( id, (Document) req );
}
} else if ( SOSOperationsMetadata.DESCRIBE_PLATFORM_NAME.equals( request ) ) {
if ( req instanceof Map ) {
ogcRequest = DescribePlatformRequest.create( (Map) req );
} else {
ogcRequest = DescribePlatformRequest.create( id, (Document) req );
}
} else if ( SOSOperationsMetadata.DESCRIBE_SENSOR_NAME.equals( request ) ) {
if ( req instanceof Map ) {
ogcRequest = DescribeSensorRequest.create( (Map) req );
} else {
ogcRequest = DescribeSensorRequest.create( id, (Document) req );
}
} else if ( SOSOperationsMetadata.GET_OBSERVATION_NAME.equals( request ) ) {
if ( req instanceof Map ) {
ogcRequest = GetObservationRequest.create( (Map) req );
} else {
ogcRequest = GetObservationRequest.create( id, (Document) req );
}
} else {
throw new OGCWebServiceException( "Unknown SCS request type: '" + request + "'." );
}
LOG.logDebug( "SCS request created: " + ogcRequest );
return ogcRequest;
}
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>Object</code>. the
* returned request will be a WPVS request. The type of request is determind by the the also
* passed 'request' parameter. Possible requests are:
* <ul>
* <li>GetCapabilities
* <li>GetView
* </ul>
* <p>
* Any other request passed to the method causes an exception to be thrown.
* </p>
*
* @param request
* name
* @param req
* the request object
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWPVSRequest( String request, Object req )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
if ( OperationsMetadata.GET_CAPABILITIES_NAME.equals( request ) ) {
if ( req instanceof Map ) {
( (Map) req ).put( "ID", id );
ogcRequest = WPVSGetCapabilities.create( (Map) req );
} else {
// ogcRequest = WPVSGetCapabilities.create(id, (Document) req);
}
} else if ( "GetView".equals( request ) ) {
ogcRequest = GetView.create( (Map) req );
} else {
throw new OGCWebServiceException( "Unknown WPVS request type: '" + request + "'." );
}
return ogcRequest;
}
/**
* Creates an <code>AbstractOGCWebServiceRequest</code> from the passed <code>Object</code>.
* the returned request will be a WMPS request. The type of request is determind by the the also
* passed 'request' parameter. Possible requests are:
* <ul>
* <li>GetCapabilities
* </ul>
* Any other request passed to the method causes an exception to be thrown.
*
* @param request
* @param doc
* @param req
* @return
* @throws OGCWebServiceException
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWMPSRequest( String request, Document doc )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
if ( request.equals( "PrintMap" ) ) {
try {
ogcRequest = PrintMap.create( doc.getDocumentElement() );
} catch ( Exception e ) {
throw new OGCWebServiceException(
"Error creating a Print Map object for the request '"
+ request + "'. "
+ e.getMessage() );
}
} else {
throw new OGCWebServiceException( "Unknown / unimplemented WMPS request type: '"
+ request + "'." );
}
return ogcRequest;
}
/**
* Creates an <code>AbstractOGCWebServiceRequest</code> from the passed <code>Object</code>.
* the returned request will be a WMPS request. The type of request is determind by the the also
* passed 'request' parameter. Possible requests are:
* <ul>
* <li>GetCapabilities
* </ul>
* Any other request passed to the method causes an exception to be thrown.
*
* @param request
* @param map
* @param req
* @return OGCWebServiceRequest
* @throws InconsistentRequestException
* @throws InvalidParameterValueException
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWMPSRequest( String request, Map<String, String> map )
throws InconsistentRequestException, InvalidParameterValueException {
OGCWebServiceRequest ogcRequest = null;
map.put( "ID", "" + IDGenerator.getInstance().generateUniqueID() );
if ( request.equals( "GetCapabilities" ) ) {
ogcRequest = WMPSGetCapabilities.create( map );
} else if ( request.equals( "PrintMap" ) ) {
ogcRequest = PrintMap.create( map );
} else {
throw new InvalidParameterValueException( "Unknown WMPS request type: '" + request
+ "'." );
}
return ogcRequest;
}
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>Map</code>. The
* returned request will be a WPS request. The type of request is determined by also submitted
* request name. Known requests are:
* <ul>
* <li>GetCapabilities</li>
* <li>DescribeProcess</li>
* <li>Execute</li>
* </ul>
* <p>
* Any other request passed to the method causes an <code>OGCWebServiceException</code> to be
* thrown.
* </p>
*
* @param request
* @param map
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWPSRequest( String request, Map<String, String> map )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
map.put( "ID", "" + IDGenerator.getInstance().generateUniqueID() );
if ( "GetCapabilities".equals( request ) ) {
ogcRequest = WPSGetCapabilitiesRequest.create( map );
} else if ( "DescribeProcess".equals( request ) ) {
ogcRequest = DescribeProcessRequest.create( map );
} else if ( "Execute".equals( request ) ) {
ogcRequest = ExecuteRequest.create( map );
} else {
throw new InvalidParameterValueException( "Unknown WPS request type: '" + request
+ "'." );
}
return ogcRequest;
}
/**
* Creates an <code>OGCWebServiceRequest</code> from the passed <code>Document</code>. The
* returned request will be a WPS request. The type of request is determined by also submitted
* request name. Known requests are:
* <ul>
* <li>GetCapabilities</li>
* <li>DescribeProcess</li>
* <li>Execute</li>
* </ul>
* <p>
* Any other request passed to the method causes an <code>OGCWebServiceException</code> to be
* thrown.
* </p>
*
* @param request
* @param doc
* @return created <code>OGCWebServiceRequest</code>
* @throws OGCWebServiceException
*/
private static OGCWebServiceRequest getWPSRequest( String request, Document doc )
throws OGCWebServiceException {
OGCWebServiceRequest ogcRequest = null;
String id = "" + IDGenerator.getInstance().generateUniqueID();
if ( "GetCapabilities".equals( request ) ) {
ogcRequest = WPSGetCapabilitiesRequest.create( id, doc.getDocumentElement() );
} else if ( "DescribeProcess".equals( request ) ) {
ogcRequest = DescribeProcessRequest.create( id, doc.getDocumentElement() );
} else if ( "Execute".equals( request ) ) {
ogcRequest = ExecuteRequest.create( id, doc.getDocumentElement() );
} else {
throw new OGCWebServiceException( "Unknown WPS request type: '" + request + "'." );
}
return ogcRequest;
}
}
/***************************************************************************************************
* OGCRequestFactory.java Changes to this class. What the people have been up to: $Log:
* OGCRequestFactory.java,v $ Revision 1.61 2006/06/07 12:37:51 deshmukh Reset the changes made to
* the WMPS.
*
* Revision 1.59 2006/05/29 16:19:41 poth bug fix - creatung GetRecordById request from
* key-value-pairs
*
* Revision 1.58 2006/05/16 16:20:25 mschneider Refactored due to the splitting of
* org.deegree.ogcwebservices.wfs.operation package.
*
* Revision 1.57 2006/05/16 13:47:59 poth code formatation
*
* Revision 1.56 2006/04/23 20:17:26 poth *** empty log message ***
*
* Revision 1.55 2006/04/09 12:20:40 poth *** empty log message ***
*
* Revision 1.54 2006/04/06 20:25:27 poth *** empty log message ***
*
* Revision 1.53 2006/04/04 20:39:42 poth *** empty log message ***
*
* Revision 1.52 2006/04/04 10:22:02 poth *** empty log message ***
*
* Revision 1.51 2006/03/30 21:20:26 poth *** empty log message ***
*
* Revision 1.50 2006/03/27 07:12:12 mschneider Added exception to inform the client that GetFeature
* operations using KVP are currently unavailable.
*
* Revision 1.49 2006/02/26 21:30:42 poth *** empty log message ***
*
* Revision 1.48 2006/02/20 14:14:00 poth *** empty log message ***
*
* Revision 1.47 2006/02/06 16:36:41 deshmukh *** empty log message *** Revision 1.46 2006/02/01
* 17:38:44 deshmukh *** empty log message ***
*
* Revision 1.45 2006/01/06 16:06:34 deshmukh New Service WMPS handling PrintMap requests Revision
* 1.44 2006/01/05 15:18:27 deshmukh Renamed WPS to WMPS
*
* Revision 1.43 2006/01/05 12:57:11 deshmukh New Service WMPS added Revision 1.42 2005/12/15
* 15:46:44 taddei added WPVS GetView
*
* Revision 1.41 2005/12/13 14:50:03 taddei added wpvs handler
*
* Revision 1.40 2005/12/05 09:25:17 deshmukh *** empty log message *** Revision 1.39 2005/11/23
* 17:07:07 mschneider Fixed NS.equals() call.
*
* Revision 1.38 2005/11/23 14:13:51 deshmukh *** empty log message *** Revision 1.37 2005/11/21
* 15:02:16 deshmukh Transaction methods added Changes to this class. What the people have been up
* to: Revision 1.36 2005/11/17 13:09:35 deshmukh Changes to this class. What the people have been
* up to: changes in Exception catching Changes to this class. What the people have been up to:
* Changes to this class. What the people have been up to: Revision 1.34.2.2 2005/11/16 07:25:19
* deshmukh Changes to this class. What the people have been up to: *** empty log message ***
* Changes to this class. What the people have been up to: Changes to this class. What the people
* have been up to: Revision 1.34.2.1 2005/11/15 14:36:19 deshmukh Changes to this class. What the
* people have been up to: QualifiedName modifications Changes to this class. What the people have
* been up to: Changes to this class. What the people have been up to: Revision 1.34 2005/09/09
* 19:14:17 poth Changes to this class. What the people have been up to: no message Changes to this
* class. What the people have been up to: Changes to this class. What the people have been up to:
* Revision 1.33 2005/09/09 08:20:03 poth Changes to this class. What the people have been up to: no
* message ======= Changes to this class. What the people have been up to: $Log:
* OGCRequestFactory.java,v $ What the people have been up to: Revision 1.39 2005/11/23 17:07:07
* mschneider What the people have been up to: Fixed NS.equals() call. What the people have been up
* to: What the people have been up to: Revision 1.38 2005/11/23 14:13:51 deshmukh What the people
* have been up to: *** empty log message *** What the people have been up to: to this class. What
* the people have been up to: Revision 1.37 2005/11/21 15:02:16 deshmukh to this class. What the
* people have been up to: Transaction methods added to this class. What the people have been up to:
* Changes to this class. What the people have been up to: Revision 1.36 2005/11/17 13:09:35
* deshmukh Changes to this class. What the people have been up to: changes in Exception catching
* Changes to this class. What the people have been up to: Changes to this class. What the people
* have been up to: Revision 1.35 2005/11/16 13:45:00 mschneider Changes to this class. What the
* people have been up to: Merge of wfs development branch. Changes to this class. What the people
* have been up to: Changes to this class. What the people have been up to: Revision 1.34.2.2
* 2005/11/16 07:25:19 deshmukh Changes to this class. What the people have been up to: *** empty
* log message *** Changes to this class. What the people have been up to: Changes to this class.
* What the people have been up to: Revision 1.34.2.1 2005/11/15 14:36:19 deshmukh Changes to this
* class. What the people have been up to: QualifiedName modifications Changes to this class. What
* the people have been up to: Changes to this class. What the people have been up to: Revision 1.34
* 2005/09/09 19:14:17 poth Changes to this class. What the people have been up to: no message
* Changes to this class. What the people have been up to: Changes to this class. What the people
* have been up to: Revision 1.33 2005/09/09 08:20:03 poth Changes to this class. What the people
* have been up to: no message Changes to this class. What the people have been up to: Changes to
* this class. What the people have been up to: Revision 1.32 2005/09/08 13:16:33 poth Changes to
* this class. What the people have been up to: no message Changes to this class. What the people
* have been up to: Changes to this class. What the people have been up to: Revision 1.31 2005/09/08
* 12:59:58 poth Changes to this class. What the people have been up to: no message
*
* Revision 1.5 2004/06/28 06:27:05 ap no message
*
* Revision 1.4 2004/06/21 08:05:49 ap no message
*
* Revision 1.3 2004/06/18 08:33:31 ap no message
*
* Revision 1.2 2004/06/17 15:43:12 ap no message
*
* Revision 1.1 2004/06/17 13:48:28 ap no message
*
**************************************************************************************************/