public DefaultMutableTreeNode buildTree(String ontName, String rootTerm) throws Exception { DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode(); MessageLog.printInfo("OntologyTree.initTree(): caching tree for " + ontName); SearchCriteria sc = CaBIOUtils.newSearchCriteria(ontName); sc.putCriterion("name", Criterion.EQUAL_TO, rootTerm); Object[] results = sc.search().getResultSet(); if (results.length == 1) { CMAPOntology root = (CMAPOntology) results[0]; CMAPOntologyRelationship[] rels = (CMAPOntologyRelationship[]) root.getChildRelationships(); CMAPOntology rootObj = rels[0].getChild(); String id = CaBIOUtils.getProperty(rootObj, "id").toString(); String name = rootTerm; treeRoot.setUserObject( new WebNode(id, name, "javascript:" + _eventHandler + "('" + id + "', '" + name + "')")); buildTree(treeRoot, rootObj); } else if (results.length > 1) { throw new Exception("Found more that one root for root term: " + rootTerm); } else { throw new Exception("Found not root for root term: " + rootTerm); } return treeRoot; }