/** * Copyright CSIRO Australian e-Health Research Centre (http://aehrc.com). * All rights reserved. Use is subject to license terms and conditions. */ package au.csiro.snorocket.core.util; import java.util.Map; import au.csiro.ontology.Node; /** * @author Alejandro Metke * */ public class Utils { public static void printTaxonomy(Node top, Node bottom, Map<String, String> idNameMap) { if(top.equals(bottom)) return; System.out.println(nodeToString(top, idNameMap)); for(Node child : top.getChildren()) { printTaxonomyLevel(child, bottom, 1, idNameMap); } } private static void printTaxonomyLevel(Node root, Node bottom, int level, Map<String, String> idNameMap) { if(root.equals(bottom)) return; System.out.println(spaces(level)+nodeToString(root, idNameMap)); for(Node child : root.getChildren()) { printTaxonomyLevel(child, bottom, level+1, idNameMap); } } private static String nodeToString(Node node, Map<String, String> idNameMap) { StringBuilder sb = new StringBuilder(); sb.append("{"); for(String concept : node.getEquivalentConcepts()) { sb.append(" "); String desc = idNameMap.get(concept); if(desc == null) desc = "NA"; sb.append(desc); } sb.append(" }"); return sb.toString(); } public static void printTaxonomy(Node top, Node bottom) { for(Node child : top.getChildren()) { printTaxonomyLevel(child, bottom, 0); } } private static void printTaxonomyLevel(Node root, Node bottom, int level) { if(root.equals(bottom)) return; System.out.println(spaces(level)+root.toString()); for(Node child : root.getChildren()) { printTaxonomyLevel(child, bottom, level+1); } } private static String spaces(int num) { StringBuilder sb = new StringBuilder(); for(int i = 0; i < num; i++) { sb.append(" "); } return sb.toString(); } }