/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.core.web.dispaly.grid; import org.dom4j.Document; import com.jinhe.tss.core.web.dispaly.IDataEncoder; import com.jinhe.tss.core.web.dispaly.XmlPrintWriter; /** * <p> GridEncoder.java </p> * * Grid对象:生成Grid控件所需要的xml数据 * */ public class GridDataEncoder implements IDataEncoder { private static final String GRID_DATA_ROW_NODE_NAME = "row"; private GridTemplet templet; //模板对象 private GridParser parser; //解析器 private Object data; //源数据 private int dataType; //数据类型 public GridDataEncoder(Object data, String uri) { this(data, uri, new SimpleGridParser()); } public GridDataEncoder(Object data, Document doc) { this(data, doc, new SimpleGridParser()); } public GridDataEncoder(Object data, Document doc, GridParser parser) { templet = new GridTemplet(doc); this.data = data; this.dataType = GridNode.TYPE_SIMPLE_NODE; this.parser = parser; parser.setColumns(templet.getColumns()); } public GridDataEncoder(Object data, String uri, GridParser parser) { templet = new GridTemplet(uri); this.data = data; this.dataType = GridNode.TYPE_SIMPLE_NODE; this.parser = parser; parser.setColumns(templet.getColumns()); } /** * 获取xml数据 */ public String toXml() { StringBuffer sb = new StringBuffer(); sb.append(templet.getHeader()); GridNode node = parser.parse(data, dataType); if (node != null) { sb.append(node.toXml(GRID_DATA_ROW_NODE_NAME)); } sb.append(templet.getFooter()); return sb.toString(); } /** * 获取模板对象 */ public GridTemplet getTemplet() { return templet; } public void print(XmlPrintWriter out) { out.append(templet.getHeader()); GridNode node = parser.parse(data, dataType); if (node != null) { out.append(node.toXml(GRID_DATA_ROW_NODE_NAME)); } out.append(templet.getFooter()); } }