Package org.jboss.soa.esb.testutils

Source Code of org.jboss.soa.esb.testutils.HsqldbUtil

package org.jboss.soa.esb.testutils;

import java.io.File;
import java.io.FileFilter;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.Statement;

import org.apache.log4j.Logger;
import org.hsqldb.Server;
/**
* Utility to start and stop a hsql Database.
*
* @author <a href="mailto:kurt.stam@jboss.com">Kurt Stam</a>
*
*/
public class HsqldbUtil
{
  private static Logger log = Logger.getLogger( HsqldbUtil.class );
 
  final private static String THREAD_NAME = "hypersonic-unittest";
 
  /**
   * Drop the hsql database if present.
   *
   * @param databaseFile - i.e. build/hsqltestdb
   * @throws Exception
   */
  public static void dropHsqldb(final String databaseFile)
      throws Exception
  {
    final File file = new File(databaseFile) ;
    final File dir = file.getParentFile() ;
    if (dir.exists())
    {
      final String basename = file.getName() + "." ;
      final FileFilter fileFilter = new FileFilter() {
        public boolean accept(final File pathname) {
          return pathname.getName().startsWith(basename) ;
        }
      };
      final File[] listFiles = dir.listFiles(fileFilter) ;
      if (listFiles != null)
      {
        for(File dbFile: listFiles)
        {
          dbFile.delete() ;
        }
      }
    }
  }
 
  /**
   * Starts the hsql database in it's own thread.
   * Don't forget to shut it down when you're done.
   *
   * @param databaseFile - i.e. build/hsqltestdb
   * @param databaseName - i.e. jbossesb
   * @throws Exception
   */
  public static Object startHsqldb(final String databaseFile,
      final String databaseName) throws Exception
  {
    // Start DB in new thread, or else it will block us
    final Server server = new Server();
    Thread serverThread = new Thread(THREAD_NAME) {
      public void run() {
        try {
          // Start server
          Logger targetLogger = Logger.getLogger( "org.hsqldb" );
          server.setLogWriter( new PrintWriter(
              new StdOut2Log4jFilter( server.getLogWriter(), log, targetLogger.getEffectiveLevel() )) );
          server.setDatabasePath( 0, databaseFile );
          server.setDatabaseName( 0, databaseName );
          server.setNoSystemExit( true );
          server.setSilent( true );
          server.start();
        } catch (Exception e) {
          log.error( e );
        }
        //log.error("Failed to start database", e);
      }
    };
    serverThread.run();
    serverThread.join();
    return server ;
  }
  /**
   *
   * @param url
   * @param username
   * @param password
   * @throws Exception
   */
  public static void stopHsqldb(final Object serverObject) throws Exception {
    if ((serverObject != null) && (serverObject instanceof Server))
    {
      final Server server = (Server)serverObject;
      server.shutdown() ;
    }
  }
}
TOP

Related Classes of org.jboss.soa.esb.testutils.HsqldbUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.