package in.partake.model.dao.postgres9; import in.partake.base.PartakeRuntimeException; import in.partake.model.dao.DAOException; import in.partake.model.dao.PartakeConnection; import in.partake.model.dao.PartakeConnectionPool; import in.partake.resource.ServerErrorCode; import java.sql.Connection; import java.sql.SQLException; import java.util.Date; import javax.sql.DataSource; import play.Logger; import play.db.DB; public class Postgres9ConnectionPool extends PartakeConnectionPool { private final DataSource dataSource; public Postgres9ConnectionPool() { super(); dataSource = DB.getDataSource(); } @Override protected PartakeConnection getConnectionImpl(String name) throws DAOException { if (dataSource == null) throw new PartakeRuntimeException(ServerErrorCode.DB_CONNECTION_POOL_INITIALIZATION_FAILURE); long now = new Date().getTime(); try { Connection con = dataSource.getConnection(); con.setAutoCommit(false); return new Postgres9Connection(name, con, this, now); } catch (SQLException e) { throw new DAOException(e); } } @Override protected void releaseConnectionImpl(PartakeConnection connection) { assert (connection instanceof Postgres9Connection); if (!(connection instanceof Postgres9Connection)) { Logger.warn("connection is not Postgres9Connection."); return; } Postgres9Connection con = (Postgres9Connection) connection; try { con.close(); } catch (DAOException e) { Logger.warn("Connection cannot be released.", e); } } @Override public void willDestroy() { // DO NOTHING. } }