Java調(diào)用自己開發(fā)的Kettle plugin插件

反正找了一天天也沒找到!?。?Kettle 6.1 相比 Kettle 3 改動太大了。下面直接上代碼,備忘!

在初始化

KettleEnvironment.init();   

添加插件如下代碼,就能夠注冊一個Step的插件了

List<String> empty = Collections.emptyList();
// 這個map別復(fù)用了,下一個插件重新new一個,不然即使clear了,下一個插件也不能注冊成功
Map<Class<?>,String> xxxxClassMap=new HashMap<Class<?>,String>();
// xxxxMeta 就是開發(fā)的插件的Meta類了
xxxxClassMap.put(StepMetaInterface.class,xxxxMeta.class.getName());
PluginInterface xxxxPlugin=new Plugin(
    new String[]{"MergeField"},
    StepPluginType.class,
    StepMetaInterface.class,
    "轉(zhuǎn)換",
    "插件的名字",
    "插件的描述,不影響java執(zhí)行",
    "插件的圖片,不影響java執(zhí)行",
    false,
    false,
    xxxxClassMap,
    empty,
    null,
    null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,xxxxPlugin);

Map<Class<?>,String> anotherClassMap=new HashMap<Class<?>,String>();
// anotherMeta 就是開發(fā)的插件的Meta類了
xxxxClassMap.put(StepMetaInterface.class,anotherMeta.class.getName());
PluginInterface anotherPlugin=new Plugin(
    new String[]{"MergeField"},
    StepPluginType.class,
    StepMetaInterface.class,
    "轉(zhuǎn)換",
    "插件的名字",
    "插件的描述,不影響java執(zhí)行",
    "插件的圖片,不影響java執(zhí)行",
    false,
    false,
    anotherClassMap,
    empty,
    null,
    null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,anotherPlugin);

如此這般就能運(yùn)行了
附上java調(diào)用stepMeta的完整代碼

KettleEnvironment.init();   
List<String> empty = Collections.emptyList();
// 這個map別復(fù)用了,下一個插件重新new一個,不然即使clear了,下一個插件也不能注冊成功
Map<Class<?>,String> xxxxClassMap=new HashMap<Class<?>,String>();
// xxxxMeta 就是開發(fā)的插件的Meta類了
xxxxClassMap.put(StepMetaInterface.class,xxxxMeta.class.getName());
PluginInterface xxxxPlugin=new Plugin(
    new String[]{"MergeField"},
    StepPluginType.class,
    StepMetaInterface.class,
    "轉(zhuǎn)換",
    "插件的名字",
    "插件的描述,不影響java執(zhí)行",
    "插件的圖片,不影響java執(zhí)行",
    false,
    false,
    xxxxClassMap,
    empty,
    null,
    null);
PluginRegistry.getInstance().registerPlugin(StepPluginType.class,xxxxPlugin);
// 數(shù)據(jù)庫連接元對象(連接名稱,不必與kettle中配置的保持一致:數(shù)據(jù)庫類型:連接方式(kettle支持的連接方式):資源庫IP:資源庫實(shí)例名:資源庫端口:資源庫用戶名:資源庫用戶密碼)  
DatabaseMeta connection = new DatabaseMeta("資源庫名稱,不影響", "Oracle", DatabaseMeta.getAccessTypeDesc(0), "oracle的地址", "oracle的實(shí)例", "1521", "oracle用戶名", "oracle密碼");  
// 資源庫元對象  
KettleDatabaseRepositoryMeta repinfo = new KettleDatabaseRepositoryMeta();  
repinfo.setConnection(connection);  
// 資源庫  
KettleDatabaseRepository repository = new KettleDatabaseRepository();
repository.init(repinfo);
// 連接資源庫  
repository.connect("admin","admin",true);  
// 資源庫目錄對象 
RepositoryDirectoryInterface directoryInterface=repository.loadRepositoryDirectoryTree();
// 轉(zhuǎn)換元對象  
TransMeta transMeta=repository.loadTransformation("tran的名稱",directoryInterface,null,true,null);
// 轉(zhuǎn)換  
Trans trans = new Trans(transMeta);

// 執(zhí)行轉(zhuǎn)換  
trans.execute(null);  
// 等待轉(zhuǎn)換執(zhí)行結(jié)束  
if(trans.getErrors()>0){
    System.out.println("transformation error");
}else{
    System.out.println("transformation successfully");
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,062評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 泅渡,一只蟲子住進(jìn)了蒲公英的家里,卻笨的逃不出去 那團(tuán)團(tuán)的潔白是致命的誘惑 不知如何身已深陷 無法自拔 終有日向往...
    一鉤殘月帶三星閱讀 374評論 0 3
  • 介紹 tensorflow是由google開源的一個用于機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)研究的library。官網(wǎng)地址為http...
    YunaY閱讀 2,682評論 1 4
  • 今天家里來了客人 估摸著也六七十歲了 跟我外公認(rèn)識幾十年了 好久沒聯(lián)系的舊友竟然在路上碰著了 外公就把他叫到家里來...
    Dorcas閱讀 441評論 0 1

友情鏈接更多精彩內(nèi)容