public void write(Map<String, Binding<?>> bindings, GraphVizWriter writer) throws IOException { Map<Binding<?>, String> namesIndex = buildNamesIndex(bindings); writer.beginGraph("concentrate", "true"); for (Map.Entry<Binding<?>, String> entry : namesIndex.entrySet()) { Binding<?> sourceBinding = entry.getKey(); String sourceName = entry.getValue(); Set<Binding<?>> dependencies = new TreeSet<Binding<?>>(new BindingComparator()); sourceBinding.getDependencies(dependencies, dependencies); for (Binding<?> targetBinding : dependencies) { String targetName = namesIndex.get(targetBinding); if (targetName == null) { targetName = "Unbound:" + targetBinding.provideKey; } writer.edge(sourceName, targetName); } } writer.endGraph(); }
@Override public int compare(Binding<?> left, Binding<?> right) { return getStringForBinding(left).compareTo(getStringForBinding(right)); }