001: //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/trunk/src/org/deegree/ogcwebservices/wms/configuration/AbstractDataSource.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: Aennchenstr. 19
030: 53115 Bonn
031: Germany
032: E-Mail: poth@lat-lon.de
033:
034: Prof. Dr. Klaus Greve
035: Department of Geography
036: University of Bonn
037: Meckenheimer Allee 166
038: 53115 Bonn
039: Germany
040: E-Mail: greve@giub.uni-bonn.de
041:
042:
043: ---------------------------------------------------------------------------*/
044: package org.deegree.ogcwebservices.wms.configuration;
045:
046: import java.net.URL;
047:
048: import org.deegree.datatypes.QualifiedName;
049: import org.deegree.model.spatialschema.Geometry;
050: import org.deegree.ogcwebservices.OGCWebService;
051: import org.deegree.ogcwebservices.OGCWebServiceException;
052: import org.deegree.ogcwebservices.wms.capabilities.ScaleHint;
053:
054: /**
055: * name of the data source where the WMS can find the data of a layer. the
056: * filterServiceClassName element identifies the filter servive that's
057: * responsible for accessing the data.
058: *
059: * @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a>
060: * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider </a>
061: * @version $Revision: 9345 $, $Date: 2007-12-27 08:22:25 -0800 (Thu, 27 Dec 2007) $
062: */
063: public abstract class AbstractDataSource {
064:
065: /**
066: * A constant indicating a local wcs.
067: */
068: public static final int LOCALWCS = 0;
069: /**
070: * A constant indicating a local wfs.
071: */
072: public static final int LOCALWFS = 1;
073: /**
074: * A constant indicating a remote wms.
075: */
076: public static final int REMOTEWMS = 2;
077: /**
078: * A constant indicating a remote wcs.
079: */
080: public static final int REMOTEWCS = 3;
081: /**
082: * A constant indicating a remote wfs.
083: */
084: public static final int REMOTEWFS = 4;
085:
086: protected OGCWebService ows = null;
087: private URL capabilitiesURL;
088: private ScaleHint scaleHint = null;
089: private QualifiedName name = null;
090: private boolean queryable = false;
091: private boolean failOnException = true;
092: private URL featureInfoTransform = null;
093: private Geometry validArea = null;
094: private int reqTimeLimit = 30;
095:
096: private int type = 0;
097:
098: /**
099: * Creates a new DataSource object.
100: *
101: * @param queryable
102: * @param failOnException
103: * @param name
104: * @param type
105: * @param ows
106: * @param capabilitiesURL
107: * @param scaleHint
108: * @param featureInfoTransform
109: */
110: protected AbstractDataSource(boolean queryable,
111: boolean failOnException, QualifiedName name, int type,
112: OGCWebService ows, URL capabilitiesURL,
113: ScaleHint scaleHint, Geometry validArea,
114: URL featureInfoTransform, int reqTimeLimit) {
115: this .scaleHint = scaleHint;
116: this .name = name;
117: this .type = type;
118: this .ows = ows;
119: this .capabilitiesURL = capabilitiesURL;
120: this .failOnException = failOnException;
121: this .queryable = queryable;
122: this .featureInfoTransform = featureInfoTransform;
123: this .validArea = validArea;
124: this .reqTimeLimit = reqTimeLimit;
125: }
126:
127: /**
128: * @return the scale interval the data source is valid
129: */
130: public ScaleHint getScaleHint() {
131: return scaleHint;
132: }
133:
134: /**
135: * @return the name of the data source. The method may returns <tt>null</tt>
136: * if so no name is defined and a online resource or WFS filter have shall
137: * be returned.
138: */
139: public QualifiedName getName() {
140: return name;
141: }
142:
143: /**
144: * @return an instance of the <tt>OGCWebService</tt> that represents the
145: * datasource. Notice: if more than one layer uses data that are offered by
146: * the same OWS the deegree WMS shall just use one instance for accessing
147: * the OWS
148: * @throws OGCWebServiceException
149: *
150: */
151: public abstract OGCWebService getOGCWebService()
152: throws OGCWebServiceException;
153:
154: /**
155: * @return the type of the data source. possible values are:
156: * <ul>
157: * <li>LOCALWFS</li>
158: * <li>LOCALWCS</li>
159: * <li>REMOTEWFS</li>
160: * <li>REMOTEWCS</li>
161: * <li>REMOTEWMS</li>
162: * </ul>
163: * the values are defined as constants in <tt>DataSource</tt>
164: *
165: */
166: public int getType() {
167: return type;
168: }
169:
170: /**
171: * @return true if the requesting of the complete layer and so of the
172: * complete request shall fail if access a datasource fails.
173: */
174: public boolean isFailOnException() {
175: return failOnException;
176: }
177:
178: /**
179: * @return true i a datasource is queryable (considered for GetFeatureInfo
180: * requests)
181: */
182: public boolean isQueryable() {
183: return queryable;
184: }
185:
186: /**
187: * @return the URL of the capabilities document describing access to a
188: * datasource
189: */
190: public URL getCapabilitiesURL() {
191: return capabilitiesURL;
192: }
193:
194: /**
195: * @return the URL of a XSLT script to transform the GML that internaly
196: * will be returned as result to a GetFeature or cascaded GetFeatureInfo
197: * request. The return is null if no transformation shall be performed.
198: *
199: */
200: public URL getFeatureInfoTransform() {
201: return featureInfoTransform;
202: }
203:
204: /**
205: * @return the area a datasource is valid
206: */
207: public Geometry getValidArea() {
208: return validArea;
209: }
210:
211: /**
212: * @return the maximum time in seconds a datasource shall be able to
213: * return a result.
214: */
215: public int getRequestTimeLimit() {
216: return reqTimeLimit;
217: }
218:
219: @Override
220: public String toString() {
221: String ret = getClass().getName() + ":\n";
222: ret += ("scaleHint = " + scaleHint + "\n");
223: ret += ("name = " + name + "\n");
224: ret += ("type = " + type + "\n");
225: ret += ("queryable = " + queryable + "\n");
226: ret += ("failOnException = " + failOnException + "\n");
227: ret += ("capabilitiesURL = " + capabilitiesURL + "\n");
228: ret += ("validArea = " + validArea + "\n");
229: return ret;
230: }
231:
232: }
|