/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.store.support; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import org.hibernate.SessionFactory; import org.springframework.jdbc.datasource.DataSourceUtils; import com.enonic.cms.framework.jdbc.ConnectionDecorator; /** * This class implements the connection factory. */ public final class ConnectionFactory { private SessionFactory sessionFactory; private ConnectionDecorator decorator; private DataSource dataSource; public void setSessionFactory( SessionFactory sessionFactory ) { this.sessionFactory = sessionFactory; } public void setDecorator( ConnectionDecorator decorator ) { this.decorator = decorator; } public void setDataSource( final DataSource dataSource ) { this.dataSource = dataSource; } public Connection getConnection( boolean decorated ) throws SQLException { if ( this.sessionFactory != null ) { final Connection conn = this.sessionFactory.getCurrentSession().connection(); return decorated ? this.decorator.decorate( conn ) : conn; } final Connection conn = DataSourceUtils.getConnection( this.dataSource ); return decorated ? this.decorator.decorate( conn ) : conn; } public Connection getConnectionFromDataSource( boolean decorated ) throws SQLException { final Connection conn = this.dataSource.getConnection(); return decorated ? this.decorator.decorate( conn ) : conn; } }