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;
 
 import java.util.List;
 
 
 
 public abstract class EmbeddedDB {
 
     protected static final Logger logger = LoggerFactory.getLogger(EmbeddedDB.class);
 
     public enum DBEngine {
         MYSQL,
         H2
     }
 
     // Not final to allow more flexible implementers
     protected String databaseName;
     protected String username;
     protected String password;
     protected String jdbcConnectionString;
 
     protected List<StringallTables = new LinkedList<String>();
 
     protected EmbeddedDB(final String databaseNamefinal String usernamefinal String passwordfinal String jdbcConnectionString) {
         this. = databaseName;
         this. = username;
         this. = password;
         this. = jdbcConnectionString;
     }
 
     public abstract DBEngine getDBEngine();
 
     public abstract void initialize() throws IOException;
 
     public abstract void start() throws IOException;
 
     public abstract void refreshTableNames() throws IOException;
 
     public abstract DataSource getDataSource() throws IOException;
 
     public abstract void stop() throws IOException;
 
     // Optional - for debugging, how to connect to it?
     public String getCmdLineConnectionString() {
         return null;
     }
 
     public String getUsername() {
         return ;
     }
 
     public String getPassword() {
         return ;
     }
 
     public String getDatabaseName() {
         return ;
     }
 
     public String getJdbcConnectionString() {
         return ;
     }
 
     public List<StringgetAllTables() {
         return ;
     }
 
     private static final Pattern WHITESPACE_ONLY = Pattern.compile("^\\s*$");
 
     public void executeScript(final String scriptthrows IOException {
         final String[] rawStatements = script.replaceAll("\n"" ").replaceAll("\r""").split(";");
         for (final String statement : rawStatements) {
             if (!.matcher(statement).matches()) {
                try {
                    // TODO consider batch approach
                    execute(statement);
                } catch (SQLException e) {
                    throw new IOException(e);
                }
            }
        }
    }
    public void cleanupAllTables() throws IOException {
        for (final String tableName : ) {
            cleanupTable(tableName);
        }
    }
    public void cleanupTable(final String tablethrows IOException {
        .debug("Deleting table: " + table);
        try {
            executeQuery("truncate table " + table);
        } catch (SQLException e) {
            throw new IOException(e);
        }
    }
    protected void execute(final String querythrows SQLExceptionIOException {
        execute(querynew ResultSetJob());
    }
    protected void execute(final String queryfinal ResultSetJob jobthrows SQLExceptionIOException {
        final Connection connection = getConnection();
        Statement statement = null;
        try {
            statement = connection.createStatement();
            if (statement.execute(query)) {
                job.work(statement.getResultSet());
            }
        } finally {
            if (statement != null) {
                statement.close();
            }
            connection.close();
        }
    }
    protected void executeQuery(final String querythrows SQLExceptionIOException {
        executeQuery(querynew ResultSetJob());
    }
    protected void executeQuery(final String queryfinal ResultSetJob jobthrows SQLExceptionIOException {
        final Connection connection = getConnection();
        Statement statement = null;
        try {
            statement = connection.createStatement();
            final ResultSet rs = statement.executeQuery(query);
            job.work(rs);
        } finally {
            if (statement != null) {
                statement.close();
            }
            connection.close();
        }
    }
    protected Connection getConnection() throws SQLExceptionIOException {
        return getDataSource().getConnection();
    }
    protected static class ResultSetJob {
        public void work(final ResultSet resultSetthrows SQLException {}
    }
New to GrepCode? Check out our FAQ X