/* ==================================================================
* 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 java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.Element;
import com.jinhe.tss.core.util.BeanUtil;
import com.jinhe.tss.core.util.XMLDocUtil;
/**
* <p> GridDecoder.java </p>
* 解析Grid的XML格式数据。
* 一般为格式如:
* <data>
* <row id = 1 .../>
* <row id=2 .../>
* </data>
*
* 将XML数据中每个row节点里属性取出,放入一个Map或者一个指定的实体对象中,
* 然后将这些Map或实体逐个放入List中返回。
*
*/
public class GridDataDecoder {
/**
* 将Grid数据dataXml中各个<row ...>节点的属性值设置到实体中,并将各个实体放入List返回
*
* @param dataXml XML数据
* @param entityClass 实体的class名称
* @return
*/
public static List<Object> decode(String dataXml, Class<?> entityClass){
Document doc = XMLDocUtil.dataXml2Doc(dataXml);
List<Map<String, String>> mapList = new ArrayList<Map<String, String>>();
@SuppressWarnings("unchecked")
List<Element> nodeList = doc.selectNodes("//row");
for(Element node : nodeList){
mapList.add(XMLDocUtil.dataNode2Map(node));
}
List<Object> list = new ArrayList<Object>();
for(Map<String, String> map : mapList){
Object bean = BeanUtil.newInstance(entityClass);
BeanUtil.setDataToBean(bean, map);
list.add(bean);
}
return list;
}
}