package cn.sun.action; import java.beans.PropertyVetoException; import java.math.BigDecimal; import javax.faces.context.FacesContext; import javax.servlet.http.HttpServletRequest; import org.richfaces.model.TreeNode; import org.richfaces.model.TreeNodeImpl; import cn.sun.bean.Product; import cn.sun.bean.ProductModel; import cn.sun.bean.ProductParent; import cn.sun.bean.ProductSort; import cn.sun.dao.ProductDao; import cn.sun.dao.ProductModelDao; import cn.sun.dao.ProductSortDao; import cn.test.bean.ServerConfig; public class TreeAction { private ProductSortDao psd = new ProductSortDao(); private ProductDao pd = new ProductDao(); private ProductModelDao pmd = new ProductModelDao(); private ProductModel[] pms ; public ProductModel[] getPms() { return pms; } ServerConfig server = new ServerConfig(); { try { server.CommonServerConfig(); } catch (PropertyVetoException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } // test tree method first public TreeNode getRootNodes() { TreeNode<ProductSort> rootNode = new TreeNodeImpl<ProductSort>(); ProductSort[] ps = psd.getAllPs(); TreeNode<ProductSort>[] root = new TreeNodeImpl[ps.length]; for(int i=0;i<root.length;i++){ root[i] = new TreeNodeImpl<ProductSort>(); root[i].setData(ps[i]); rootNode.addChild(i, root[i]); } return rootNode; } //test tree second public TreeNode getRootNodesec(){ TreeNode rootNode = new TreeNodeImpl(); TreeNodeImpl child = new TreeNodeImpl(); ProductSort[] ps = psd.getAllPs(); Product[] products = pd.getAllProduct(); TreeNode<ProductSort>[] root = new TreeNodeImpl[ps.length]; for(int i=0;i<root.length;i++){ root[i] = new TreeNodeImpl<ProductSort>(); ProductSort p = ps[i]; root[i].setData(p); for(int j=0;j<products.length;j++){ if(ps[i].getId().equals(products[j].getPsid())){ child.setData(products[j]); root[i].addChild(j,child); } } rootNode.addChild(i, root[i]); } return rootNode; } //test tree third public TreeNode getRootNode(){ ProductSort[] ps = psd.getAllPs(); Product[] products = pd.getAllProduct(); ProductModel[] pm = pmd.getAllPm(); TreeNode<ProductParent> treeNode = new TreeNodeImpl<ProductParent>(); TreeNodeImpl<ProductParent>[] root = new TreeNodeImpl[ps.length]; for(int i=0;i<root.length;i++){ root[i] = new TreeNodeImpl<ProductParent>(); ProductParent pp = new ProductParent(); pp.setObjectType("productSort"); pp.setProductSort(ps[i]); root[i].setData(pp); for(int j=0;j<products.length;j++){ if(ps[i].getId().equals(products[j].getPsid())){ TreeNodeImpl<ProductParent> child = new TreeNodeImpl<ProductParent>(); ProductParent ppc = new ProductParent(); ppc.setObjectType("product"); ppc.setProduct(products[j]); child.setData(ppc); for(int k=0;k<pm.length;k++){ if(products[j].getPid().equals(pm[k].getPid())){ TreeNodeImpl<ProductParent> leaf = new TreeNodeImpl<ProductParent>(); ProductParent ppl = new ProductParent(); ppl.setObjectType("productModel"); ppl.setProductModel(pm[k]); leaf.setData(ppl); child.addChild(k, leaf);//load leaf } } root[i].addChild(j, child);//load child } } treeNode.addChild(i, root[i]);//load root } return treeNode; } public void getPm(){ HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); BigDecimal pid = BigDecimal.valueOf(Long.parseLong(request.getParameter("pid"))); pms = pd.getByPid(pid); } public static void main(String[] a){ new TreeAction().getRootNodes(); } }