Package org.hivedb.configuration

Source Code of org.hivedb.configuration.HiveConfigurationSchema

/**
* HiveDB is an Open Source (LGPL) system for creating large, high-transaction-volume
* data storage systems.
*/
package org.hivedb.configuration;

import org.apache.commons.dbcp.BasicDataSource;
import org.hivedb.Schema;
import org.hivedb.meta.persistence.TableInfo;
import org.hivedb.util.Templater;
import org.hivedb.util.database.Schemas;

import java.util.ArrayList;
import java.util.Collection;

/**
* The Global Hive Configuration schema contains records of the Hive's internal
* partitioning, indexing, and node allocation.
* <p>
* Generic DDL is used for portability. No indexing is performed, as global schema
* records will number in the hundreds or thousands, and all records are loaded
* upon each access.
* </p>
*
* @author Justin McCarthy (jmccarthy@cafepress.com)
* @author Britt Crawford (bcrawford@cafepress.com)
*/
public class HiveConfigurationSchema extends Schema {
  private String dbURI;

  /**
   * GlobalSchema is constructed against a JDBC URI, which will be the destination
   * for the schema tables.
   *
   * @param dbURI Empty target database connect string, including username, password & catalog
   */
  public HiveConfigurationSchema(String dbURI) {
    this();
    this.dbURI = dbURI;
  }

  public HiveConfigurationSchema() {
    super("Hive configuration schema");
  }

  private String getCreateNode() {
    return Templater.render("sql/node_configuration.vsql", Schemas.getContext(dbURI));
  }

  private String getCreateHive() {
    return Templater.render("sql/hive_semaphore.vsql", Schemas.getContext(dbURI));
  }

  private String getCreatePartitionDimension() {
    return Templater.render("sql/partition_dimension_configuration.vsql", Schemas.getContext(dbURI));
  }

  private String getCreateSecondaryIndex() {
    return Templater.render("sql/secondary_index_configuration.vsql", Schemas.getContext(dbURI));
  }

  private String getCreateResource() {
    return Templater.render("sql/resource_configuration.vsql", Schemas.getContext(dbURI));
  }

  public void install() {
    Schemas.install(this, dbURI);
    BasicDataSource ds = new BasicDataSource();
    ds.setUrl(dbURI);
  }

  public String[] getCreateStatements() {
    return new String[]{
      getCreateHive(),
      getCreateNode(),
      getCreatePartitionDimension(),
      getCreateSecondaryIndex(),
      getCreateResource()};
  }

  @Override
  public Collection<TableInfo> getTables(String uri) {
    Collection<TableInfo> TableInfos = new ArrayList<TableInfo>();
    TableInfos.add(new TableInfo("semaphore_metadata", getCreateHive()));
    TableInfos.add(new TableInfo("node_metadata", getCreateNode()));
    TableInfos.add(new TableInfo("partition_dimension_metadata", getCreatePartitionDimension()));
    TableInfos.add(new TableInfo("secondary_index_metadata", getCreateSecondaryIndex()));
    TableInfos.add(new TableInfo("resource_metadata", getCreateResource()));
    return TableInfos;
  }
}
TOP

Related Classes of org.hivedb.configuration.HiveConfigurationSchema

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.