You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by bl...@apache.org on 2011/11/01 08:10:14 UTC

svn commit: r1195852 [2/7] - in /incubator/sqoop/trunk/src/java: com/cloudera/sqoop/orm/ com/cloudera/sqoop/tool/ org/apache/sqoop/orm/ org/apache/sqoop/tool/

Modified: incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/BaseSqoopTool.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/BaseSqoopTool.java?rev=1195852&r1=1195851&r2=1195852&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/BaseSqoopTool.java (original)
+++ incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/BaseSqoopTool.java Tue Nov  1 07:10:13 2011
@@ -1,6 +1,4 @@
 /**
- * Copyright 2011 The Apache Software Foundation
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,162 +15,188 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.cloudera.sqoop.tool;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.sql.SQLException;
-import java.util.Arrays;
-import java.util.Properties;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.OptionGroup;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.util.StringUtils;
-import org.apache.log4j.Category;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-
-import com.cloudera.sqoop.ConnFactory;
-import com.cloudera.sqoop.Sqoop;
-import com.cloudera.sqoop.SqoopOptions;
-import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
-import com.cloudera.sqoop.cli.RelatedOptions;
-import com.cloudera.sqoop.cli.ToolOptions;
-import com.cloudera.sqoop.lib.DelimiterSet;
-import com.cloudera.sqoop.manager.ConnManager;
-import com.cloudera.sqoop.metastore.JobData;
-
 /**
- * Layer on top of SqoopTool that provides some basic common code
- * that most SqoopTool implementations will use.
- *
- * Subclasses should call init() at the top of their run() method,
- * and call destroy() at the end in a finally block.
+ * @deprecated Moving to use org.apache.sqoop namespace.
  */
