Package org.openstreetmap.osmosis.apidb.v0_6

Source Code of org.openstreetmap.osmosis.apidb.v0_6.ApidbTruncator

// This software is released into the Public Domain.  See copying.txt for details.
package org.openstreetmap.osmosis.apidb.v0_6;

import java.util.Arrays;
import java.util.List;

import org.openstreetmap.osmosis.apidb.common.DatabaseContext;
import org.openstreetmap.osmosis.apidb.v0_6.impl.SchemaVersionValidator;
import org.openstreetmap.osmosis.core.database.DatabaseLoginCredentials;
import org.openstreetmap.osmosis.core.database.DatabasePreferences;
import org.openstreetmap.osmosis.core.task.common.RunnableTask;


/**
* A standalone OSM task with no inputs or outputs that truncates tables in a apidb database. This
* is used for removing all existing data from tables.
*
* @author Brett Henderson
*/
public class ApidbTruncator implements RunnableTask {

  // These tables will be truncated by the sql query.
  private static final List<String> TRUNCATE_TABLES = Arrays.asList(new String[] {
    "current_relation_members",
      "current_relation_tags", "current_relations", "current_way_nodes",
      "current_way_tags", "current_ways", "current_node_tags",
      "current_nodes", "relation_members", "relation_tags", "relations",
      "way_nodes", "way_tags", "ways", "node_tags", "nodes",
      "changeset_tags", "changesets", "users"});

  private final DatabaseContext dbCtx;

  private final SchemaVersionValidator schemaVersionValidator;


  /**
   * Creates a new instance.
   *
   * @param loginCredentials
   *            Contains all information required to connect to the database.
   * @param preferences
   *            Contains preferences configuring database behaviour.
   */
  public ApidbTruncator(DatabaseLoginCredentials loginCredentials, DatabasePreferences preferences) {
    dbCtx = new DatabaseContext(loginCredentials);

    schemaVersionValidator = new SchemaVersionValidator(loginCredentials, preferences);
  }


  /**
   * Truncates all data from the database.
   */
  public void run() {
    try {
      schemaVersionValidator.validateVersion(ApidbVersionConstants.SCHEMA_MIGRATIONS);

      dbCtx.truncateTables(TRUNCATE_TABLES);
     
      dbCtx.commit();

    } finally {
      dbCtx.release();
    }
  }
}
TOP

Related Classes of org.openstreetmap.osmosis.apidb.v0_6.ApidbTruncator

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.