package com.eucalyptus.upgrade; import groovy.sql.Sql; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import org.apache.log4j.Logger; import com.eucalyptus.auth.crypto.Hmacs; public class HsqldbSource implements DatabaseSource { private static Logger LOG = Logger.getLogger( HsqldbSource.class ); private File oldDbDir = new File( System.getProperty( "euca.upgrade.old.dir" ) + "/var/lib/eucalyptus/db/" ); private static Driver driver; private static Properties props; static { try { Class driverClass = ClassLoader.getSystemClassLoader( ).loadClass( "org.hsqldb.jdbcDriver" ); driver = ( Driver ) driverClass.newInstance( ); } catch ( Exception e ) { LOG.debug( e, e ); System.exit( -1 ); } } public HsqldbSource( ) {} /** * @see com.eucalyptus.upgrade.DatabaseSource#getSqlSession(java.lang.String) * @param persistenceContext * @return * @throws SQLException */ public Sql getSqlSession( String persistenceContext ) throws SQLException { String url = "jdbc:hsqldb:file:" + oldDbDir.getAbsolutePath( ) + File.separator + persistenceContext; if ( props == null ) { synchronized ( HsqldbSource.class ) { if ( props == null ) { props = new Properties( ); props.setProperty( "user", "sa" ); props.setProperty( "password", Hmacs.generateSystemSignature( ) ); } } } Connection conn = driver.connect( url, props ); return new Sql( conn ); } }