/** * Write a graph to a output stream. * * @param lattice a concept lattice to write * @param file a file * @throws IOException When an IOException occurs */ public void write(ConceptLattice lattice, BufferedWriter file) throws IOException { file.write("digraph G {\n"); file.write("Graph [rankdir=BT]\n"); StringBuffer nodes = new StringBuffer(); StringBuffer edges = new StringBuffer(); for (Node node : lattice.getNodes()) { Concept concept = (Concept) node; String dot = concept.getIdentifier() + " [label=\" "; String tmp = ""; if (concept.hasSetA()) { tmp += concept.getSetA(); } if (concept.hasSetA() && concept.hasSetB()) { tmp += "\\n"; } if (concept.hasSetB()) { tmp += concept.getSetB(); } StringTokenizer st = new StringTokenizer(tmp, "\""); while (st.hasMoreTokens()) { dot += st.nextToken(); } dot += "\"]"; nodes.append(dot).append("\n"); } for (Edge edge : lattice.getEdges()) { String dot = edge.getFrom().getIdentifier() + "->" + edge.getTo().getIdentifier(); if (edge.hasContent()) { dot = dot + " [" + "label=\""; StringTokenizer tokenizer = new StringTokenizer(edge.getContent().toString(), "\""); while (tokenizer.hasMoreTokens()) { dot += tokenizer.nextToken(); } dot = dot + "\"]"; } edges.append(dot).append("\n"); } file.write(nodes.toString()); file.write(edges.toString()); file.write("}"); }