-public abstract class BaseSqoopTool extends SqoopTool {
-
-  public static final Log LOG = LogFactory.getLog(
-      BaseSqoopTool.class.getName());
+public abstract class BaseSqoopTool
+    extends org.apache.sqoop.tool.BaseSqoopTool {
 
-  public static final String HELP_STR = "\nTry --help for usage instructions.";
-
-  // Here are all the arguments that are used by the standard sqoop tools.
-  // Their names are recorded here so that tools can share them and their
-  // use consistently. The argument parser applies the leading '--' to each
-  // string.
-  public static final String CONNECT_STRING_ARG = "connect";
+  public static final String HELP_STR =
+          org.apache.sqoop.tool.BaseSqoopTool.HELP_STR;
+  public static final String CONNECT_STRING_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.CONNECT_STRING_ARG;
   public static final String CONN_MANAGER_CLASS_NAME =
-      "connection-manager";
-  public static final String CONNECT_PARAM_FILE = "connection-param-file";
-  public static final String DRIVER_ARG = "driver";
-  public static final String USERNAME_ARG = "username";
-  public static final String PASSWORD_ARG = "password";
-  public static final String PASSWORD_PROMPT_ARG = "P";
-  public static final String DIRECT_ARG = "direct";
-  public static final String BATCH_ARG = "batch";
-  public static final String TABLE_ARG = "table";
-  public static final String STAGING_TABLE_ARG = "staging-table";
-  public static final String CLEAR_STAGING_TABLE_ARG = "clear-staging-table";
-  public static final String COLUMNS_ARG = "columns";
-  public static final String SPLIT_BY_ARG = "split-by";
-  public static final String WHERE_ARG = "where";
-  public static final String HADOOP_HOME_ARG = "hadoop-home";
-  public static final String HIVE_HOME_ARG = "hive-home";
-  public static final String WAREHOUSE_DIR_ARG = "warehouse-dir";
-  public static final String TARGET_DIR_ARG = "target-dir";
-  public static final String APPEND_ARG = "append";
-  public static final String NULL_STRING = "null-string";
-  public static final String INPUT_NULL_STRING = "input-null-string";
-  public static final String NULL_NON_STRING = "null-non-string";
-  public static final String INPUT_NULL_NON_STRING = "input-null-non-string";
-  public static final String MAP_COLUMN_JAVA = "map-column-java";
-  public static final String MAP_COLUMN_HIVE = "map-column-hive";
-
-  public static final String FMT_SEQUENCEFILE_ARG = "as-sequencefile";
-  public static final String FMT_TEXTFILE_ARG = "as-textfile";
-  public static final String FMT_AVRODATAFILE_ARG = "as-avrodatafile";
-  public static final String HIVE_IMPORT_ARG = "hive-import";
-  public static final String HIVE_TABLE_ARG = "hive-table";
-  public static final String HIVE_OVERWRITE_ARG = "hive-overwrite";
-  public static final String HIVE_DROP_DELIMS_ARG = "hive-drop-import-delims";
+          org.apache.sqoop.tool.BaseSqoopTool.CONN_MANAGER_CLASS_NAME;
+  public static final String CONNECT_PARAM_FILE =
+          org.apache.sqoop.tool.BaseSqoopTool.CONNECT_PARAM_FILE;
+  public static final String DRIVER_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.DRIVER_ARG;
+  public static final String USERNAME_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.USERNAME_ARG;
+  public static final String PASSWORD_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.PASSWORD_ARG;
+  public static final String PASSWORD_PROMPT_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.PASSWORD_PROMPT_ARG;
+  public static final String DIRECT_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.DIRECT_ARG;
+  public static final String BATCH_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.BATCH_ARG;
+  public static final String TABLE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.TABLE_ARG;
+  public static final String STAGING_TABLE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.STAGING_TABLE_ARG;
+  public static final String CLEAR_STAGING_TABLE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.CLEAR_STAGING_TABLE_ARG;
+  public static final String COLUMNS_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.COLUMNS_ARG;
+  public static final String SPLIT_BY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.SPLIT_BY_ARG;
+  public static final String WHERE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.WHERE_ARG;
+  public static final String HADOOP_HOME_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HADOOP_HOME_ARG;
+  public static final String HIVE_HOME_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HIVE_HOME_ARG;
+  public static final String WAREHOUSE_DIR_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.WAREHOUSE_DIR_ARG;
+  public static final String TARGET_DIR_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.TARGET_DIR_ARG;
+  public static final String APPEND_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.APPEND_ARG;
+  public static final String NULL_STRING =
+          org.apache.sqoop.tool.BaseSqoopTool.NULL_STRING;
+  public static final String INPUT_NULL_STRING =
+          org.apache.sqoop.tool.BaseSqoopTool.INPUT_NULL_STRING;
+  public static final String NULL_NON_STRING =
+          org.apache.sqoop.tool.BaseSqoopTool.NULL_NON_STRING;
+  public static final String INPUT_NULL_NON_STRING =
+          org.apache.sqoop.tool.BaseSqoopTool.INPUT_NULL_NON_STRING;
+  public static final String MAP_COLUMN_JAVA =
+          org.apache.sqoop.tool.BaseSqoopTool.MAP_COLUMN_JAVA;
+  public static final String MAP_COLUMN_HIVE =
+          org.apache.sqoop.tool.BaseSqoopTool.MAP_COLUMN_HIVE;
+  public static final String FMT_SEQUENCEFILE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.FMT_SEQUENCEFILE_ARG;
+  public static final String FMT_TEXTFILE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.FMT_TEXTFILE_ARG;
+  public static final String FMT_AVRODATAFILE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.FMT_AVRODATAFILE_ARG;
+  public static final String HIVE_IMPORT_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HIVE_IMPORT_ARG;
+  public static final String HIVE_TABLE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HIVE_TABLE_ARG;
+  public static final String HIVE_OVERWRITE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HIVE_OVERWRITE_ARG;
+  public static final String HIVE_DROP_DELIMS_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HIVE_DROP_DELIMS_ARG;
   public static final String HIVE_DELIMS_REPLACEMENT_ARG =
-          "hive-delims-replacement";
-  public static final String HIVE_PARTITION_KEY_ARG = "hive-partition-key";
-  public static final String HIVE_PARTITION_VALUE_ARG = "hive-partition-value";
+          org.apache.sqoop.tool.BaseSqoopTool.HIVE_DELIMS_REPLACEMENT_ARG;
+  public static final String HIVE_PARTITION_KEY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HIVE_PARTITION_KEY_ARG;
+  public static final String HIVE_PARTITION_VALUE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HIVE_PARTITION_VALUE_ARG;
   public static final String CREATE_HIVE_TABLE_ARG =
-      "create-hive-table";
-  public static final String NUM_MAPPERS_ARG = "num-mappers";
-  public static final String NUM_MAPPERS_SHORT_ARG = "m";
-  public static final String COMPRESS_ARG = "compress";
-  public static final String COMPRESSION_CODEC_ARG = "compression-codec";
-  public static final String COMPRESS_SHORT_ARG = "z";
-  public static final String DIRECT_SPLIT_SIZE_ARG = "direct-split-size";
-  public static final String INLINE_LOB_LIMIT_ARG = "inline-lob-limit";
-  public static final String FETCH_SIZE_ARG = "fetch-size";
-  public static final String EXPORT_PATH_ARG = "export-dir";
-  public static final String FIELDS_TERMINATED_BY_ARG = "fields-terminated-by";
-  public static final String LINES_TERMINATED_BY_ARG = "lines-terminated-by";
+          org.apache.sqoop.tool.BaseSqoopTool.CREATE_HIVE_TABLE_ARG;
+  public static final String NUM_MAPPERS_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.NUM_MAPPERS_ARG;
+  public static final String NUM_MAPPERS_SHORT_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.NUM_MAPPERS_SHORT_ARG;
+  public static final String COMPRESS_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.COMPRESS_ARG;
+  public static final String COMPRESSION_CODEC_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.COMPRESSION_CODEC_ARG;
+  public static final String COMPRESS_SHORT_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.COMPRESS_SHORT_ARG;
+  public static final String DIRECT_SPLIT_SIZE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.DIRECT_SPLIT_SIZE_ARG;
+  public static final String INLINE_LOB_LIMIT_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.INLINE_LOB_LIMIT_ARG;
+  public static final String FETCH_SIZE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.FETCH_SIZE_ARG;
+  public static final String EXPORT_PATH_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.EXPORT_PATH_ARG;
+  public static final String FIELDS_TERMINATED_BY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.FIELDS_TERMINATED_BY_ARG;
+  public static final String LINES_TERMINATED_BY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.LINES_TERMINATED_BY_ARG;
   public static final String OPTIONALLY_ENCLOSED_BY_ARG =
-      "optionally-enclosed-by";
-  public static final String ENCLOSED_BY_ARG = "enclosed-by";
-  public static final String ESCAPED_BY_ARG = "escaped-by";
-  public static final String MYSQL_DELIMITERS_ARG = "mysql-delimiters";
+          org.apache.sqoop.tool.BaseSqoopTool.OPTIONALLY_ENCLOSED_BY_ARG;
+  public static final String ENCLOSED_BY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.ENCLOSED_BY_ARG;
+  public static final String ESCAPED_BY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.ESCAPED_BY_ARG;
+  public static final String MYSQL_DELIMITERS_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.MYSQL_DELIMITERS_ARG;
   public static final String INPUT_FIELDS_TERMINATED_BY_ARG =
-      "input-fields-terminated-by";
+          org.apache.sqoop.tool.BaseSqoopTool.INPUT_FIELDS_TERMINATED_BY_ARG;
   public static final String INPUT_LINES_TERMINATED_BY_ARG =
-      "input-lines-terminated-by";
+          org.apache.sqoop.tool.BaseSqoopTool.INPUT_LINES_TERMINATED_BY_ARG;
   public static final String INPUT_OPTIONALLY_ENCLOSED_BY_ARG =
-      "input-optionally-enclosed-by";
-  public static final String INPUT_ENCLOSED_BY_ARG = "input-enclosed-by";
-  public static final String INPUT_ESCAPED_BY_ARG = "input-escaped-by";
-  public static final String CODE_OUT_DIR_ARG = "outdir";
-  public static final String BIN_OUT_DIR_ARG = "bindir";
-  public static final String PACKAGE_NAME_ARG = "package-name";
-  public static final String CLASS_NAME_ARG = "class-name";
-  public static final String JAR_FILE_NAME_ARG = "jar-file";
-  public static final String SQL_QUERY_ARG = "query";
-  public static final String SQL_QUERY_BOUNDARY = "boundary-query";
-  public static final String SQL_QUERY_SHORT_ARG = "e";
-  public static final String VERBOSE_ARG = "verbose";
-  public static final String HELP_ARG = "help";
-  public static final String UPDATE_KEY_ARG = "update-key";
-  public static final String UPDATE_MODE_ARG = "update-mode";
-
-  // Arguments for incremental imports.
-  public static final String INCREMENT_TYPE_ARG = "incremental";
-  public static final String INCREMENT_COL_ARG = "check-column";
-  public static final String INCREMENT_LAST_VAL_ARG = "last-value";
-
-  // HBase arguments.
-  public static final String HBASE_TABLE_ARG = "hbase-table";
-  public static final String HBASE_COL_FAM_ARG = "column-family";
-  public static final String HBASE_ROW_KEY_ARG = "hbase-row-key";
-  public static final String HBASE_CREATE_TABLE_ARG = "hbase-create-table";
-
-
-  // Arguments for the saved job management system.
-  public static final String STORAGE_METASTORE_ARG = "meta-connect";
-  public static final String JOB_CMD_CREATE_ARG = "create";
-  public static final String JOB_CMD_DELETE_ARG = "delete";
-  public static final String JOB_CMD_EXEC_ARG = "exec";
-  public static final String JOB_CMD_LIST_ARG = "list";
-  public static final String JOB_CMD_SHOW_ARG = "show";
-
-  // Arguments for the metastore.
-  public static final String METASTORE_SHUTDOWN_ARG = "shutdown";
-
-
-  // Arguments for merging datasets.
-  public static final String NEW_DATASET_ARG = "new-data";
-  public static final String OLD_DATASET_ARG = "onto";
-  public static final String MERGE_KEY_ARG = "merge-key";
+          org.apache.sqoop.tool.BaseSqoopTool.INPUT_OPTIONALLY_ENCLOSED_BY_ARG;
+  public static final String INPUT_ENCLOSED_BY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.INPUT_ENCLOSED_BY_ARG;
+  public static final String INPUT_ESCAPED_BY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.INPUT_ESCAPED_BY_ARG;
+  public static final String CODE_OUT_DIR_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.CODE_OUT_DIR_ARG;
+  public static final String BIN_OUT_DIR_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.BIN_OUT_DIR_ARG;
+  public static final String PACKAGE_NAME_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.PACKAGE_NAME_ARG;
+  public static final String CLASS_NAME_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.CLASS_NAME_ARG;
+  public static final String JAR_FILE_NAME_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.JAR_FILE_NAME_ARG;
+  public static final String SQL_QUERY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.SQL_QUERY_ARG;
+  public static final String SQL_QUERY_BOUNDARY =
+          org.apache.sqoop.tool.BaseSqoopTool.SQL_QUERY_BOUNDARY;
+  public static final String SQL_QUERY_SHORT_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.SQL_QUERY_SHORT_ARG;
+  public static final String VERBOSE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.VERBOSE_ARG;
+  public static final String HELP_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HELP_ARG;
+  public static final String UPDATE_KEY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.UPDATE_KEY_ARG;
+  public static final String UPDATE_MODE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.UPDATE_MODE_ARG;
+  public static final String INCREMENT_TYPE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.INCREMENT_TYPE_ARG;
+  public static final String INCREMENT_COL_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.INCREMENT_COL_ARG;
+  public static final String INCREMENT_LAST_VAL_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.INCREMENT_LAST_VAL_ARG;
+  public static final String HBASE_TABLE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HBASE_TABLE_ARG;
+  public static final String HBASE_COL_FAM_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HBASE_COL_FAM_ARG;
+  public static final String HBASE_ROW_KEY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HBASE_ROW_KEY_ARG;
+  public static final String HBASE_CREATE_TABLE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.HBASE_CREATE_TABLE_ARG;
+  public static final String STORAGE_METASTORE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.STORAGE_METASTORE_ARG;
+  public static final String JOB_CMD_CREATE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.JOB_CMD_CREATE_ARG;
+  public static final String JOB_CMD_DELETE_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.JOB_CMD_DELETE_ARG;
+  public static final String JOB_CMD_EXEC_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.JOB_CMD_EXEC_ARG;
+  public static final String JOB_CMD_LIST_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.JOB_CMD_LIST_ARG;
+  public static final String JOB_CMD_SHOW_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.JOB_CMD_SHOW_ARG;
+  public static final String METASTORE_SHUTDOWN_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.METASTORE_SHUTDOWN_ARG;
+  public static final String NEW_DATASET_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.NEW_DATASET_ARG;
+  public static final String OLD_DATASET_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.OLD_DATASET_ARG;
+  public static final String MERGE_KEY_ARG =
+          org.apache.sqoop.tool.BaseSqoopTool.MERGE_KEY_ARG;
 
   public BaseSqoopTool() {
   }
@@ -181,793 +205,4 @@ public abstract class BaseSqoopTool exte
     super(toolName);
   }
 
-  protected ConnManager manager;
-
-  public ConnManager getManager() {
-    return manager;
-  }
-
-  public void setManager(ConnManager mgr) {
-    this.manager = mgr;
-  }
-
-  /**
-   * Should be called at the beginning of the run() method to initialize
-   * the connection manager, etc. If this succeeds (returns true), it should
-   * be paired with a call to destroy().
-   * @return true on success, false on failure.
-   */
-  protected boolean init(SqoopOptions sqoopOpts) {
-    // Get the connection to the database.
-    try {
-      JobData data = new JobData(sqoopOpts, this);
-      this.manager = new ConnFactory(sqoopOpts.getConf()).getManager(data);
-      return true;
-    } catch (Exception e) {
-      LOG.error("Got error creating database manager: "
-          + StringUtils.stringifyException(e));
-      if (System.getProperty(Sqoop.SQOOP_RETHROW_PROPERTY) != null) {
-        throw new RuntimeException(e);
-      }
-    }
-
-    return false;
-  }
-
-  /**
-   * Should be called in a 'finally' block at the end of the run() method.
-   */
-  protected void destroy(SqoopOptions sqoopOpts) {
-    if (null != manager) {
-      try {
-        manager.close();
-      } catch (SQLException sqlE) {
-        LOG.warn("Error while closing connection: " + sqlE);
-      }
-    }
-  }
-
-  /**
-   * Examines a subset of the arrray presented, and determines if it
-   * contains any non-empty arguments. If so, logs the arguments
-   * and returns true.
-   *
-   * @param argv an array of strings to check.
-   * @param offset the first element of the array to check
-   * @param len the number of elements to check
-   * @return true if there are any non-null, non-empty argument strings
-   * present.
-   */
-  protected boolean hasUnrecognizedArgs(String [] argv, int offset, int len) {
-    if (argv == null) {
-      return false;
-    }
-
-    boolean unrecognized = false;
-    boolean printedBanner = false;
-    for (int i = offset; i < Math.min(argv.length, offset + len); i++) {
-      if (argv[i] != null && argv[i].length() > 0) {
-        if (!printedBanner) {
-          LOG.error("Error parsing arguments for " + getToolName() + ":");
-          printedBanner = true;
-        }
-        LOG.error("Unrecognized argument: " + argv[i]);
-        unrecognized = true;
-      }
-    }
-
-    return unrecognized;
-  }
-
-  protected boolean hasUnrecognizedArgs(String [] argv) {
-    if (null == argv) {
-      return false;
-    }
-    return hasUnrecognizedArgs(argv, 0, argv.length);
-  }
-
-
-  /**
-   * If argv contains an entry "--", return an array containing all elements
-   * after the "--" separator. Otherwise, return null.
-   * @param argv a set of arguments to scan for the subcommand arguments.
-   */
-  protected String [] getSubcommandArgs(String [] argv) {
-    if (null == argv) {
-      return null;
-    }
-
-    for (int i = 0; i < argv.length; i++) {
-      if (argv[i].equals("--")) {
-        return Arrays.copyOfRange(argv, i + 1, argv.length);
-      }
-    }
-
-    return null;
-  }
-
-  /**
-   * @return RelatedOptions used by job management tools.
-   */
-  protected RelatedOptions getJobOptions() {
-    RelatedOptions relatedOpts = new RelatedOptions(
-        "Job management arguments");
-    relatedOpts.addOption(OptionBuilder.withArgName("jdbc-uri")
-        .hasArg()
-        .withDescription("Specify JDBC connect string for the metastore")
-        .withLongOpt(STORAGE_METASTORE_ARG)
-        .create());
-
-    // Create an option-group surrounding the operations a user
-    // can perform on jobs.
-    OptionGroup group = new OptionGroup();
-    group.addOption(OptionBuilder.withArgName("job-id")
-        .hasArg()
-        .withDescription("Create a new saved job")
-        .withLongOpt(JOB_CMD_CREATE_ARG)
-        .create());
-    group.addOption(OptionBuilder.withArgName("job-id")
-        .hasArg()
-        .withDescription("Delete a saved job")
-        .withLongOpt(JOB_CMD_DELETE_ARG)
-        .create());
-    group.addOption(OptionBuilder.withArgName("job-id")
-        .hasArg()
-        .withDescription("Show the parameters for a saved job")
-        .withLongOpt(JOB_CMD_SHOW_ARG)
-        .create());
-
-    Option execOption = OptionBuilder.withArgName("job-id")
-        .hasArg()
-        .withDescription("Run a saved job")
-        .withLongOpt(JOB_CMD_EXEC_ARG)
-        .create();
-    group.addOption(execOption);
-
-    group.addOption(OptionBuilder
-        .withDescription("List saved jobs")
-        .withLongOpt(JOB_CMD_LIST_ARG)
-        .create());
-
-    relatedOpts.addOptionGroup(group);
-
-    // Since the "common" options aren't used in the job tool,
-    // add these settings here.
-    relatedOpts.addOption(OptionBuilder
-        .withDescription("Print more information while working")
-        .withLongOpt(VERBOSE_ARG)
-        .create());
-    relatedOpts.addOption(OptionBuilder
-        .withDescription("Print usage instructions")
-        .withLongOpt(HELP_ARG)
-        .create());
-
-    return relatedOpts;
-  }
-
-  /**
-   * @return RelatedOptions used by most/all Sqoop tools.
-   */
-  protected RelatedOptions getCommonOptions() {
-    // Connection args (common)
-    RelatedOptions commonOpts = new RelatedOptions("Common arguments");
-    commonOpts.addOption(OptionBuilder.withArgName("jdbc-uri")
-        .hasArg().withDescription("Specify JDBC connect string")
-        .withLongOpt(CONNECT_STRING_ARG)
-        .create());
-    commonOpts.addOption(OptionBuilder.withArgName("class-name")
-        .hasArg().withDescription("Specify connection manager class name")
-        .withLongOpt(CONN_MANAGER_CLASS_NAME)
-        .create());
-    commonOpts.addOption(OptionBuilder.withArgName("properties-file")
-        .hasArg().withDescription("Specify connection parameters file")
-        .withLongOpt(CONNECT_PARAM_FILE)
-        .create());
-    commonOpts.addOption(OptionBuilder.withArgName("class-name")
-        .hasArg().withDescription("Manually specify JDBC driver class to use")
-        .withLongOpt(DRIVER_ARG)
-        .create());
-    commonOpts.addOption(OptionBuilder.withArgName("username")
-        .hasArg().withDescription("Set authentication username")
-        .withLongOpt(USERNAME_ARG)
-        .create());
-    commonOpts.addOption(OptionBuilder.withArgName("password")
-        .hasArg().withDescription("Set authentication password")
-        .withLongOpt(PASSWORD_ARG)
-        .create());
-    commonOpts.addOption(OptionBuilder
-        .withDescription("Read password from console")
-        .create(PASSWORD_PROMPT_ARG));
-
-    commonOpts.addOption(OptionBuilder.withArgName("dir")
-        .hasArg().withDescription("Override $HADOOP_HOME")
-        .withLongOpt(HADOOP_HOME_ARG)
-        .create());
-
-    // misc (common)
-    commonOpts.addOption(OptionBuilder
-        .withDescription("Print more information while working")
-        .withLongOpt(VERBOSE_ARG)
-        .create());
-    commonOpts.addOption(OptionBuilder
-        .withDescription("Print usage instructions")
-        .withLongOpt(HELP_ARG)
-        .create());
-
-    return commonOpts;
-  }
-
-  /**
-   * @param explicitHiveImport true if the user has an explicit --hive-import
-   * available, or false if this is implied by the tool.
-   * @return options governing interaction with Hive
-   */
-  protected RelatedOptions getHiveOptions(boolean explicitHiveImport) {
-    RelatedOptions hiveOpts = new RelatedOptions("Hive arguments");
-    if (explicitHiveImport) {
-      hiveOpts.addOption(OptionBuilder
-          .withDescription("Import tables into Hive "
-          + "(Uses Hive's default delimiters if none are set.)")
-          .withLongOpt(HIVE_IMPORT_ARG)
-          .create());
-    }
-
-    hiveOpts.addOption(OptionBuilder.withArgName("dir")
-        .hasArg().withDescription("Override $HIVE_HOME")
-        .withLongOpt(HIVE_HOME_ARG)
-        .create());
-    hiveOpts.addOption(OptionBuilder
-        .withDescription("Overwrite existing data in the Hive table")
-        .withLongOpt(HIVE_OVERWRITE_ARG)
-        .create());
-    hiveOpts.addOption(OptionBuilder
-        .withDescription("Fail if the target hive table exists")
-        .withLongOpt(CREATE_HIVE_TABLE_ARG)
-        .create());
-    hiveOpts.addOption(OptionBuilder.withArgName("table-name")
-        .hasArg()
-        .withDescription("Sets the table name to use when importing to hive")
-        .withLongOpt(HIVE_TABLE_ARG)
-        .create());
-    hiveOpts.addOption(OptionBuilder
-        .withDescription("Drop Hive record \\0x01 and row delimiters "
-            + "(\\n\\r) from imported string fields")
-        .withLongOpt(HIVE_DROP_DELIMS_ARG)
-        .create());
-    hiveOpts.addOption(OptionBuilder
-        .hasArg()
-        .withDescription("Replace Hive record \\0x01 and row delimiters "
-            + "(\\n\\r) from imported string fields with user-defined string")
-        .withLongOpt(HIVE_DELIMS_REPLACEMENT_ARG)
-        .create());
-    hiveOpts.addOption(OptionBuilder.withArgName("partition-key")
-        .hasArg()
-        .withDescription("Sets the partition key to use when importing to hive")
-        .withLongOpt(HIVE_PARTITION_KEY_ARG)
-        .create());
-    hiveOpts.addOption(OptionBuilder.withArgName("partition-value")
-        .hasArg()
-        .withDescription("Sets the partition value to use when importing "
-            + "to hive")
-        .withLongOpt(HIVE_PARTITION_VALUE_ARG)
-        .create());
-    hiveOpts.addOption(OptionBuilder
-        .hasArg()
-        .withDescription("Override mapping for specific column to hive"
-          + " types.")
-        .withLongOpt(MAP_COLUMN_HIVE)
-        .create());
-
-    return hiveOpts;
-  }
-
-  /**
-   * @return options governing output format delimiters
-   */
-  protected RelatedOptions getOutputFormatOptions() {
-    RelatedOptions formatOpts = new RelatedOptions(
-        "Output line formatting arguments");
-    formatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets the field separator character")
-        .withLongOpt(FIELDS_TERMINATED_BY_ARG)
-        .create());
-    formatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets the end-of-line character")
-        .withLongOpt(LINES_TERMINATED_BY_ARG)
-        .create());
-    formatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets a field enclosing character")
-        .withLongOpt(OPTIONALLY_ENCLOSED_BY_ARG)
-        .create());
-    formatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets a required field enclosing character")
-        .withLongOpt(ENCLOSED_BY_ARG)
-        .create());
-    formatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets the escape character")
-        .withLongOpt(ESCAPED_BY_ARG)
-        .create());
-    formatOpts.addOption(OptionBuilder
-        .withDescription("Uses MySQL's default delimiter set: "
-        + "fields: ,  lines: \\n  escaped-by: \\  optionally-enclosed-by: '")
-        .withLongOpt(MYSQL_DELIMITERS_ARG)
-        .create());
-
-    return formatOpts;
-  }
-
-  /**
-   * @return options governing input format delimiters.
-   */
-  protected RelatedOptions getInputFormatOptions() {
-    RelatedOptions inputFormatOpts =
-        new RelatedOptions("Input parsing arguments");
-    inputFormatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets the input field separator")
-        .withLongOpt(INPUT_FIELDS_TERMINATED_BY_ARG)
-        .create());
-    inputFormatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets the input end-of-line char")
-        .withLongOpt(INPUT_LINES_TERMINATED_BY_ARG)
-        .create());
-    inputFormatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets a field enclosing character")
-        .withLongOpt(INPUT_OPTIONALLY_ENCLOSED_BY_ARG)
-        .create());
-    inputFormatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets a required field encloser")
-        .withLongOpt(INPUT_ENCLOSED_BY_ARG)
-        .create());
-    inputFormatOpts.addOption(OptionBuilder.withArgName("char")
-        .hasArg()
-        .withDescription("Sets the input escape character")
-        .withLongOpt(INPUT_ESCAPED_BY_ARG)
-        .create());
-
-    return inputFormatOpts;
-  }
-
-  /**
-   * @param multiTable true if these options will be used for bulk code-gen.
-   * @return options related to code generation.
-   */
-  protected RelatedOptions getCodeGenOpts(boolean multiTable) {
-    RelatedOptions codeGenOpts =
-        new RelatedOptions("Code generation arguments");
-    codeGenOpts.addOption(OptionBuilder.withArgName("dir")
-        .hasArg()
-        .withDescription("Output directory for generated code")
-        .withLongOpt(CODE_OUT_DIR_ARG)
-        .create());
-    codeGenOpts.addOption(OptionBuilder.withArgName("dir")
-        .hasArg()
-        .withDescription("Output directory for compiled objects")
-        .withLongOpt(BIN_OUT_DIR_ARG)
-        .create());
-    codeGenOpts.addOption(OptionBuilder.withArgName("name")
-        .hasArg()
-        .withDescription("Put auto-generated classes in this package")
-        .withLongOpt(PACKAGE_NAME_ARG)
-        .create());
-    codeGenOpts.addOption(OptionBuilder.withArgName("null-str")
-        .hasArg()
-        .withDescription("Null string representation")
-        .withLongOpt(NULL_STRING)
-        .create());
-    codeGenOpts.addOption(OptionBuilder.withArgName("null-str")
-        .hasArg()
-        .withDescription("Input null string representation")
-        .withLongOpt(INPUT_NULL_STRING)
-        .create());
-    codeGenOpts.addOption(OptionBuilder.withArgName("null-str")
-        .hasArg()
-        .withDescription("Null non-string representation")
-        .withLongOpt(NULL_NON_STRING)
-        .create());
-    codeGenOpts.addOption(OptionBuilder.withArgName("null-str")
-        .hasArg()
-        .withDescription("Input null non-string representation")
-        .withLongOpt(INPUT_NULL_NON_STRING)
-        .create());
-    codeGenOpts.addOption(OptionBuilder
-        .hasArg()
-        .withDescription("Override mapping for specific columns to java types")
-        .withLongOpt(MAP_COLUMN_JAVA)
-        .create());
-
-    if (!multiTable) {
-      codeGenOpts.addOption(OptionBuilder.withArgName("name")
-          .hasArg()
-          .withDescription("Sets the generated class name. "
-          + "This overrides --" + PACKAGE_NAME_ARG + ". When combined "
-          + "with --" + JAR_FILE_NAME_ARG + ", sets the input class.")
-          .withLongOpt(CLASS_NAME_ARG)
-          .create());
-    }
-    return codeGenOpts;
-  }
-
-  protected RelatedOptions getHBaseOptions() {
-    RelatedOptions hbaseOpts =
-        new RelatedOptions("HBase arguments");
-    hbaseOpts.addOption(OptionBuilder.withArgName("table")
-        .hasArg()
-        .withDescription("Import to <table> in HBase")
-        .withLongOpt(HBASE_TABLE_ARG)
-        .create());
-    hbaseOpts.addOption(OptionBuilder.withArgName("family")
-        .hasArg()
-        .withDescription("Sets the target column family for the import")
-        .withLongOpt(HBASE_COL_FAM_ARG)
-        .create());
-    hbaseOpts.addOption(OptionBuilder.withArgName("col")
-        .hasArg()
-        .withDescription("Specifies which input column to use as the row key")
-        .withLongOpt(HBASE_ROW_KEY_ARG)
-        .create());
-    hbaseOpts.addOption(OptionBuilder
-        .withDescription("If specified, create missing HBase tables")
-        .withLongOpt(HBASE_CREATE_TABLE_ARG)
-        .create());
-
-    return hbaseOpts;
-  }
-
-
-
-  /**
-   * Apply common command-line to the state.
-   */
-  protected void applyCommonOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-
-    // common options.
-    if (in.hasOption(VERBOSE_ARG)) {
-      // Immediately switch into DEBUG logging.
-      Category sqoopLogger = Logger.getLogger(
-          Sqoop.class.getName()).getParent();
-      sqoopLogger.setLevel(Level.DEBUG);
-      LOG.debug("Enabled debug logging.");
-    }
-
-    if (in.hasOption(HELP_ARG)) {
-      ToolOptions toolOpts = new ToolOptions();
-      configureOptions(toolOpts);
-      printHelp(toolOpts);
-      throw new InvalidOptionsException("");
-    }
-
-    if (in.hasOption(CONNECT_STRING_ARG)) {
-      out.setConnectString(in.getOptionValue(CONNECT_STRING_ARG));
-    }
-
-    if (in.hasOption(CONN_MANAGER_CLASS_NAME)) {
-        out.setConnManagerClassName(in.getOptionValue(CONN_MANAGER_CLASS_NAME));
-    }
-
-    if (in.hasOption(CONNECT_PARAM_FILE)) {
-      File paramFile = new File(in.getOptionValue(CONNECT_PARAM_FILE));
-      if (!paramFile.exists()) {
-        throw new InvalidOptionsException(
-                "Specified connection parameter file not found: " + paramFile);
-      }
-      InputStream inStream = null;
-      Properties connectionParams = new Properties();
-      try {
-        inStream = new FileInputStream(
-                      new File(in.getOptionValue(CONNECT_PARAM_FILE)));
-        connectionParams.load(inStream);
-      } catch (IOException ex) {
-        LOG.warn("Failed to load connection parameter file", ex);
-        throw new InvalidOptionsException(
-                "Error while loading connection parameter file: "
-                + ex.getMessage());
-      } finally {
-        if (inStream != null) {
-          try {
-            inStream.close();
-          } catch (IOException ex) {
-            LOG.warn("Failed to close input stream", ex);
-          }
-        }
-      }
-      LOG.debug("Loaded connection parameters: " + connectionParams);
-      out.setConnectionParams(connectionParams);
-    }
-
-    if (in.hasOption(NULL_STRING)) {
-        out.setNullStringValue(in.getOptionValue(NULL_STRING));
-    }
-
-    if (in.hasOption(INPUT_NULL_STRING)) {
-        out.setInNullStringValue(in.getOptionValue(INPUT_NULL_STRING));
-    }
-
-    if (in.hasOption(NULL_NON_STRING)) {
-        out.setNullNonStringValue(in.getOptionValue(NULL_NON_STRING));
-    }
-
-    if (in.hasOption(INPUT_NULL_NON_STRING)) {
-        out.setInNullNonStringValue(in.getOptionValue(INPUT_NULL_NON_STRING));
-    }
-
-    if (in.hasOption(DRIVER_ARG)) {
-      out.setDriverClassName(in.getOptionValue(DRIVER_ARG));
-    }
-
-    if (in.hasOption(USERNAME_ARG)) {
-      out.setUsername(in.getOptionValue(USERNAME_ARG));
-      if (null == out.getPassword()) {
-        // Set password to empty if the username is set first,
-        // to ensure that they're either both null or neither is.
-        out.setPassword("");
-      }
-    }
-
-    if (in.hasOption(PASSWORD_ARG)) {
-      LOG.warn("Setting your password on the command-line is insecure. "
-          + "Consider using -" + PASSWORD_PROMPT_ARG + " instead.");
-      out.setPassword(in.getOptionValue(PASSWORD_ARG));
-    }
-
-    if (in.hasOption(PASSWORD_PROMPT_ARG)) {
-      out.setPasswordFromConsole();
-    }
-
-    if (in.hasOption(HADOOP_HOME_ARG)) {
-      out.setHadoopHome(in.getOptionValue(HADOOP_HOME_ARG));
-    }
-
-  }
-
-  protected void applyHiveOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-
-    if (in.hasOption(HIVE_HOME_ARG)) {
-      out.setHiveHome(in.getOptionValue(HIVE_HOME_ARG));
-    }
-
-    if (in.hasOption(HIVE_IMPORT_ARG)) {
-      out.setHiveImport(true);
-    }
-
-    if (in.hasOption(HIVE_OVERWRITE_ARG)) {
-      out.setOverwriteHiveTable(true);
-    }
-
-    if (in.hasOption(CREATE_HIVE_TABLE_ARG)) {
-      out.setFailIfHiveTableExists(true);
-    }
-
-    if (in.hasOption(HIVE_TABLE_ARG)) {
-      out.setHiveTableName(in.getOptionValue(HIVE_TABLE_ARG));
-    }
-
-    if (in.hasOption(HIVE_DROP_DELIMS_ARG)) {
-      out.setHiveDropDelims(true);
-    }
-
-    if (in.hasOption(HIVE_DELIMS_REPLACEMENT_ARG)) {
-      out.setHiveDelimsReplacement(
-              in.getOptionValue(HIVE_DELIMS_REPLACEMENT_ARG));
-    }
-
-    if (in.hasOption(HIVE_PARTITION_KEY_ARG)) {
-      out.setHivePartitionKey(in.getOptionValue(HIVE_PARTITION_KEY_ARG));
-    }
-
-    if (in.hasOption(HIVE_PARTITION_VALUE_ARG)) {
-      out.setHivePartitionValue(in.getOptionValue(HIVE_PARTITION_VALUE_ARG));
-    }
-
-   if (in.hasOption(MAP_COLUMN_HIVE)) {
-      out.setMapColumnHive(in.getOptionValue(MAP_COLUMN_HIVE));
-    }
-  }
-
-  protected void applyOutputFormatOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-    if (in.hasOption(FIELDS_TERMINATED_BY_ARG)) {
-      out.setFieldsTerminatedBy(SqoopOptions.toChar(
-          in.getOptionValue(FIELDS_TERMINATED_BY_ARG)));
-      out.setExplicitDelims(true);
-    }
-
-    if (in.hasOption(LINES_TERMINATED_BY_ARG)) {
-      out.setLinesTerminatedBy(SqoopOptions.toChar(
-          in.getOptionValue(LINES_TERMINATED_BY_ARG)));
-      out.setExplicitDelims(true);
-    }
-
-    if (in.hasOption(OPTIONALLY_ENCLOSED_BY_ARG)) {
-      out.setEnclosedBy(SqoopOptions.toChar(
-          in.getOptionValue(OPTIONALLY_ENCLOSED_BY_ARG)));
-      out.setOutputEncloseRequired(false);
-      out.setExplicitDelims(true);
-    }
-
-    if (in.hasOption(ENCLOSED_BY_ARG)) {
-      out.setEnclosedBy(SqoopOptions.toChar(
-          in.getOptionValue(ENCLOSED_BY_ARG)));
-      out.setOutputEncloseRequired(true);
-      out.setExplicitDelims(true);
-    }
-
-    if (in.hasOption(ESCAPED_BY_ARG)) {
-      out.setEscapedBy(SqoopOptions.toChar(
-          in.getOptionValue(ESCAPED_BY_ARG)));
-      out.setExplicitDelims(true);
-    }
-
-    if (in.hasOption(MYSQL_DELIMITERS_ARG)) {
-      out.setOutputEncloseRequired(false);
-      out.setFieldsTerminatedBy(',');
-      out.setLinesTerminatedBy('\n');
-      out.setEscapedBy('\\');
-      out.setEnclosedBy('\'');
-      out.setExplicitDelims(true);
-    }
-  }
-
-  protected void applyInputFormatOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-    if (in.hasOption(INPUT_FIELDS_TERMINATED_BY_ARG)) {
-      out.setInputFieldsTerminatedBy(SqoopOptions.toChar(
-          in.getOptionValue(INPUT_FIELDS_TERMINATED_BY_ARG)));
-    }
-
-    if (in.hasOption(INPUT_LINES_TERMINATED_BY_ARG)) {
-      out.setInputLinesTerminatedBy(SqoopOptions.toChar(
-          in.getOptionValue(INPUT_LINES_TERMINATED_BY_ARG)));
-    }
-
-    if (in.hasOption(INPUT_OPTIONALLY_ENCLOSED_BY_ARG)) {
-      out.setInputEnclosedBy(SqoopOptions.toChar(
-          in.getOptionValue(INPUT_OPTIONALLY_ENCLOSED_BY_ARG)));
-      out.setInputEncloseRequired(false);
-    }
-
-    if (in.hasOption(INPUT_ENCLOSED_BY_ARG)) {
-      out.setInputEnclosedBy(SqoopOptions.toChar(
-          in.getOptionValue(INPUT_ENCLOSED_BY_ARG)));
-      out.setInputEncloseRequired(true);
-    }
-
-    if (in.hasOption(INPUT_ESCAPED_BY_ARG)) {
-      out.setInputEscapedBy(SqoopOptions.toChar(
-          in.getOptionValue(INPUT_ESCAPED_BY_ARG)));
-    }
-  }
-
-  protected void applyCodeGenOptions(CommandLine in, SqoopOptions out,
-      boolean multiTable) throws InvalidOptionsException {
-    if (in.hasOption(CODE_OUT_DIR_ARG)) {
-      out.setCodeOutputDir(in.getOptionValue(CODE_OUT_DIR_ARG));
-    }
-
-    if (in.hasOption(BIN_OUT_DIR_ARG)) {
-      out.setJarOutputDir(in.getOptionValue(BIN_OUT_DIR_ARG));
-    }
-
-    if (in.hasOption(PACKAGE_NAME_ARG)) {
-      out.setPackageName(in.getOptionValue(PACKAGE_NAME_ARG));
-    }
-
-    if (in.hasOption(MAP_COLUMN_JAVA)) {
-      out.setMapColumn(in.getOptionValue(MAP_COLUMN_JAVA));
-    }
-
-    if (!multiTable && in.hasOption(CLASS_NAME_ARG)) {
-      out.setClassName(in.getOptionValue(CLASS_NAME_ARG));
-    }
-  }
-
-  protected void applyHBaseOptions(CommandLine in, SqoopOptions out) {
-    if (in.hasOption(HBASE_TABLE_ARG)) {
-      out.setHBaseTable(in.getOptionValue(HBASE_TABLE_ARG));
-    }
-
-    if (in.hasOption(HBASE_COL_FAM_ARG)) {
-      out.setHBaseColFamily(in.getOptionValue(HBASE_COL_FAM_ARG));
-    }
-
-    if (in.hasOption(HBASE_ROW_KEY_ARG)) {
-      out.setHBaseRowKeyColumn(in.getOptionValue(HBASE_ROW_KEY_ARG));
-    }
-
-    if (in.hasOption(HBASE_CREATE_TABLE_ARG)) {
-      out.setCreateHBaseTable(true);
-    }
-  }
-
-  protected void validateCommonOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-    if (options.getConnectString() == null) {
-      throw new InvalidOptionsException(
-          "Error: Required argument --connect is missing."
-          + HELP_STR);
-    }
-  }
-
-  protected void validateCodeGenOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-    if (options.getClassName() != null && options.getPackageName() != null) {
-      throw new InvalidOptionsException(
-          "--class-name overrides --package-name. You cannot use both."
-          + HELP_STR);
-    }
-  }
-
-  protected void validateOutputFormatOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-    if (options.doHiveImport()) {
-      if (!options.explicitDelims()) {
-        // user hasn't manually specified delimiters, and wants to import
-        // straight to Hive. Use Hive-style delimiters.
-        LOG.info("Using Hive-specific delimiters for output. You can override");
-        LOG.info("delimiters with --fields-terminated-by, etc.");
-        options.setOutputDelimiters(DelimiterSet.HIVE_DELIMITERS);
-      }
-
-      if (options.getOutputEscapedBy() != DelimiterSet.NULL_CHAR) {
-        LOG.warn("Hive does not support escape characters in fields;");
-        LOG.warn("parse errors in Hive may result from using --escaped-by.");
-      }
-
-      if (options.getOutputEnclosedBy() != DelimiterSet.NULL_CHAR) {
-        LOG.warn("Hive does not support quoted strings; parse errors");
-        LOG.warn("in Hive may result from using --enclosed-by.");
-      }
-    }
-  }
-
-  protected void validateHiveOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-    // Empty; this method is present to maintain API consistency, and
-    // is reserved for future constraints on Hive options.
-    if (options.getHiveDelimsReplacement() != null
-            && options.doHiveDropDelims()) {
-      throw new InvalidOptionsException("The " + HIVE_DROP_DELIMS_ARG
-              + " option conflicts with the " + HIVE_DELIMS_REPLACEMENT_ARG
-              + " option." + HELP_STR);
-    }
-  }
-
-  protected void validateHBaseOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-    if ((options.getHBaseColFamily() != null && options.getHBaseTable() == null)
-        || (options.getHBaseColFamily() == null
-        && options.getHBaseTable() != null)) {
-      throw new InvalidOptionsException(
-          "Both --hbase-table and --column-family must be set together."
-          + HELP_STR);
-    }
-  }
-
-  /**
-   * Given an array of extra arguments (usually populated via
-   * this.extraArguments), determine the offset of the first '--'
-   * argument in the list. Return 'extra.length' if there is none.
-   */
-  protected int getDashPosition(String [] extra) {
-    int dashPos = extra.length;
-    for (int i = 0; i < extra.length; i++) {
-      if (extra[i].equals("--")) {
-        dashPos = i;
-        break;
-      }
-    }
-
-    return dashPos;
-  }
 }
