001    // $HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/ogcwebservices/getcapabilities/ServiceIdentification.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.getcapabilities;
045    
046    import org.deegree.datatypes.Code;
047    import org.deegree.model.metadata.iso19115.Keywords;
048    
049    /**
050     * Represents the <code>ServiceIdentification</code> section of the capabilities of an OGC
051     * compliant web service according to the <code>OGC Common Implementation Specification 0.2</code>.
052     * This section corresponds to and expands the SV_ServiceIdentification class in ISO 19119.
053     * <p>
054     * It consists of the following elements: <table border="1">
055     * <tr>
056     * <th>Name</th>
057     * <th>Occurences</th>
058     * <th>Function</th>
059     * </tr>
060     * <tr>
061     * <td>ServiceType</td>
062     * <td align="center">1</td>
063     * <td>Useful to provide service type name useful for machine-to-machine communication</td>
064     * </tr>
065     * <tr>
066     * <td>ServiceTypeVersion</td>
067     * <td align="center">1-*</td>
068     * <td>Useful to provide list of server-supported versions.</td>
069     * </tr>
070     * <tr>
071     * <td>Title</td>
072     * <td align="center">1</td>
073     * <td>Useful to provide a server title for display to a human.</td>
074     * </tr>
075     * <tr>
076     * <td>Abstract</td>
077     * <td align="center">0|1</td>
078     * <td>Usually useful to provide narrative description of server, useful for display to a human.</td>
079     * </tr>
080     * <tr>
081     * <td>Keywords</td>
082     * <td align="center">0-*</td>
083     * <td>Often useful to provide keywords useful for server searching.</td>
084     * </tr>
085     * <tr>
086     * <td>Fees</td>
087     * <td align="center">0|1</td>
088     * <td>Usually useful to specify fees, or NONE if no fees.</td>
089     * </tr>
090     * <tr>
091     * <td>AccessConstraints</td>
092     * <td align="center">0-*</td>
093     * <td>Usually useful to specify access constraints, or NONE if no access constraints.</td>
094     * </tr>
095     * </table>
096     * 
097     * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider </a>
098     * @author last edited by: $Author: apoth $
099     * 
100     * @version $Revision: 9345 $
101     */
102    public class ServiceIdentification {
103    
104        private String name;
105    
106        private Code serviceType;
107    
108        private String[] serviceTypeVersions;
109    
110        private String title;
111    
112        private String serviceAbstract;
113    
114        private Keywords[] keywords;
115    
116        private String fees;
117    
118        private String[] accessConstraints;
119    
120        /**
121         * Constructs a new ServiceIdentification object.
122         * 
123         * @param serviceType
124         * @param serviceTypeVersions
125         * @param title
126         * @param serviceAbstract
127         *            may be null
128         * @param keywords
129         *            may be an empty array or null
130         * @param fees
131         *            may be null
132         * @param accessConstraints
133         *            may be an empty array or null
134         */
135        public ServiceIdentification( String name, Code serviceType, String[] serviceTypeVersions, String title,
136                                      String serviceAbstract, Keywords[] keywords, String fees, String[] accessConstraints ) {
137            this.name = name;
138            this.serviceType = serviceType;
139            this.serviceTypeVersions = serviceTypeVersions;
140            this.title = title;
141            this.serviceAbstract = serviceAbstract;
142            this.keywords = keywords;
143            this.fees = fees;
144            this.accessConstraints = accessConstraints;
145        }
146    
147        /**
148         * Constructs a new ServiceIdentification object.
149         * 
150         * @param serviceType
151         * @param serviceTypeVersions
152         * @param title
153         * @param serviceAbstract
154         *            may be null
155         * @param keywords
156         *            may be an empty array or null
157         * @param fees
158         *            may be null
159         * @param accessConstraints
160         *            may be an empty array or null
161         */
162        public ServiceIdentification( Code serviceType, String[] serviceTypeVersions, String title, String serviceAbstract,
163                                      Keywords[] keywords, String fees, String[] accessConstraints ) {
164            this.name = title;
165            this.serviceType = serviceType;
166            this.serviceTypeVersions = serviceTypeVersions;
167            this.title = title;
168            this.serviceAbstract = serviceAbstract;
169            this.keywords = keywords;
170            this.fees = fees;
171            this.accessConstraints = accessConstraints;
172        }
173    
174        /**
175         * Returns the java representation of the ServiceType-element. In the XML document, this element
176         * has the type ows:CodeType.
177         * 
178         * @return
179         * 
180         */
181        public Code getServiceType() {
182            return serviceType;
183        }
184    
185        /**
186         * Returns the java representation of the ServiceTypeVersion-elements. In the XML document,
187         * these elements have the type ows:VersionType.
188         * 
189         * @return
190         */
191        public String[] getServiceTypeVersions() {
192            return serviceTypeVersions;
193        }
194    
195        /**
196         * Returns the java representation of the Title-element. In the XML document, this element has
197         * the type string.
198         * 
199         * @return
200         */
201        public String getTitle() {
202            return title;
203        }
204    
205        /**
206         * Returns the java representation of the Abstract-element. In the XML document, this element
207         * has the type string.
208         * 
209         * @return
210         */
211        public String getAbstract() {
212            return serviceAbstract;
213        }
214    
215        /**
216         * Returns the java representation of the Keywords-elements. In the XML document, these elements
217         * have the type ows:Keyword.
218         * 
219         * @return
220         */
221        public Keywords[] getKeywords() {
222            return keywords;
223        }
224    
225        /**
226         * Returns the java representation of the AccessConstraints-elements. In the XML document, these
227         * elements have the type string.
228         * 
229         * @return
230         */
231        public String getFees() {
232            return fees;
233        }
234    
235        /**
236         * Returns the java representation of the AccessConstraints-elements. In the XML document, these
237         * elements have the type string.
238         * 
239         * @return
240         */
241        public String[] getAccessConstraints() {
242            return accessConstraints;
243        }
244    
245        /**
246         * @return Returns the name.
247         */
248        public String getName() {
249            return name;
250        }
251    
252    }
253    
254    /***************************************************************************************************
255     * $Log$ Revision 1.9 2006/11/07 11:09:54 mschneider Fixed footer formatting.
256     * 
257     * Revision 1.8 2006/08/01 11:46:07 schmitz Added data classes for the new OWS common capabilities
258     * framework according to the OWS 1.0.0 common specification. Added name to service identification.
259     * 
260     * Revision 1.7 2006/07/12 14:46:16 poth comment footer added
261     * 
262     * Revision 1.6 2006/04/06 20:25:25 poth *** empty log message ***
263     * 
264     * Revision 1.5 2006/04/04 20:39:41 poth *** empty log message ***
265     * 
266     * Revision 1.4 2006/03/30 21:20:25 poth *** empty log message ***
267     * 
268     * Revision 1.3 2005/06/08 15:13:55 poth no message
269     * 
270     * Revision 1.2 2005/01/18 22:08:55 poth no message
271     * 
272     * Revision 1.4 2004/07/12 13:03:21 mschneider More work on the CatalogConfiguration and
273     * capabilities framework.
274     * 
275     * Revision 1.3 2004/06/30 15:16:05 mschneider Refactoring of XMLTools.
276     * 
277     * Revision 1.2 2004/06/28 15:40:13 mschneider Finished the generation of the ServiceIdentification
278     * part of the Capabilities from DOM, added functionality to the XMLTools helper class.
279     * 
280     **************************************************************************************************/