/*******************************************************************************
* Copyright 2017 Capital One Services, LLC and Bitwise, Inc.
* Licensed 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 hydrograph.engine.cascading.assembly;
import cascading.jdbc.RedshiftScheme;
import cascading.jdbc.RedshiftTableDesc;
import cascading.jdbc.db.DBInputFormat;
import hydrograph.engine.cascading.assembly.infra.ComponentParameters;
import hydrograph.engine.core.component.entity.InputRDBMSEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class InputRedshiftAssembly extends InputRDBMSAssembly {
/**
*
*/
private static final long serialVersionUID = -2991614126645020920L;
/**
* Redshift Input Component - read records from Redhsift Table.
*
*/
protected RedshiftTableDesc tableDesc;
protected RedshiftScheme scheme;
private static Logger LOG = LoggerFactory
.getLogger(InputRedshiftAssembly.class);
public InputRedshiftAssembly(InputRDBMSEntity baseComponentEntity,
ComponentParameters componentParameters) {
super(baseComponentEntity, componentParameters);
}
@Override
public void intializeRdbmsSpecificDrivers() {
// For Redshift
inputFormatClass = DBInputFormat.class;
driverName = "RedshiftTap.DB_DRIVER";
// setJDBCFactory( new RedshiftFactory() );
}
/**
* This method will create the table descriptor and scheme to read the data
* from RDBMS Table. In this method, table descriptor and scheme will be
* created for specific file format like TextDelimited for Text file, and so
* on for other file format like parquet, etc.
*/
@Override
protected void createTableDescAndScheme() {
// For sql query
/*if (inputRDBMSEntity.getQuery() != null
&& inputRDBMSEntity.getQuery() != "") {
String sql = inputRDBMSEntity.getQuery();
String countSql = "select count(*) from "
+ inputRDBMSEntity.getTableName();
scheme = new RedshiftScheme(columnNames, sql,
countSql);
} else {
tableDesc = new RedshiftTableDesc(inputRDBMSEntity.getTableName(),columnNames
, columnDefs, null, null);
scheme = new RedshiftScheme(inputFormatClass, fields, columnNames);
}*/
}
@Override
protected void initializeRdbmsTap() {
LOG.debug("Initializing Redshift Tap.");
/*if (inputRDBMSEntity.getQuery() == null
|| inputRDBMSEntity.getQuery() == "") {
rdbmsTap = new RedshiftTap(inputRDBMSEntity.getJdbcurl() + "/" + inputRDBMSEntity.getDatabaseName(),
inputRDBMSEntity.getUsername(), inputRDBMSEntity.getPassword(),null,null
,tableDesc, scheme, SinkMode.REPLACE, false, true);
} else {
// rdbmsTap = new JDBCTap(inputRDBMSEntity.getJdbcurl() + "/"
// + inputRDBMSEntity.getDatabaseName(),
// inputRDBMSEntity.getUsername(),
// inputRDBMSEntity.getPassword(), driverName, scheme);
rdbmsTap = new RedshiftTap(inputRDBMSEntity.getJdbcurl() + "/" + inputRDBMSEntity.getDatabaseName(),
inputRDBMSEntity.getUsername(), inputRDBMSEntity.getPassword(),null,null
,null, scheme, SinkMode.REPLACE, false, true);
}
((RedshiftTap) rdbmsTap).setBatchSize(inputRDBMSEntity.getBatchSize());
*/
}
}