/* ================================================================== * 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.portal.helper; import java.util.HashMap; import java.util.List; import java.util.Map; import com.jinhe.tss.core.web.dispaly.tree.ILevelTreeNode; import com.jinhe.tss.core.web.dispaly.tree.ITreeParser; import com.jinhe.tss.core.web.dispaly.tree.TreeNode; import com.jinhe.tss.portal.entity.ElementGroup; /** * 门户元素和组的树型解析器。 两层结构:组 和 元素 */ public class ElementTreeParser implements ITreeParser { public TreeNode parse(Object data) { @SuppressWarnings("unchecked") List<ILevelTreeNode> list = (List<ILevelTreeNode>)data; // 继承ILevelTreeNode接口的实体列表 TreeNode root = new TreeNode(); if( list == null || list.isEmpty() ) { return root; } Map<Long, TreeNode> groupNodeMap = new HashMap<Long, TreeNode>(); for(ILevelTreeNode entity : list) { if(entity instanceof ElementGroup) { // 组节点 groupNodeMap.put(entity.getId(), new TreeNode(entity)); } } for(ILevelTreeNode entity : list) { if( !(entity instanceof ElementGroup) ) { // 元素节点 Long parentId = entity.getParentId(); TreeNode parent = groupNodeMap.get(parentId); if(parent != null){ parent.addChild(new TreeNode(entity)); } } } for(TreeNode groupNode : groupNodeMap.values()) { root.addChild(groupNode); } return root; } }