Thanks Sean, Andrew.

I am trying to construct tree2 from following DB table. KaMenu object
represents the following table.
+-------+--------+------+------+--------+
| child | parent | name | link | locale |
+-------+--------+------+------+--------+
|     1 |      1 | n1   | l1   |      0 |
|     2 |      1 | n2   | l2   |      0 |
|     3 |      1 | n3   | l3   |      0 |
+-------+--------+------+------+--------+

Here is my algorithm to construct the TreeNode for tree2. I tried server
side tree2 without any help. It is recursive. nodeLeafRef is a hashmap that
returns TreeNode for rootNode 1. When the function is called, it is filled
with information about the root node. In this example nodeLeafRef.size() is
3, but I still get the Java heap space exception.

Any help is really appreciated. Thank you.

public void buildTreeData(KaMenu kaMenu) {
                
                //List list = kaMenuModel.findChildren(kaMenu.getChild());
                List list = (ArrayList)parentChild.get(kaMenu.getChild());
                // If the list is empty, then its a leaf else it is a node

                if(list != null)
                {
                        int n = list.size();
                        if (n > 0) {
                                // Add the parent to the Hashtable
                                TreeNode nodeRef = new 
TreeNodeBase("foo-folder",
kaMenu.getName(),false);
                                
                                if 
(!nodeLeafRef.containsKey(kaMenu.getChild())) {
                                        nodeLeafRef.put(kaMenu.getChild(), 
nodeRef);
                                } else {
                                        log.severe("Navigation has duplicate 
node ids");
                                }
        
                                // Check, if each child has its own children
                                Iterator itr = list.iterator();
                                for (int i = 0; i < n; i++) {
                                        Integer child = (Integer)itr.next();
                                        KaMenu kaChildMenu = (KaMenu) 
nodeInfo.get(child);
                                        buildTreeData(kaChildMenu);
                                }
        
                                // Add the node to its parent
                                // if(parent != 1){
                                TreeNode treeNode = (TreeNode) 
nodeLeafRef.get(kaMenu.getParent());
                                if (treeNode != null) {
                                        nodeRef.getChildren().add(nodeRef);
                                        nodeLeafRef.remove(kaMenu.getParent());
                                        nodeLeafRef.put(kaMenu.getParent(), 
treeNode);
                                }
                                treeNode = null;
                                nodeRef = null;
                                // }
                        }
                } else {
                        TreeNodeBase leaf = new TreeNodeBase("document", 
kaMenu.getName(),
                                        kaMenu.getLink(), true);

                        // Add the leaf to its node
                        TreeNode treeNode = null;
                        TreeNodeBase treeNodeBase = null;

                        // If the parent is root node(1), then add the 
TreeNodeBase
                        if (kaMenu.getParent().intValue() != 1) {
                                treeNode = (TreeNode) 
nodeLeafRef.get(kaMenu.getParent());
                                if (treeNode != null) {
                                        treeNode.getChildren().add(leaf);
                                        nodeLeafRef.remove(kaMenu.getParent());
                                        nodeLeafRef.put(kaMenu.getParent(), 
treeNode);
                                        treeNode = null;
                                }
                        } else {
                                treeNodeBase = (TreeNodeBase) 
nodeLeafRef.get(kaMenu.getParent());
                                if (treeNodeBase != null) {
                                        treeNodeBase.getChildren().add(leaf);
                                        nodeLeafRef.remove(kaMenu.getParent());
                                        nodeLeafRef.put(kaMenu.getParent(), 
treeNodeBase);
                                        treeNodeBase = null;
                                }
                        }

                        /*
                         * // Add leaf reference to node if
                         * (!nodeLeafRef.containsKey(parent)) 
nodeLeafRef.put(parent, leaf);
                         * else { log.severe("Navigation has duplicate node 
ids"); }
                         */
                        leaf = null;
                }
        }
--
View this message in context: 
http://www.nabble.com/TreeModelBase-HtmlTree-%3A-Java-heap-space-t1461744.html#a3991308
Sent from the MyFaces - Users forum at Nabble.com.

Reply via email to