001    // $HeadURL:
002    // /cvsroot/deegree/src/org/deegree/ogcwebservices/csw/configuration/CatalogConfiguration.java,v
003    // 1.6 2004/07/12 12:23:21 tf Exp $
004    /*----------------    FILE HEADER  ------------------------------------------
005    
006     This file is part of deegree.
007     Copyright (C) 2001-2008 by:
008     EXSE, Department of Geography, University of Bonn
009     http://www.giub.uni-bonn.de/deegree/
010     lat/lon GmbH
011     http://www.lat-lon.de
012    
013     This library is free software; you can redistribute it and/or
014     modify it under the terms of the GNU Lesser General Public
015     License as published by the Free Software Foundation; either
016     version 2.1 of the License, or (at your option) any later version.
017    
018     This library is distributed in the hope that it will be useful,
019     but WITHOUT ANY WARRANTY; without even the implied warranty of
020     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
021     Lesser General Public License for more details.
022    
023     You should have received a copy of the GNU Lesser General Public
024     License along with this library; if not, write to the Free Software
025     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
026    
027     Contact:
028    
029     Andreas Poth
030     lat/lon GmbH
031     Aennchenstr. 19
032     53115 Bonn
033     Germany
034     E-Mail: poth@lat-lon.de
035    
036     Prof. Dr. Klaus Greve
037     Department of Geography
038     University of Bonn
039     Meckenheimer Allee 166
040     53115 Bonn
041     Germany
042     E-Mail: greve@giub.uni-bonn.de
043     
044     ---------------------------------------------------------------------------*/
045    
046    package org.deegree.ogcwebservices.csw.configuration;
047    
048    import java.io.IOException;
049    import java.net.URL;
050    
051    import org.deegree.framework.xml.InvalidConfigurationException;
052    import org.deegree.model.filterencoding.capabilities.FilterCapabilities;
053    import org.deegree.ogcwebservices.csw.capabilities.CatalogueCapabilities;
054    import org.deegree.ogcwebservices.csw.capabilities.EBRIMCapabilities;
055    import org.deegree.ogcwebservices.getcapabilities.Contents;
056    import org.deegree.ogcwebservices.getcapabilities.OperationsMetadata;
057    import org.deegree.ogcwebservices.getcapabilities.ServiceIdentification;
058    import org.deegree.ogcwebservices.getcapabilities.ServiceProvider;
059    import org.xml.sax.SAXException;
060    
061    /**
062     * Represents the configuration for a deegree CSW 2.0 instance.
063     * 
064     * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider </a>
065     * @author last edited by: $Author: apoth $
066     * 
067     * @version 2.0, $Revision: 9345 $, $Date: 2007-12-27 17:22:25 +0100 (Do, 27 Dez 2007) $
068     * 
069     * @since 2.0
070     */
071    public class CatalogueConfiguration extends CatalogueCapabilities {
072    
073        private CatalogueDeegreeParams catalogDeegreeParams;
074    
075        private URL systemId;
076    
077        /**
078         * Creates a catalog configuration from an URL
079         * 
080         * @param url
081         * @return
082         * @throws IOException
083         * @throws SAXException
084         */
085        public static CatalogueConfiguration createConfiguration( URL url )
086                                throws IOException, SAXException, InvalidConfigurationException {
087            CatalogueConfigurationDocument confDoc = new CatalogueConfigurationDocument();
088            confDoc.load( url );
089            CatalogueConfiguration configuration = confDoc.getConfiguration();
090            return configuration;
091        }
092    
093        /**
094         * Generates a new CatalogConfiguration instance from the given parameters.
095         * 
096         * @param version
097         * @param updateSequence
098         *            Optional value of service metadata document version, value is increased whenever
099         *            any change is made in complete service metadata document. The value must be
100         *            character string type, not empty.
101         * @param serviceIdentification
102         * @param serviceProvider
103         * @param operationsMetadata
104         * @param contents
105         * @param filterCapabilities
106         * @param catalogDeegreeParams
107         * @param systemId
108         */
109        CatalogueConfiguration( String version, String updateSequence,
110                                ServiceIdentification serviceIdentification,
111                                ServiceProvider serviceProvider, OperationsMetadata operationsMetadata,
112                                Contents contents, FilterCapabilities filterCapabilities,
113                                CatalogueDeegreeParams catalogDeegreeParams, URL systemId ) {
114            super( version, updateSequence, serviceIdentification, serviceProvider, operationsMetadata,
115                   contents, filterCapabilities );
116            this.catalogDeegreeParams = catalogDeegreeParams;
117    
118            this.systemId = systemId;
119    
120        }
121        
122        /**
123         * Generates a new CatalogConfiguration instance from the given parameters.
124         * 
125         * @param version
126         * @param updateSequence
127         *            Optional value of service metadata document version, value is increased whenever
128         *            any change is made in complete service metadata document. The value must be
129         *            character string type, not empty.
130         * @param serviceIdentification
131         * @param serviceProvider
132         * @param operationsMetadata
133         * @param contents
134         * @param filterCapabilities
135         * @param catalogDeegreeParams
136         * @param systemId
137         * @param ebrimCaps the specified ebrim extensions
138         */
139        CatalogueConfiguration( String version, String updateSequence,
140                                ServiceIdentification serviceIdentification,
141                                ServiceProvider serviceProvider, OperationsMetadata operationsMetadata,
142                                Contents contents, FilterCapabilities filterCapabilities,
143                                CatalogueDeegreeParams catalogDeegreeParams, URL systemId, EBRIMCapabilities ebrimCaps ) {
144            super( version, updateSequence, serviceIdentification, serviceProvider, operationsMetadata,
145                   contents, filterCapabilities, ebrimCaps );
146            this.catalogDeegreeParams = catalogDeegreeParams;
147    
148            this.systemId = systemId;
149    
150        }
151    
152        /**
153         * Returns the <code>deegreeParams</code> -section of the configuration.
154         * 
155         * @return the <code>deegreeParams</code> -section of the configuration.
156         */
157        public CatalogueDeegreeParams getDeegreeParams() {
158            return catalogDeegreeParams;
159        }
160    
161        /**
162         * Sets the <code>deegreeParams</code> -section of the configuration.
163         * 
164         * @param deegreeParams
165         */
166        public void setDeegreeParams( CatalogueDeegreeParams deegreeParams ) {
167            this.catalogDeegreeParams = deegreeParams;
168        }
169    
170        public URL getSystemId() {
171            return systemId;
172        }
173    
174    }