package org.openswing.swing.server;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* <p>Title: OpenSwing Framework</p>
* <p>Description: Database Connection Factory: it creates a ConnectionSource object as manager of database connections.</p>
* This is a sngleton class: developers can directly refer this class to access to the database
* from the rest of the application (server side).
* <p>Copyright: Copyright (C) 2006 Mauro Carniel</p>
*
* <p> This file is part of OpenSwing Framework.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the (LGPL) Lesser General Public
* License as published by the Free Software Foundation;
*
* GNU LESSER GENERAL PUBLIC LICENSE
* Version 2.1, February 1999
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* The author may be contacted at:
* maurocarniel@tin.it</p>
*
* @author Mauro Carniel
* @version 1.0
*/
public class ConnectionManager {
/** database connection manager */
private static ConnectionSource connectionSource = new NoConnectionSource();
/**
* @return <code>true</code> if the connection source has been correcly created, <code>false</code> otherwise
*/
public static boolean isConnectionSourceCreated() {
return connectionSource!=null;
}
/**
* @param context servlet context; used to retrieve database connection settings
* @return new database connection
*/
public static Connection getConnection(ServletContext context) throws Exception {
return connectionSource.getConnection(context);
}
/**
* Release a database connection
* @param conn database connection to release
* @param context servlet context; used to retrieve database connection settings
*/
public static void releaseConnection(Connection conn,ServletContext context) {
connectionSource.releaseConnection(conn,context);
}
/**
* Method called by the server controller (class Controller).
* @param context servlet context; used to retrieve database connection settings
* @param connectionSourceClassName database connection manager class name
*/
public static void initConnectionSource(HttpServlet servlet,String connectionSourceClassName) {
try {
connectionSource = (ConnectionSource)Class.forName(connectionSourceClassName).newInstance();
if (!connectionSource.initPooler(servlet))
connectionSource = null;
}
catch (Throwable ex) {
connectionSource = null;
ex.printStackTrace();
servlet.getServletContext().log("Error while creating connection source '"+connectionSourceClassName+"'",ex);
}
}
/**
* Method called by the server controller (class Controller).
*/
public static void destroyConnectionSource() {
connectionSource = null;
}
}