1 24 package org.infoglue.cms.treeservice.ss; 25 26 import java.util.ArrayList ; 27 import java.util.Collection ; 28 import java.util.Collections ; 29 import java.util.Iterator ; 30 import java.util.List ; 31 32 import org.apache.log4j.Logger; 33 import org.infoglue.cms.controllers.kernel.impl.simple.CategoryController; 34 import org.infoglue.cms.entities.management.CategoryVO; 35 import org.infoglue.cms.exception.SystemException; 36 37 import com.frovi.ss.Tree.BaseNode; 38 import com.frovi.ss.Tree.BaseNodeSupplier; 39 40 43 public class CategoryNodeSupplier extends BaseNodeSupplier 44 { 45 private final static Logger logger = Logger.getLogger(CategoryNodeSupplier.class.getName()); 46 47 public static final Integer ROOT = new Integer (-1); 48 49 private CategoryController controller = CategoryController.getController(); 50 51 private ArrayList cacheLeafs; 52 53 public CategoryNodeSupplier() 54 { 55 BaseNode rootNode = new ContentNodeImpl(); 56 rootNode.setChildren(true); 57 rootNode.setId(ROOT); rootNode.setTitle("Categories"); 59 rootNode.setContainer(true); 60 setRootNode(rootNode); 61 } 62 63 public boolean hasChildren() 64 { 65 return true; 66 } 67 68 public Collection getChildContainerNodes(Integer parentNode) 69 { 70 ArrayList ret = new ArrayList (); 71 cacheLeafs = new ArrayList (); 72 73 List children = null; 74 try 75 { 76 children = (ROOT.equals(parentNode)) 77 ? controller.findRootCategories() 78 : controller.findActiveByParent(parentNode); 79 } 80 catch (SystemException e) 81 { 82 logger.warn("Error getting Category Children", e); 83 } 84 85 for (Iterator i = children.iterator(); i.hasNext();) 86 { 87 CategoryVO vo = (CategoryVO) i.next(); 88 89 List grandkids = getGrandKids(vo.getId()); 90 91 BaseNode node = new CategoryNodeImpl(); 92 node.setId(vo.getId()); 93 node.setTitle(vo.getName()); 94 node.setContainer(true); 95 node.setChildren(!grandkids.isEmpty()); 96 ret.add(node); 97 } 98 99 return ret; 100 } 101 102 private List getGrandKids(Integer childId) 103 { 104 try 105 { 106 return controller.findActiveByParent(childId); 107 } 108 catch (SystemException e) 109 { 110 return Collections.EMPTY_LIST; 111 } 112 } 113 114 117 public Collection getChildLeafNodes(Integer parentNode) 118 { 119 return Collections.EMPTY_LIST; 120 } 121 122 } 123 | Popular Tags |