package ch.zhaw.ads; import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; public class RankingTreeServer implements CommandExecutor { public Tree createTree(String rankingText) { Tree tree = new SortedBinaryTree<>(); String[] competitorsString = rankingText.split("\n"); for (String competitorString : competitorsString){ String[] values = competitorString.split(";"); tree.add(new Competitor(0, values[0], values[1])); } return tree; } public String createSortedText(Tree competitorTree) { AtomicInteger rank = new AtomicInteger(1); StringBuilder sb = new StringBuilder(); competitorTree.traversal().inorder(new Visitor() { @Override public void visit(Competitor obj) { sb.append(rank.getAndAdd(1) + " " + obj.getName() + " " + obj.getTime() + "\n"); } }); return sb.toString(); } public String execute(String rankingList) { Tree competitorTree = createTree(rankingList); return "Rangliste (Tree)\n" + createSortedText(competitorTree); } public static void main(String[] args) { String rangliste = "Mueller Stefan;02:31:14\n" + "Marti Adrian;02:30:09\n" + "Kiptum Daniel;02:11:31\n" + "Ancay Tarcis;02:20:02\n" + "Kreibuhl Christian;02:21:47\n" + "Ott Michael;02:33:48\n" + "Menzi Christoph;02:27:26\n" + "Oliver Ruben;02:32:12\n" + "Elmer Beat;02:33:53\n" + "Kuehni Martin;02:33:36\n"; RankingTreeServer server = new RankingTreeServer(); System.out.println(server.execute(rangliste)); } }