+++ /dev/null
-package fr.orsay.lri.varna.models.treealign;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-
-
-
-/**
- * This class translates a Tree to a graphviz file.
- * @author Raphael Champeimont
- *
- * @param <? extends GraphvizDrawableNodeValue> the type of values in the tree
- */
-public class TreeGraphviz {
-
- /**
- * Generates a PostScript file using graphviz.
- * The dot command must be available.
- */
- public static void treeToGraphvizPostscript(Tree<? extends GraphvizDrawableNodeValue> tree, String filename, String title) throws IOException {
- // generate graphviz source
- String graphvizSource = treeToGraphviz(tree, title);
-
- // open output file
- BufferedWriter fbw;
- fbw = new BufferedWriter(new FileWriter(filename));
-
- // execute graphviz
- Process proc = Runtime.getRuntime().exec("dot -Tps");
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
- BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
- BufferedReader bre = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
- bw.write(graphvizSource);
- bw.close();
- {
- String line = null;
- while ((line = br.readLine()) != null) {
- fbw.write(line + "\n");
- }
- }
- {
- String line = null;
- while ((line = bre.readLine()) != null) {
- System.err.println(line);
- }
- }
-
- // wait for graphviz to end
- try {
- proc.waitFor();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- // close file
- fbw.close();
- }
-
- /**
- * Like treeToGraphvizPostscript(Tree,String,String) but with the title
- * equal to the filename.
- */
- public static void treeToGraphvizPostscript(Tree<? extends GraphvizDrawableNodeValue> tree, String filename) throws IOException {
- treeToGraphvizPostscript(tree, filename, filename);
- }
-
- /**
- * Creates a graphviz source file from a Tree.
- * @param title the title of the graph
- */
- public static void treeToGraphvizFile(Tree<? extends GraphvizDrawableNodeValue> tree, String filename, String title) throws IOException {
- BufferedWriter bw;
- bw = new BufferedWriter(new FileWriter(filename));
- bw.write(treeToGraphviz(tree, filename));
- bw.close();
- }
-
- /**
- * Like treeToGraphvizFile(Tree,String,String) but with the title
- * equal to the filename.
- */
- public static void treeToGraphvizFile(Tree<? extends GraphvizDrawableNodeValue> tree, String filename) throws IOException {
- treeToGraphvizFile(tree, filename, filename);
- }
-
- /**
- * Creates a graphviz source from a Tree.
- * @param title the title of the graph
- */
- public static String treeToGraphviz(Tree<? extends GraphvizDrawableNodeValue> tree, String title) {
- return "digraph \"" + title + "\" {\n" + subtreeToGraphviz(tree) + "}\n";
- }
-
- private static String subtreeToGraphviz(Tree<? extends GraphvizDrawableNodeValue> tree) {
- String s = "";
- String myId = tree.toGraphvizNodeId();
-
- s +=
- "\""
- + myId
- + "\" [label=\""
- + ((tree.getValue() != null) ? tree.getValue().toGraphvizNodeName() : "null")
- + "\"]\n";
- for (Tree<? extends GraphvizDrawableNodeValue> child: tree.getChildren()) {
- s += "\"" + myId + "\" -> \"" + child.toGraphvizNodeId() + "\"\n";
- s += subtreeToGraphviz(child);
- }
-
- return s;
- }
-}