blob: b075e0d6446375213692be1b3267af2e77a3c62a [file] [log] [blame]
/**
* 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
* regarding copyright ownership. The ASF 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 org.apache.sqoop.manager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sqoop.SqoopOptions;
import org.apache.sqoop.metastore.JobData;
import static org.apache.sqoop.manager.SupportedManagers.CUBRID;
import static org.apache.sqoop.manager.SupportedManagers.DB2;
import static org.apache.sqoop.manager.SupportedManagers.HSQLDB;
import static org.apache.sqoop.manager.SupportedManagers.JTDS_SQLSERVER;
import static org.apache.sqoop.manager.SupportedManagers.MYSQL;
import static org.apache.sqoop.manager.SupportedManagers.NETEZZA;
import static org.apache.sqoop.manager.SupportedManagers.ORACLE;
import static org.apache.sqoop.manager.SupportedManagers.POSTGRES;
import static org.apache.sqoop.manager.SupportedManagers.SQLSERVER;
/**
* Contains instantiation code for all ConnManager implementations
* shipped and enabled by default in Sqoop.
*/
public class DefaultManagerFactory
extends org.apache.sqoop.manager.ManagerFactory {
public static final Log LOG = LogFactory.getLog(
DefaultManagerFactory.class.getName());
public static final String NET_SOURCEFORGE_JTDS_JDBC_DRIVER = "net.sourceforge.jtds.jdbc.Driver";
public ConnManager accept(JobData data) {
SqoopOptions options = data.getSqoopOptions();
String scheme = extractScheme(options);
if (null == scheme) {
// We don't know if this is a mysql://, hsql://, etc.
// Can't do anything with this.
LOG.warn("Null scheme associated with connect string.");
return null;
}
LOG.debug("Trying with scheme: " + scheme);
if (MYSQL.isTheManagerTypeOf(options)) {
if (options.isDirect()) {
return new DirectMySQLManager(options);
} else {
return new MySQLManager(options);
}
} else if (POSTGRES.isTheManagerTypeOf(options)) {
if (options.isDirect()) {
return new DirectPostgresqlManager(options);
} else {
return new PostgresqlManager(options);
}
} else if (HSQLDB.isTheManagerTypeOf(options)) {
return new HsqldbManager(options);
} else if (ORACLE.isTheManagerTypeOf(options)) {
return new OracleManager(options);
} else if (SQLSERVER.isTheManagerTypeOf(options)) {
return new SQLServerManager(options);
} else if (JTDS_SQLSERVER.isTheManagerTypeOf(options)) {
return new SQLServerManager(NET_SOURCEFORGE_JTDS_JDBC_DRIVER, options);
} else if (DB2.isTheManagerTypeOf(options)) {
return new Db2Manager(options);
} else if (NETEZZA.isTheManagerTypeOf(options)) {
if (options.isDirect()) {
return new DirectNetezzaManager(options);
} else {
return new NetezzaManager(options);
}
} else if (CUBRID.isTheManagerTypeOf(options)) {
return new CubridManager(options);
} else {
return null;
}
}
protected String extractScheme(SqoopOptions options) {
return SupportedManagers.extractScheme(options);
}
}