Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2010-2013 Ning, Inc.
   *
   * Ning licenses this file to you under the Apache License, version 2.0
   * (the "License"); you may not use this file except in compliance with the
   * License.  You may obtain a copy of the License at:
   *
   *    http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
  * License for the specific language governing permissions and limitations
  * under the License.
  */
 
 package com.ning.billing.commons.embeddeddb.h2;
 
 import java.util.UUID;
 
 
 import  org.h2.jdbcx.JdbcConnectionPool;
 import  org.h2.tools.Server;
 
 
 public class H2EmbeddedDB extends EmbeddedDB {
 
     private final AtomicBoolean started = new AtomicBoolean(false);
 
     private Server server;
     private JdbcConnectionPool dataSource;
 
     static {
         try {
             Class.forName("org.h2.Driver");
         } catch (ClassNotFoundException e) {
             throw new RuntimeException(e);
         }
     }
 
     public H2EmbeddedDB() {
         this(UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString());
     }
 
     public H2EmbeddedDB(final String databaseNamefinal String usernamefinal String password) {
         this(databaseNameusernamepassword"jdbc:h2:mem:" + databaseName + ";MODE=MYSQL;DB_CLOSE_DELAY=-1");
     }
 
     public H2EmbeddedDB(final String databaseNamefinal String usernamefinal String passwordfinal String jdbcConnectionString) {
         super(databaseNameusernamepasswordjdbcConnectionString);
     }
 
     @Override
     public DBEngine getDBEngine() {
         return .;
     }
 
     @Override
     public void initialize() throws IOException {
          = JdbcConnectionPool.create();
     }
 
     @Override
     public void start() throws IOException {
         if (.get()) {
             throw new IOException("H2 is already running: " + );
         }
 
         try {
             // Start a web server for debugging (http://127.0.0.1:8082/)
              = Server.createWebServer(new String[]{}).start();
             .set(true);
             .info(String.format("H2 started on http://127.0.0.1:8082. JDBC=%s, Username=%s, Password=%s",
                                       getJdbcConnectionString(), getUsername(), getPassword()));
         } catch (SQLException e) {
             throw new IOException(e);
         }
 
         refreshTableNames();
     }
 
     @Override
     public void refreshTableNames() throws IOException {
         final String query = String.format("select table_name from information_schema.tables where table_catalog = '%s' and table_type = 'TABLE';");
         try {
             executeQuery(querynew ResultSetJob() {
                 @Override
                 public void work(final ResultSet resultSetthrows SQLException {
                     .clear();
                     while (resultSet.next()) {
                         .add(resultSet.getString(1));
                     }
                 }
            });
        } catch (SQLException e) {
            throw new IOException(e);
        }
    }
    @Override
    public DataSource getDataSource() throws IOException {
        if (!.get()) {
            throw new IOException("H2 is not running");
        }
        return ;
    }
    @Override
    public void stop() throws IOException {
        if (!.get()) {
            throw new IOException("H2 is not running");
        }
        if ( != null) {
            .stop();
        }
        if ( != null) {
            .dispose();
        }
        .info(String.format("H2 stopped on http://127.0.0.1:8082. JDBC=%s, Username=%s, Password=%s",
                                  getJdbcConnectionString(), getUsername(), getPassword()));
    }
    @Override
        return "open " + .getURL();
    }
New to GrepCode? Check out our FAQ X