Package com.opengamma.util.db.tool

Source Code of com.opengamma.util.db.tool.DbCreateOperation

/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.db.tool;

import java.io.File;
import java.io.IOException;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.util.db.script.DbScript;

/**
* Creates database objects using the installation scripts.
*/
public class DbCreateOperation extends AbstractDbScriptOperation<DbToolContext> {

  private static final Logger s_logger = LoggerFactory.getLogger(DbCreateOperation.class);
 
  private final boolean _dropCatalog;
 
  /**
   * Constructs an instance.
   *
   * @param dbToolContext  the database tool context, not null
   * @param write  true to modify the database, false to output the commands that would be run
   * @param outputFile  the file to which the SQL should be written, null not to write to a file
   * @param dropCatalog  indicates whether to drop the catalog if it already exists
   */
  public DbCreateOperation(DbToolContext dbToolContext, boolean write, File outputFile, boolean dropCatalog) {
    super(dbToolContext, write, outputFile);
    _dropCatalog = dropCatalog;
  }
 
  //-------------------------------------------------------------------------
  @Override
  public void execute() {
    if (isDropCatalog()) {
      dropCatalog();
    }
    try (SqlScriptWriter writer = createSqlScriptWriter()) {
      Set<String> schemaNames = getDbToolContext().getSchemaNames() != null ? getDbToolContext().getSchemaNames() : getAllSchemaNames();
      for (String schema : schemaNames) {
        s_logger.info("Processing schema " + schema);
        DbScript script = getCreationScript(schema);
        s_logger.debug("Using script: " + script);
        writer.write(schema, script);
      }
      s_logger.info("Scripts processed successfully");
    } catch (IOException e) {
      throw new OpenGammaRuntimeException("Error processing creation scripts", e);
    }
  }

  protected void dropCatalog() {
    contextNotNull(getDbToolContext().catalog());
   
    if (!isWrite()) {
      s_logger.info("Would erase the contents of " + getDbToolContext().getCatalog() + " but skipping in read-only mode");
      return;
    }
       
    if (s_logger.isInfoEnabled()) {
      // Give the user a chance to kill the script
      s_logger.info("About to erase the contents of " + getDbToolContext().getCatalog() + "...");
      try {
        Thread.sleep(3000);
      } catch (InterruptedException e) {
      }
    }
   
    s_logger.info("Dropping contents of catalog " + getDbToolContext().getCatalog());
    getDbToolContext().getDbManagement().dropSchema(getDbToolContext().getCatalog(), null);
  }

  //-------------------------------------------------------------------------
  private boolean isDropCatalog() {
    return _dropCatalog;
  }
 
}
TOP

Related Classes of com.opengamma.util.db.tool.DbCreateOperation

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.