我正在尝试step
使用我的 custom处理一个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()
一步的输出替换了该字段,因为我认为。所以我现在很困惑,因为它输出字段名称而不是输出它的值。所以我认为传递给该方法的参数有问题。
所以有什么帮助吗?