pentaho-kettle
kettle-engine
8.3.0.0
system
/Users/gengzhengtao/.m2/repository/pentaho-kettle/kettle-engine/8.1.0.0/kettle-engine-8.1.0.0.jar
pentaho-kettle
kettle-core
8.3.0.0
system
/.m2/repository/pentaho-kettle/kettle-core/8.1.0.0/kettle-core-8.1.0.0.jar
pentaho-kettle
kettle-metastore
8.30.0
system
/.m2/repository/pentaho-kettle/kettle-metastore/8.1.0.0/kettle-metastore-8.1.0.0.jar
private static void runTransfer(String ktrFilePath,Map paras)
throws Exception {
Trans trans = null;
if (StringUtils.isNotEmpty(ktrFilePath))
{
// 初始化
KettleEnvironment.init();
EnvUtil.environmentInit();
// 转换元对象
TransMeta transMeta = new TransMeta(ktrFilePath);
List dmlist = transMeta.getDatabases();
for (DatabaseMeta dm: dmlist
) {
String connection_name = StringUtils.trimToNull(dm.getName());
if(connection_name.equals(Global.getConnectionname())){
dm.setHostname(Global.getHostname());
dm.setDBName(Global.getDbname());
dm.setDBPort(Global.getDbport());
dm.setUsername(Global.getDbusername());
dm.setPassword(Global.getDbpassword());
}
}
// 转换
trans = new Trans(transMeta);
for(Map.Entry entry: paras.entrySet()) {
//向ktr中传值
trans.setVariable(entry.getKey(), entry.getValue().toString());
}
// 执行转换
trans.execute(null);
// 等待转换执行结束
trans.waitUntilFinished();
//更新文件执行文件状态
FileDataSource fileDataSource = new FileDataSource();
if (trans.getErrors() > 0) {
// if(id != 0){
//TODO 更新fileDataSource不在这里处理 放在after
// fileDataSource.setFileKey(id);
// fileDataSource.setExecutStatus("1");
// SpringUtils.getBean(IFileDataSourceService.class).updateFileDataSource(fileDataSource);
// }
String[] errMsgList = KettleLogStore.getAppender().getBuffer(trans.getLogChannelId(), false).toString().split("\n\r\n");
String errMsg=errMsgList[0];
throw new Exception(errMsg);
}
}
else
{
throw new Exception("ktr文件为空!");
}
}