package net.traviangui.dbInterface;
import java.io.Reader;
import java.sql.Connection;
import java.util.Properties;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;
public class DBInterface
{
private static final Logger logger = Logger.getLogger( DBInterface.class);
private static DBInterface instance;
private SqlSessionFactory sqlMapper;
private DBInterface( )
{
try {
Properties properties = new Properties( );
properties.load( ClassLoader.getSystemResourceAsStream( "config/database.properties"));
// String url = "jdbc:derby:" + tempDir + "sharedPhotoDB;create=true";
String url = properties.getProperty( "url").replace( "$tmpDir$", "." );
properties.setProperty( "url", url);
logger.debug( "DB url=" + url);
String resource = "config/database.sql.xml";
Reader reader = Resources.getResourceAsReader( resource);
sqlMapper = new SqlSessionFactoryBuilder().build( reader, properties);
reader.close();
// SqlSession session = sqlMapper.openSession();
// try {
// Blog blog = (Blog) session.select(
// "org.apache.ibatis.example.BlogMapper.selectBlog", 101);
// } finally {
// session.close();
// }
// Reader reader = Resources.getResourceAsReader( "SqlMapConfig.xml");
// sqlMapper = SqlMapClientBuilder.buildSqlMapClient( reader, properties);
// reader.close();
SqlSession session = sqlMapper.openSession();
Connection connection = session.getConnection();
ScriptRunner runner = new ScriptRunner( connection);
runner.runScript( Resources.getResourceAsReader( "initialize-db.sql"));
connection.close();
session.close();
// executeDDLFile(
// Thread.currentThread().getContextClassLoader().getResource( "ddl.txt"),
// sqlMapper.getCurrentConnection( ));
//
// psInsert = conn.prepareStatement( "insert into WISH_LIST(WISH_ITEM) values (?)");
} catch( Exception e) {
// Fail fast.
throw new RuntimeException( "Something bad happened while building the SqlMapClient instance." + e, e);
}
}
/**
* @return the instance
*/
public static DBInterface getInstance( )
{
if( instance == null) {
instance = new DBInterface();
}
return instance;
}
/**
* @return the sqlMapper
*/
public SqlSession getSession( )
{
return sqlMapper.openSession();
}
}