package org.cloudgraph.web.model.administration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.cloudgraph.web.model.taxonomy.CategoryLabelFormat; import org.cloudgraph.web.model.taxonomy.DynamicTaxonomyTreeBean; import org.cloudgraph.web.model.tree.TreeNodeTypeMap; import org.cloudgraph.web.sdo.categorization.Category; import org.cloudgraph.web.sdo.categorization.Taxonomy; public class TaxonomyTreeBean extends DynamicTaxonomyTreeBean { private static Log log = LogFactory.getLog(TaxonomyTreeBean.class); public TaxonomyTreeBean() { // this initialization hack makes RichFaces tree find it's tree state and // be happy and not blow up even though the tree is not yet displayed } public TaxonomyTreeBean(Taxonomy model) { try { typeMap = new TaxonomyModelTreeNodeTypeMap(); this.setLabelFormat(new CategoryLabelFormat() { public String getLabel(Category category) { String label = "(" + category.getId() + ") " + category.getName(); return label; } }); initTree(model); } catch (Throwable t) { log.error(t.getMessage(), t); } } class TaxonomyModelTreeNodeTypeMap implements TreeNodeTypeMap { /** * Returns a business logic specific node type given the taxonomy level. We skip * a level where a link node within the generic taxonomy structure is expected. */ public String getTreeNodeType(int level) { switch (level) { default: return TaxonomyTreeNodeType.category.name(); } } } }