step
カスタムを使用してを処理しようとしていますplugin
。そのため、メソッド内の前のステップからフィールドの値を取得しようとしましたprocessRow()
。
私はこのようなことを試しました:
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
meta = (PluginMeta) smi;
data = (PluginData) sdi;
Object[] r=getRow(); // get row, blocks when needed!
if (r==null) // no more input to be expected...
{
setOutputDone();
return false;
}
if (first)
{
first = false;
data.outputRowMeta = (RowMetaInterface)getInputRowMeta().clone();
meta.getFields(data.outputRowMeta, getStepname(), null, null, this);
}
Object[] outputRow = RowDataUtil.addValueData(r, data.outputRowMeta.size()-1, "");
putRow(data.outputRowMeta, outputRow); // copy row to possible alternate rowset(s).
try {
// Send The Query to ActiveMQ
FileOutputStream fw = new FileOutputStream("E:\\testing.txt");
fw.write(fieldSubstitute(meta.getField(), data.outputRowMeta, outputRow).getBytes());
fw.close();
} catch (IOException ex) {
Logger.getLogger(PluginStep.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("@@@@@@@@@@@@@@@@@@@@: "+ex.getMessage());
}
if (checkFeedback(getLinesRead())) {
if (log.isBasic()) {
logBasic("Linenr " + getLinesRead());
}
}
return true;
}
fieldSubstitute()
そのため、フィールドを前のステップからの出力に置き換えるために使用したと思います。その値を出力する代わりにフィールド名を出力するので、私は今混乱しています。そのため、メソッドに渡されるパラメーターに問題があると思います。
ヘルプはありますか?