001    // $HeadURL:
002    // /cvsroot/deegree/src/org/deegree/ogcwebservices/wcs/WCSServiceFactory.java,v
003    // 1.4 2004/06/18 15:50:30 tf Exp $
004    /*----------------------------------------------------------------------------
005     This file is part of deegree, http://deegree.org/
006     Copyright (C) 2001-2009 by:
007       Department of Geography, University of Bonn
008     and
009       lat/lon GmbH
010    
011     This library is free software; you can redistribute it and/or modify it under
012     the terms of the GNU Lesser General Public License as published by the Free
013     Software Foundation; either version 2.1 of the License, or (at your option)
014     any later version.
015     This library is distributed in the hope that it will be useful, but WITHOUT
016     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
017     FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
018     details.
019     You should have received a copy of the GNU Lesser General Public License
020     along with this library; if not, write to the Free Software Foundation, Inc.,
021     59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
022    
023     Contact information:
024    
025     lat/lon GmbH
026     Aennchenstr. 19, 53177 Bonn
027     Germany
028     http://lat-lon.de/
029    
030     Department of Geography, University of Bonn
031     Prof. Dr. Klaus Greve
032     Postfach 1147, 53001 Bonn
033     Germany
034     http://www.geographie.uni-bonn.de/deegree/
035    
036     e-mail: info@deegree.org
037    ----------------------------------------------------------------------------*/
038    package org.deegree.ogcwebservices.wmps;
039    
040    import java.net.URL;
041    
042    import org.deegree.framework.log.ILogger;
043    import org.deegree.framework.log.LoggerFactory;
044    import org.deegree.ogcwebservices.wcs.configuration.InvalidConfigurationException;
045    import org.deegree.ogcwebservices.wmps.configuration.WMPSConfiguration;
046    import org.deegree.ogcwebservices.wmps.configuration.WMPSConfigurationDocument;
047    
048    /**
049     * Service Factory class handles the WMPService Instance.
050     *
051     * @author <a href="mailto:deshmukh@lat-lon.de">Anup Deshmukh</a>
052     * @version 2.0
053     */
054    public final class WMPServiceFactory {
055    
056        private static final ILogger LOG = LoggerFactory.getLogger( WMPServiceFactory.class );
057    
058        private static WMPSConfiguration CONFIG;
059    
060        /**
061         * Returns a WMPService instance
062         *
063         * @return WMPService
064         */
065        public static WMPService getService() {
066            return WMPServiceFactory.getInstance( CONFIG );
067        }
068    
069        /**
070         * Returns a WMPService instance
071         *
072         * @param config
073         * @return WMPService
074         */
075        public static WMPService getInstance( WMPSConfiguration config ) {
076            return new WMPService( config );
077        }
078    
079        /**
080         * Returns true/false depending on the initialized state of the instance.
081         *
082         * @return boolean
083         */
084        public static boolean isInitialized() {
085            return CONFIG != null;
086        }
087    
088        /**
089         * Sets the WMPSConfiguration
090         *
091         * @param wmpsConfiguration
092         */
093        public static void setConfiguration( WMPSConfiguration wmpsConfiguration ) {
094            CONFIG = wmpsConfiguration;
095            /**
096             * if service instance are already created destroy all instances create new service
097             * instances and put in pool
098             */
099            LOG.logInfo( CONFIG.getServiceIdentification().getTitle() + " (" + CONFIG.getVersion()
100                         + ") service pool initialized." );
101        }
102    
103        /**
104         * Sets the service configuration
105         *
106         * @param serviceConfigurationUrl
107         * @throws InvalidConfigurationException
108         */
109        public static void setConfiguration( URL serviceConfigurationUrl )
110                                throws InvalidConfigurationException {
111    
112            try {
113                WMPSConfigurationDocument doc = new WMPSConfigurationDocument();
114                doc.load( serviceConfigurationUrl );
115                WMPSConfiguration conf = doc.parseConfiguration();
116                WMPServiceFactory.setConfiguration( conf );
117            } catch ( Exception e ) {
118                e.printStackTrace();
119                throw new InvalidConfigurationException( "WPSServiceFactory", e.getMessage() );
120            }
121        }
122    }