001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/ogcwebservices/wass/common/WASSSecurityManager.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    
045    package org.deegree.ogcwebservices.wass.common;
046    
047    import java.util.Properties;
048    
049    import org.deegree.framework.log.ILogger;
050    import org.deegree.framework.log.LoggerFactory;
051    import org.deegree.i18n.Messages;
052    import org.deegree.io.JDBCConnection;
053    import org.deegree.security.GeneralSecurityException;
054    import org.deegree.security.drm.SecurityAccessManager;
055    
056    /**
057     * This class will hold the SecurityAccessManager Instance and will be able to parse the
058     * user/password key for the security database.
059     * 
060     * @author <a href="mailto:bezema@lat-lon.de">Rutger Bezema</a>
061     * @author last edited by: $Author: apoth $
062     * 
063     * @version $Revision: 9348 $, $Date: 2007-12-27 17:59:14 +0100 (Do, 27 Dez 2007) $
064     */
065    
066    public class WASSSecurityManager {
067    
068        private JDBCConnection databaseInfo = null;
069        
070        private SecurityAccessManager securityAccessManager = null;
071    
072        private static final ILogger LOG = LoggerFactory.getLogger( WASSSecurityManager.class );
073    
074        /**
075         * This constructor initializes the connection to the security database.
076         * 
077         * @param dbInfo a database information object
078         * 
079         * @throws GeneralSecurityException
080         */
081        public WASSSecurityManager( JDBCConnection dbInfo ) throws GeneralSecurityException {
082            databaseInfo = dbInfo;
083            initializeSecurityAccessManager();
084        }
085    
086        /**
087         * Loads the deegree SecurityAccesManager if no instance is present jet.
088         * 
089         * @throws GeneralSecurityException
090         *             if the no instance of the deegree securitymanager could be touched.
091         */
092        private void initializeSecurityAccessManager()
093                                throws GeneralSecurityException {
094            
095            if( databaseInfo == null ) {
096                LOG.logError( Messages.getMessage( "WASS_ERROR_SECURITYACCESSMANAGER_NO_DBINFO" ) );
097                return;
098            }
099            Properties properties = new Properties();
100            properties.setProperty( "driver", databaseInfo.getDriver() );
101            properties.setProperty( "url", databaseInfo.getURL() );
102            properties.setProperty( "user", databaseInfo.getUser() );
103            properties.setProperty( "password", databaseInfo.getPassword() );
104            try {
105                securityAccessManager = SecurityAccessManager.getInstance();
106            } catch ( GeneralSecurityException gse ) {
107                try {
108                    SecurityAccessManager.initialize( "org.deegree.security.drm.SQLRegistry",
109                                                      properties, 60 * 1000 );
110                    securityAccessManager = SecurityAccessManager.getInstance();
111                } catch ( GeneralSecurityException gse2 ) {
112                    LOG.logError( Messages.getMessage( "WASS_ERROR_SECURITYACCESSMANAGER" ) );
113                    LOG.logError( gse2.getLocalizedMessage(), gse2 );
114                    throw new GeneralSecurityException(
115                                                       Messages.getMessage( "WASS_ERROR_SECURITYACCESSMANAGER" ) );
116                }
117            }
118            
119        }
120    
121        /**
122         * @return Returns the deegree securityAccessManager.
123         * @throws GeneralSecurityException
124         */
125        public SecurityAccessManager getSecurityAccessManager()
126                                throws GeneralSecurityException {
127            
128            if ( securityAccessManager == null ) {
129                throw new GeneralSecurityException(
130                                                    Messages.getMessage( "WASS_ERROR_SECURITYACCESSMANAGER_NO_INIT" ) );
131            }
132            
133            return securityAccessManager;
134        }
135    
136    }