kettle插件开发,json转string 格式

基于kettle版本5.4.0.1-130
1:实现类
[img]http://dl2.iteye.com/upload/attachment/0115/1600/0349afc1-6950-3f70-aa76-4bbe93b74b62.png[/img]
2:JSONToStringMeta
说明:配置标签@Step(),初始化程序
extends BaseStepMeta :继承BaseStepMeta
implements StepMetaInterface :实现接口StepMetaInterface
[color=red]整个代码的执行过程是:先运行配置标签meta类型,通过meta类找到Dialog类,当运行脚本时调用实现类[/color]

@Step(id="bsoft-json", image="JSO.png", name="JSONToString", description="json格式转string", categoryDescription="Bsoft-Dc")

public class JSONToStringMeta extends BaseStepMeta implements StepMetaInterface {
private XMLField[] inputFields;
private ValueMetaAndData value;
private String outputName;

public JSONToStringMeta() {

super(); // allocate BaseStepInfo
}

//流程中新增列字段
@SuppressWarnings("deprecation")
@Override
public void getFields(RowMetaInterface r, String origin, RowMetaInterface[] info, StepMeta nextStep, VariableSpace space) {
ValueMetaInterface v = new ValueMeta(outputName);
v.setType(ValueMetaInterface.TYPE_STRING);
r.addValueMeta(v);
}

@Override
public Object clone() {
JSONToStringMeta retval = (JSONToStringMeta) super.clone();
int nrfields = inputFields.length;
retval.allocateInput(nrfields);
for (int i = 0; i < nrfields; i++) {
retval.inputFields[i] = (XMLField) inputFields[i].clone();
}

return retval;
}

public void allocateInput(int nrfields) {
inputFields = new XMLField[nrfields];
}

//读取ktr脚本的xml数据
@Override
public void loadXML(Node stepnode, List<DatabaseMeta> databases, Map<String, Counter> counters) throws KettleXMLException {
outputName = XMLHandler.getTagValue(stepnode, "outputName"); //$NON-NLS-1$

Node infields = XMLHandler.getSubNode(stepnode, "inFields"); //$NON-NLS-1$

int num = XMLHandler.countNodes(infields, "field"); //$NON-NLS-1$

allocateInput(num);

for (int i = 0; i < num; i++) {
Node fnode = XMLHandler.getSubNodeByNr(infields, "field", i); //$NON-NLS-1$
inputFields[i] = new XMLField();
inputFields[i].setType(XMLHandler.getTagValue(fnode, "type")); //$NON-NLS-1$
inputFields[i].setFieldName(XMLHandler.getTagValue(fnode, "name")); //$NON-NLS-1$
inputFields[i].setFormat(XMLHandler.getTagValue(fnode, "format")); //$NON-NLS-1$
inputFields[i].setLength(Const.toInt( XMLHandler.getTagValue(fnode, "length"), -1)); //$NON-NLS-1$
inputFields[i].setPrecision(Const.toInt( XMLHandler.getTagValue(fnode, "precision"), -1)); //$NON-NLS-1$

}

}

//将对象Meta数据转成xml返回
@Override
public String getXML() {
StringBuffer retval = new StringBuffer(300);
retval.append(" " + XMLHandler.addTagValue("outputName", outputName == null ? "" : outputName));

XMLField[] infields = getInputField();

retval.append(" <inFields>"); //$NON-NLS-1$
for (int i = 0; i < infields.length; i++) {
inputFields[i] = infields[i];
retval.append(" <field>"); //$NON-NLS-1$
retval.append(" ").append(XMLHandler.addTagValue("name", inputFields[i].getFieldName())); //$NON-NLS-1$ //$NON-NLS-2$
retval.append(" ").append(XMLHandler.addTagValue("type", inputFields[i].getTypeDesc())); //$NON-NLS-1$ //$NON-NLS-2$
retval.append(" ").append(XMLHandler.addTagValue("format", inputFields[i].getFormat())); //$NON-NLS-1$ //$NON-NLS-2$
retval.append(" ").append(XMLHandler.addTagValue("length", inputFields[i].getLength())); //$NON-NLS-1$ //$NON-NLS-2$
retval.append(" ").append(XMLHandler.addTagValue("precision", inputFields[i].getPrecision())); //$NON-NLS-1$ //$NON-NLS-2$
retval.append(" </field>"); //$NON-NLS-1$
}
retval.append(" </inFields>"); //$NON-NLS-1$

return
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值