-

Modified: incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/CodeGenTool.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/CodeGenTool.java?rev=1195852&r1=1195851&r2=1195852&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/CodeGenTool.java (original)
+++ incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/CodeGenTool.java Tue Nov  1 07:10:13 2011
@@ -1,6 +1,4 @@
 /**
- * Copyright 2011 The Apache Software Foundation
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,177 +15,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.cloudera.sqoop.tool;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.util.StringUtils;
-
-import com.cloudera.sqoop.Sqoop;
-import com.cloudera.sqoop.SqoopOptions;
-import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
-import com.cloudera.sqoop.cli.RelatedOptions;
-import com.cloudera.sqoop.cli.ToolOptions;
-import com.cloudera.sqoop.hive.HiveImport;
-import com.cloudera.sqoop.orm.ClassWriter;
-import com.cloudera.sqoop.orm.CompilationManager;
-
 /**
- * Tool that generates code from a database schema.
+ * @deprecated Moving to use org.apache.sqoop namespace.
  */
-public class CodeGenTool extends BaseSqoopTool {
-
-  public static final Log LOG = LogFactory.getLog(CodeGenTool.class.getName());
-
-  private List<String> generatedJarFiles;
-
-  public CodeGenTool() {
-    super("codegen");
-    generatedJarFiles = new ArrayList<String>();
-  }
-
-  /**
-   * @return a list of jar files generated as part of this import process
-   */
-  public List<String> getGeneratedJarFiles() {
-    ArrayList<String> out = new ArrayList<String>(generatedJarFiles);
-    return out;
-  }
-
-  /**
-   * Generate the .class and .jar files.
-   * @return the filename of the emitted jar file.
-   * @throws IOException
-   */
-  public String generateORM(SqoopOptions options, String tableName)
-      throws IOException {
-    String existingJar = options.getExistingJarName();
-    if (existingJar != null) {
-      // This code generator is being invoked as part of an import or export
-      // process, and the user has pre-specified a jar and class to use.
-      // Don't generate.
-      LOG.info("Using existing jar: " + existingJar);
-      return existingJar;
-    }
-
-    LOG.info("Beginning code generation");
-    CompilationManager compileMgr = new CompilationManager(options);
-    ClassWriter classWriter = new ClassWriter(options, manager, tableName,
-        compileMgr);
-    classWriter.generate();
-    compileMgr.compile();
-    compileMgr.jar();
-    String jarFile = compileMgr.getJarFilename();
-    this.generatedJarFiles.add(jarFile);
-    return jarFile;
-  }
-
-
-  @Override
-  /** {@inheritDoc} */
-  public int run(SqoopOptions options) {
-    if (!init(options)) {
-      return 1;
-    }
-
-    try {
-      generateORM(options, options.getTableName());
-
-      // If the user has also specified Hive import code generation,
-      // use a HiveImport to generate the DDL statements and write
-      // them to files (but don't actually perform the import -- thus
-      // the generateOnly=true in the constructor).
-      if (options.doHiveImport()) {
-        HiveImport hiveImport = new HiveImport(options, manager,
-            options.getConf(), true);
-        hiveImport.importTable(options.getTableName(),
-            options.getHiveTableName(), true);
-      }
-
-    } catch (IOException ioe) {
-      LOG.error("Encountered IOException running codegen job: "
-          + StringUtils.stringifyException(ioe));
-      if (System.getProperty(Sqoop.SQOOP_RETHROW_PROPERTY) != null) {
-        throw new RuntimeException(ioe);
-      } else {
-        return 1;
-      }
-    } finally {
-      destroy(options);
-    }
-
-    return 0;
-  }
-
-  @Override
-  /** Configure the command-line arguments we expect to receive */
-  public void configureOptions(ToolOptions toolOptions) {
-
-    toolOptions.addUniqueOptions(getCommonOptions());
-
-    RelatedOptions codeGenOpts = getCodeGenOpts(false);
-    codeGenOpts.addOption(OptionBuilder.withArgName("table-name")
-        .hasArg()
-        .withDescription("Table to generate code for")
-        .withLongOpt(TABLE_ARG)
-        .create());
-    toolOptions.addUniqueOptions(codeGenOpts);
-
-    toolOptions.addUniqueOptions(getOutputFormatOptions());
-    toolOptions.addUniqueOptions(getInputFormatOptions());
-    toolOptions.addUniqueOptions(getHiveOptions(true));
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void printHelp(ToolOptions toolOptions) {
-    super.printHelp(toolOptions);
-    System.out.println("");
-    System.out.println(
-        "At minimum, you must specify --connect and --table");
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void applyOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-
-    if (in.hasOption(TABLE_ARG)) {
-      out.setTableName(in.getOptionValue(TABLE_ARG));
-    }
-
-    applyCommonOptions(in, out);
-    applyOutputFormatOptions(in, out);
-    applyInputFormatOptions(in, out);
-    applyCodeGenOptions(in, out, false);
-    applyHiveOptions(in, out);
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void validateOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-
-    if (hasUnrecognizedArgs(extraArguments)) {
-      throw new InvalidOptionsException(HELP_STR);
-    }
-
-    validateCommonOptions(options);
-    validateCodeGenOptions(options);
-    validateOutputFormatOptions(options);
-    validateHiveOptions(options);
-
-    if (options.getTableName() == null) {
-      throw new InvalidOptionsException(
-          "--table is required for code generation." + HELP_STR);
-    }
-  }
+public class CodeGenTool 
+    extends org.apache.sqoop.tool.CodeGenTool {
 }
-

Modified: incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/CreateHiveTableTool.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/CreateHiveTableTool.java?rev=1195852&r1=1195851&r2=1195852&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/CreateHiveTableTool.java (original)
+++ incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/CreateHiveTableTool.java Tue Nov  1 07:10:13 2011
@@ -1,6 +1,4 @@
 /**
- * Copyright 2011 The Apache Software Foundation
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,122 +15,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.cloudera.sqoop.tool;
 
-import java.io.IOException;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.util.StringUtils;
-
-import com.cloudera.sqoop.Sqoop;
-import com.cloudera.sqoop.SqoopOptions;
-import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
-import com.cloudera.sqoop.cli.RelatedOptions;
-import com.cloudera.sqoop.cli.ToolOptions;
-import com.cloudera.sqoop.hive.HiveImport;
-
 /**
- * Tool that creates a Hive table definition.
+ * @deprecated Moving to use org.apache.sqoop namespace.
  */
-public class CreateHiveTableTool extends BaseSqoopTool {
-
-  public static final Log LOG = LogFactory.getLog(
-      CreateHiveTableTool.class.getName());
-
-  public CreateHiveTableTool() {
-    super("create-hive-table");
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public int run(SqoopOptions options) {
-    if (!init(options)) {
-      return 1;
-    }
-
-    try {
-      HiveImport hiveImport = new HiveImport(options, manager,
-          options.getConf(), false);
-      hiveImport.importTable(options.getTableName(),
-          options.getHiveTableName(), true);
-    } catch (IOException ioe) {
-      LOG.error("Encountered IOException running create table job: "
-          + StringUtils.stringifyException(ioe));
-      if (System.getProperty(Sqoop.SQOOP_RETHROW_PROPERTY) != null) {
-        throw new RuntimeException(ioe);
-      } else {
-        return 1;
-      }
-    } finally {
-      destroy(options);
-    }
-
-    return 0;
-  }
-
-  @Override
-  /** Configure the command-line arguments we expect to receive */
-  public void configureOptions(ToolOptions toolOptions) {
-
-    toolOptions.addUniqueOptions(getCommonOptions());
-
-    RelatedOptions hiveOpts = getHiveOptions(false);
-    hiveOpts.addOption(OptionBuilder.withArgName("table-name")
-        .hasArg()
-        .withDescription("The db table to read the definition from")
-        .withLongOpt(TABLE_ARG)
-        .create());
-    toolOptions.addUniqueOptions(hiveOpts);
-
-    toolOptions.addUniqueOptions(getOutputFormatOptions());
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void printHelp(ToolOptions toolOptions) {
-    super.printHelp(toolOptions);
-    System.out.println("");
-    System.out.println(
-        "At minimum, you must specify --connect and --table");
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void applyOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-
-    if (in.hasOption(TABLE_ARG)) {
-      out.setTableName(in.getOptionValue(TABLE_ARG));
-    }
-
-    out.setHiveImport(true);
-
-    applyCommonOptions(in, out);
-    applyHiveOptions(in, out);
-    applyOutputFormatOptions(in, out);
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void validateOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-
-    if (hasUnrecognizedArgs(extraArguments)) {
-      throw new InvalidOptionsException(HELP_STR);
-    }
-
-    validateCommonOptions(options);
-    validateOutputFormatOptions(options);
-    validateHiveOptions(options);
-
-    if (options.getTableName() == null) {
-      throw new InvalidOptionsException(
-          "--table is required for table definition importing." + HELP_STR);
-    }
-  }
+public class CreateHiveTableTool
+    extends org.apache.sqoop.tool.CreateHiveTableTool {
 }
-

Modified: incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/EvalSqlTool.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/EvalSqlTool.java?rev=1195852&r1=1195851&r2=1195852&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/EvalSqlTool.java (original)
+++ incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/EvalSqlTool.java Tue Nov  1 07:10:13 2011
@@ -1,6 +1,4 @@
 /**
- * Copyright 2011 The Apache Software Foundation
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,159 +15,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.cloudera.sqoop.tool;
 
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.hadoop.util.StringUtils;
-
-import com.cloudera.sqoop.SqoopOptions;
-import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
-import com.cloudera.sqoop.cli.RelatedOptions;
-import com.cloudera.sqoop.cli.ToolOptions;
-import com.cloudera.sqoop.util.ResultSetPrinter;
-
 /**
- * Tool that evaluates a SQL statement and displays the results.
+ * @deprecated Moving to use org.apache.sqoop namespace.
  */
-public class EvalSqlTool extends BaseSqoopTool {
-
-  public static final Log LOG = LogFactory.getLog(EvalSqlTool.class.getName());
-
-  public EvalSqlTool() {
-    super("eval");
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public int run(SqoopOptions options) {
-    if (!init(options)) {
-      return 1;
-    }
-
-    PreparedStatement stmt = null;
-    ResultSet rs = null;
-    PrintWriter pw = null;
-    try {
-      Connection c = manager.getConnection();
-      String query = options.getSqlQuery();
-      LOG.debug("SQL query: " + query);
-      stmt = c.prepareStatement(query);
-      boolean resultType = stmt.execute();
-      // Iterate over all the results from this statement.
-      while (true) {
-        LOG.debug("resultType=" + resultType);
-        if (!resultType) {
-          // This result was an update count.
-          int updateCount = stmt.getUpdateCount();
-          LOG.debug("updateCount=" + updateCount);
-          if (updateCount == -1) {
-            // We are done iterating over results from this statement.
-            c.commit();
-            break;
-          } else {
-            LOG.info(updateCount + " row(s) updated.");
-          }
-        } else {
-          // This yields a ResultSet.
-          rs = stmt.getResultSet();
-          pw = new PrintWriter(System.out, true);
-          new ResultSetPrinter().printResultSet(pw, rs);
-          pw.close();
-          pw = null;
-        }
-
-        resultType = stmt.getMoreResults();
-      }
-    } catch (IOException ioe) {
-      LOG.warn("IOException formatting results: "
-          + StringUtils.stringifyException(ioe));
-      return 1;
-    } catch (SQLException sqlE) {
-      LOG.warn("SQL exception executing statement: "
-          + StringUtils.stringifyException(sqlE));
-      return 1;
-    } finally {
-      if (null != pw) {
-        pw.close();
-      }
-      if (null != rs) {
-        try {
-          rs.close();
-        } catch (SQLException sqlE) {
-          LOG.warn("SQL exception closing ResultSet: "
-              + StringUtils.stringifyException(sqlE));
-        }
-      }
-      if (null != stmt) {
-        try {
-          stmt.close();
-        } catch (SQLException sqlE) {
-          LOG.warn("SQL exception closing statement: "
-              + StringUtils.stringifyException(sqlE));
-        }
-      }
-      destroy(options);
-    }
-
-    return 0;
-  }
-
-  @Override
-  /** Configure the command-line arguments we expect to receive */
-  public void configureOptions(ToolOptions toolOptions) {
-    toolOptions.addUniqueOptions(getCommonOptions());
-
-    RelatedOptions evalOpts = new RelatedOptions("SQL evaluation arguments");
-    evalOpts.addOption(OptionBuilder.withArgName("statement")
-        .hasArg()
-        .withDescription("Execute 'statement' in SQL and exit")
-        .withLongOpt(SQL_QUERY_ARG)
-        .create(SQL_QUERY_SHORT_ARG));
-
-    toolOptions.addUniqueOptions(evalOpts);
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void applyOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-
-    applyCommonOptions(in, out);
-    if (in.hasOption(SQL_QUERY_ARG)) {
-      out.setSqlQuery(in.getOptionValue(SQL_QUERY_ARG));
-    }
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void validateOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-
-    if (hasUnrecognizedArgs(extraArguments)) {
-      throw new InvalidOptionsException(HELP_STR);
-    }
-
-    String sqlCmd = options.getSqlQuery();
-    if (null == sqlCmd || sqlCmd.length() == 0) {
-      throw new InvalidOptionsException(
-          "This command requires the " + SQL_QUERY_ARG + " argument."
-          + HELP_STR);
-    }
-
-    validateCommonOptions(options);
-  }
+public class EvalSqlTool
+    extends org.apache.sqoop.tool.EvalSqlTool {
 }
-

Modified: incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/ExportTool.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/ExportTool.java?rev=1195852&r1=1195851&r2=1195852&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/ExportTool.java (original)
+++ incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/ExportTool.java Tue Nov  1 07:10:13 2011
@@ -1,6 +1,4 @@
 /**
- * Copyright 2011 The Apache Software Foundation
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,336 +15,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.cloudera.sqoop.tool;
 
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.cloudera.sqoop.Sqoop;
-import com.cloudera.sqoop.SqoopOptions;
-import com.cloudera.sqoop.SqoopOptions.InvalidOptionsException;
-import com.cloudera.sqoop.SqoopOptions.UpdateMode;
-import com.cloudera.sqoop.cli.RelatedOptions;
-import com.cloudera.sqoop.cli.ToolOptions;
-import com.cloudera.sqoop.manager.ExportJobContext;
-import com.cloudera.sqoop.util.ExportException;
-
 /**
- * Tool that performs HDFS exports to databases.
+ * @deprecated Moving to use org.apache.sqoop namespace.
  */
-public class ExportTool extends BaseSqoopTool {
-
-  public static final Log LOG = LogFactory.getLog(ExportTool.class.getName());
-
-  private CodeGenTool codeGenerator;
-
-  public ExportTool() {
-    super("export");
-    this.codeGenerator = new CodeGenTool();
-  }
-
-  /**
-   * @return a list of jar files generated as part of this im/export process
-   */
-  public List<String> getGeneratedJarFiles() {
-    return codeGenerator.getGeneratedJarFiles();
-  }
-
-  private void exportTable(SqoopOptions options, String tableName)
-      throws ExportException, IOException {
-    String jarFile = null;
-
-    // Generate the ORM code for the tables.
-    jarFile = codeGenerator.generateORM(options, tableName);
-
-    ExportJobContext context = new ExportJobContext(tableName, jarFile,
-        options);
-    if (options.getUpdateKeyCol() != null) {
-      if (options.getUpdateMode() == UpdateMode.UpdateOnly) {
-        // UPDATE-based export.
-        manager.updateTable(context);
-      } else {
-        // Mixed update/insert export
-        manager.upsertTable(context);
-      }
-    } else {
-      // INSERT-based export.
-      manager.exportTable(context);
-    }
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public int run(SqoopOptions options) {
-
-    if (!init(options)) {
-      return 1;
-    }
-
-    codeGenerator.setManager(manager);
-
-    if (options.getUpdateKeyCol() != null) {
-      manager.configureDbOutputColumns(options);
-    }
-
-    try {
-      exportTable(options, options.getTableName());
-    } catch (IOException ioe) {
-      LOG.error("Encountered IOException running export job: "
-          + ioe.toString());
-      if (System.getProperty(Sqoop.SQOOP_RETHROW_PROPERTY) != null) {
-        throw new RuntimeException(ioe);
-      } else {
-        return 1;
-      }
-    } catch (ExportException ee) {
-      LOG.error("Error during export: " + ee.toString());
-      if (System.getProperty(Sqoop.SQOOP_RETHROW_PROPERTY) != null) {
-        throw new RuntimeException(ee);
-      } else {
-        return 1;
-      }
-    } finally {
-      destroy(options);
-    }
-
-    return 0;
-  }
-
-  /**
-   * Construct the set of options that control exports.
-   * @return the RelatedOptions that can be used to parse the export
-   * arguments.
-   */
-  protected RelatedOptions getExportOptions() {
-    RelatedOptions exportOpts = new RelatedOptions("Export control arguments");
-
-    exportOpts.addOption(OptionBuilder
-        .withDescription("Use direct export fast path")
-        .withLongOpt(DIRECT_ARG)
-        .create());
-    exportOpts.addOption(OptionBuilder.withArgName("table-name")
-        .hasArg().withDescription("Table to populate")
-        .withLongOpt(TABLE_ARG)
-        .create());
-    exportOpts.addOption(OptionBuilder.withArgName("n")
-        .hasArg().withDescription("Use 'n' map tasks to export in parallel")
-        .withLongOpt(NUM_MAPPERS_ARG)
-        .create(NUM_MAPPERS_SHORT_ARG));
-    exportOpts.addOption(OptionBuilder.withArgName("dir")
-        .hasArg()
-        .withDescription("HDFS source path for the export")
-        .withLongOpt(EXPORT_PATH_ARG)
-        .create());
-    exportOpts.addOption(OptionBuilder.withArgName("key")
-        .hasArg()
-        .withDescription("Update records by specified key column")
-        .withLongOpt(UPDATE_KEY_ARG)
-        .create());
-    exportOpts.addOption(OptionBuilder.withArgName("table-name")
-        .hasArg().withDescription("Intermediate staging table")
-        .withLongOpt(STAGING_TABLE_ARG)
-        .create());
-    exportOpts.addOption(OptionBuilder
-        .withDescription("Indicates that any data in "
-        + "staging table can be deleted")
-        .withLongOpt(CLEAR_STAGING_TABLE_ARG)
-        .create());
-    exportOpts.addOption(OptionBuilder
-        .withDescription("Indicates underlying statements "
-        + "to be executed in batch mode")
-        .withLongOpt(BATCH_ARG)
-        .create());
-    exportOpts.addOption(OptionBuilder
-        .withArgName("mode")
-        .hasArg()
-        .withDescription("Specifies how updates are performed when "
-            + "new rows are found with non-matching keys in database")
-        .withLongOpt(UPDATE_MODE_ARG)
-        .create());
-
-    return exportOpts;
-  }
-
-  @Override
-  /** Configure the command-line arguments we expect to receive */
-  public void configureOptions(ToolOptions toolOptions) {
-
-    toolOptions.addUniqueOptions(getCommonOptions());
-    toolOptions.addUniqueOptions(getExportOptions());
-
-    // Input parsing delimiters
-    toolOptions.addUniqueOptions(getInputFormatOptions());
-
-    // Used when sending data to a direct-mode export.
-    toolOptions.addUniqueOptions(getOutputFormatOptions());
-
-    // get common codegen opts.
-    RelatedOptions codeGenOpts = getCodeGenOpts(false);
-
-    // add export-specific codegen opts:
-    codeGenOpts.addOption(OptionBuilder.withArgName("file")
-        .hasArg()
-        .withDescription("Disable code generation; use specified jar")
-        .withLongOpt(JAR_FILE_NAME_ARG)
-        .create());
-
-    toolOptions.addUniqueOptions(codeGenOpts);
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void printHelp(ToolOptions toolOptions) {
-    super.printHelp(toolOptions);
-    System.out.println("");
-    System.out.println(
-        "At minimum, you must specify --connect, --export-dir, and --table");
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void applyOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-
-    try {
-      applyCommonOptions(in, out);
-
-      if (in.hasOption(DIRECT_ARG)) {
-        out.setDirectMode(true);
-      }
-
-      if (in.hasOption(BATCH_ARG)) {
-        out.setBatchMode(true);
-      }
-
-      if (in.hasOption(TABLE_ARG)) {
-        out.setTableName(in.getOptionValue(TABLE_ARG));
-      }
-
-      if (in.hasOption(NUM_MAPPERS_ARG)) {
-        out.setNumMappers(Integer.parseInt(in.getOptionValue(NUM_MAPPERS_ARG)));
-      }
-
-      if (in.hasOption(EXPORT_PATH_ARG)) {
-        out.setExportDir(in.getOptionValue(EXPORT_PATH_ARG));
-      }
-
-      if (in.hasOption(JAR_FILE_NAME_ARG)) {
-        out.setExistingJarName(in.getOptionValue(JAR_FILE_NAME_ARG));
-      }
-
-      if (in.hasOption(UPDATE_KEY_ARG)) {
-        out.setUpdateKeyCol(in.getOptionValue(UPDATE_KEY_ARG));
-      }
-
-      if (in.hasOption(STAGING_TABLE_ARG)) {
-        out.setStagingTableName(in.getOptionValue(STAGING_TABLE_ARG));
-      }
-
-      if (in.hasOption(CLEAR_STAGING_TABLE_ARG)) {
-        out.setClearStagingTable(true);
-      }
-
-      applyNewUpdateOptions(in, out);
-      applyInputFormatOptions(in, out);
-      applyOutputFormatOptions(in, out);
-      applyOutputFormatOptions(in, out);
-      applyCodeGenOptions(in, out, false);
-    } catch (NumberFormatException nfe) {
-      throw new InvalidOptionsException("Error: expected numeric argument.\n"
-          + "Try --help for usage.");
-    }
-  }
-
-  /**
-   * Validate export-specific arguments.
-   * @param options the configured SqoopOptions to check
-   */
-  protected void validateExportOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-    if (options.getTableName() == null) {
-      throw new InvalidOptionsException("Export requires a --table argument."
-          + HELP_STR);
-    } else if (options.getExportDir() == null) {
-      throw new InvalidOptionsException(
-          "Export requires an --export-dir argument."
-          + HELP_STR);
-    } else if (options.getExistingJarName() != null
-        && options.getClassName() == null) {
-      throw new InvalidOptionsException("Jar specified with --jar-file, but no "
-          + "class specified with --class-name." + HELP_STR);
-    } else if (options.getExistingJarName() != null
-        && options.getUpdateKeyCol() != null) {
-      // We need to regenerate the class with the output column order set
-      // correctly for the update-based export. So we can't use a premade
-      // class.
-      throw new InvalidOptionsException("Jar cannot be specified with "
-          + "--jar-file when export is running in update mode.");
-    } else if (options.getStagingTableName() != null
-        && options.getUpdateKeyCol() != null) {
-      // Staging table may not be used when export is running in update mode
-      throw new InvalidOptionsException("Staging table cannot be used when "
-          + "export is running in update mode.");
-    } else if (options.getStagingTableName() != null
-        && options.getStagingTableName().equalsIgnoreCase(
-            options.getTableName())) {
-      // Name of staging table and destination table cannot be the same
-      throw new InvalidOptionsException("Staging table cannot be the same as "
-          + "the destination table. Name comparison used is case-insensitive.");
-    } else if (options.doClearStagingTable()
-        && options.getStagingTableName() == null) {
-      // Option to clear staging table specified but not the staging table name
-      throw new InvalidOptionsException("Option to clear the staging table is "
-          + "specified but the staging table name is not.");
-    }
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public void validateOptions(SqoopOptions options)
-      throws InvalidOptionsException {
-
-    // If extraArguments is full, check for '--' followed by args for
-    // mysqldump or other commands we rely on.
-    options.setExtraArgs(getSubcommandArgs(extraArguments));
-    int dashPos = extraArguments.length;
-    for (int i = 0; i < extraArguments.length; i++) {
-      if (extraArguments[i].equals("--")) {
-        dashPos = i;
-        break;
-      }
-    }
-
-    if (hasUnrecognizedArgs(extraArguments, 0, dashPos)) {
-      throw new InvalidOptionsException(HELP_STR);
-    }
-
-    validateExportOptions(options);
-    validateOutputFormatOptions(options);
-    validateCommonOptions(options);
-    validateCodeGenOptions(options);
-  }
-
-  private void applyNewUpdateOptions(CommandLine in, SqoopOptions out)
-      throws InvalidOptionsException {
-    if (in.hasOption(UPDATE_MODE_ARG)) {
-      String updateTypeStr = in.getOptionValue(UPDATE_MODE_ARG);
-      if ("updateonly".equals(updateTypeStr)) {
-        out.setUpdateMode(UpdateMode.UpdateOnly);
-      } else if ("allowinsert".equals(updateTypeStr)) {
-        out.setUpdateMode(UpdateMode.AllowInsert);
-      } else {
-        throw new InvalidOptionsException("Unknown new update mode: "
-            + updateTypeStr + ". Use 'updateonly' or 'allowinsert'."
-            + HELP_STR);
-      }
-    }
-  }
+public class ExportTool
+    extends org.apache.sqoop.tool.ExportTool {
 }
-

Modified: incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/HelpTool.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/HelpTool.java?rev=1195852&r1=1195851&r2=1195852&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/HelpTool.java (original)
+++ incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/HelpTool.java Tue Nov  1 07:10:13 2011
@@ -1,6 +1,4 @@
 /**
- * Copyright 2011 The Apache Software Foundation
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,96 +15,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.cloudera.sqoop.tool;
 
-import java.util.Set;
-
-import com.cloudera.sqoop.SqoopOptions;
-import com.cloudera.sqoop.cli.ToolOptions;
-
 /**
- * Tool that explains the usage of Sqoop.
+ * @deprecated Moving to use org.apache.sqoop namespace.
  */
-public class HelpTool extends BaseSqoopTool {
-
-  public HelpTool() {
-    super("help");
-  }
-
-  /**
-   * @param str the string to right-side pad
-   * @param num the minimum number of characters to return
-   * @return 'str' with enough right padding to make it num characters long.
-   */
-  private static String padRight(String str, int num) {
-    StringBuilder sb = new StringBuilder();
-    sb.append(str);
-    for (int count = str.length(); count < num; count++) {
-      sb.append(" ");
-    }
-
-    return sb.toString();
-  }
-
-  /**
-   * Print out a list of all SqoopTool implementations and their
-   * descriptions.
-   */
-  private void printAvailableTools() {
-    System.out.println("usage: sqoop COMMAND [ARGS]");
-    System.out.println("");
-    System.out.println("Available commands:");
-
-    Set<String> toolNames = getToolNames();
-
-    int maxWidth = 0;
-    for (String tool : toolNames) {
-      maxWidth = Math.max(maxWidth, tool.length());
-    }
-
-    for (String tool : toolNames) {
-      System.out.println("  " + padRight(tool, maxWidth+2)
-          + getToolDescription(tool));
-    }
-
-    System.out.println("");
-    System.out.println(
-        "See 'sqoop help COMMAND' for information on a specific command.");
-  }
-
-
-  @Override
-  /** {@inheritDoc} */
-  public int run(SqoopOptions options) {
-
-    if (this.extraArguments != null && this.extraArguments.length > 0) {
-      if (hasUnrecognizedArgs(extraArguments, 1, extraArguments.length)) {
-        return 1;
-      }
-
-      SqoopTool subTool = SqoopTool.getTool(extraArguments[0]);
-      if (null == subTool) {
-        System.out.println("No such tool: " + extraArguments[0]);
-        System.out.println(
-            "Try 'sqoop help' for a list of available commands.");
-        return 1;
-      } else {
-        ToolOptions toolOpts = new ToolOptions();
-        subTool.configureOptions(toolOpts);
-        subTool.printHelp(toolOpts);
-        return 0;
-      }
-    } else {
-      printAvailableTools();
-    }
-
-    return 0;
-  }
-
-  @Override
-  public void printHelp(ToolOptions opts) {
-    System.out.println("usage: sqoop " + getToolName() + " [COMMAND]");
-  }
+public class HelpTool
+    extends org.apache.sqoop.tool.HelpTool {
 }
-

Modified: incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/ImportAllTablesTool.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/ImportAllTablesTool.java?rev=1195852&r1=1195851&r2=1195852&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/ImportAllTablesTool.java (original)
+++ incubator/sqoop/trunk/src/java/com/cloudera/sqoop/tool/ImportAllTablesTool.java Tue Nov  1 07:10:13 2011
@@ -1,6 +1,4 @@
 /**
- * Copyright 2011 The Apache Software Foundation
- *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,76 +15,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.cloudera.sqoop.tool;
 
-import java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.cloudera.sqoop.Sqoop;
-import com.cloudera.sqoop.SqoopOptions;
-import com.cloudera.sqoop.hive.HiveImport;
-import com.cloudera.sqoop.util.ImportException;
-
 /**
- * Tool that performs database imports of all tables in a database to HDFS.
+ * @deprecated Moving to use org.apache.sqoop namespace.
  */
-public class ImportAllTablesTool extends ImportTool {
-
-  public static final Log LOG = LogFactory.getLog(
-      ImportAllTablesTool.class.getName());
-
-  public ImportAllTablesTool() {
-    super("import-all-tables", true);
-  }
-
-  @Override
-  /** {@inheritDoc} */
-  public int run(SqoopOptions options) {
-    HiveImport hiveImport = null;
-
-    if (!init(options)) {
-      return 1;
-    }
-
-    try {
-      if (options.doHiveImport()) {
-        hiveImport = new HiveImport(options, manager, options.getConf(), false);
-      }
-
-      String [] tables = manager.listTables();
-      if (null == tables) {
-        System.err.println("Could not retrieve tables list from server");
-        LOG.error("manager.listTables() returned null");
-        return 1;
-      } else {
-        for (String tableName : tables) {
-          importTable(options, tableName, hiveImport);
-        }
-      }
-    } catch (IOException ioe) {
-      LOG.error("Encountered IOException running import job: "
-          + ioe.toString());
-      if (System.getProperty(Sqoop.SQOOP_RETHROW_PROPERTY) != null) {
-        throw new RuntimeException(ioe);
-      } else {
-        return 1;
-      }
-    } catch (ImportException ie) {
-      LOG.error("Error during import: " + ie.toString());
-      if (System.getProperty(Sqoop.SQOOP_RETHROW_PROPERTY) != null) {
-        throw new RuntimeException(ie);
-      } else {
-        return 1;
-      }
-    } finally {
-      destroy(options);
-    }
-
-    return 0;
-  }
-
+public class ImportAllTablesTool
+    extends org.apache.sqoop.tool.ImportAllTablesTool {
 }
-