package ilarkesto.tools.graphviz;
import ilarkesto.base.Proc;
import ilarkesto.base.Sys;
import ilarkesto.core.logging.Log;
import ilarkesto.io.IO;
import java.io.File;
import java.io.IOException;
public class Graphviz {
private static final Log LOG = Log.get(Graphviz.class);
public static final String OUTPUT_TYPE_PS = "ps";
public static final String OUTPUT_TYPE_SVG = "svg";
public static final String OUTPUT_TYPE_GIF = "gif";
public static final String OUTPUT_TYPE_PNG = "png";
public static final String OUTPUT_TYPE_IMAP = "imap";
public static File createDotPng(String sourceCode) {
return createDot(sourceCode, OUTPUT_TYPE_PNG);
}
public static File createDot(String sourceCode, String outputType) {
File sourceFile;
try {
sourceFile = File.createTempFile("ilarkesto-graph_", ".dot");
} catch (IOException ex) {
throw new RuntimeException(ex);
}
IO.writeFile(sourceFile, sourceCode, Sys.getFileEncoding());
return createDot(sourceFile, outputType);
}
public static File createDot(File sourceFile, String outputType) {
File outputFile;
try {
outputFile = File.createTempFile("ilarkesto-graph_", "." + outputType);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
Proc proc = new Proc("dot");
proc.addParameter("-T" + outputType);
proc.addParameter(sourceFile.getAbsolutePath());
proc.addParameter("-o");
proc.addParameter(outputFile.getAbsolutePath());
try {
String output = proc.execute();
LOG.debug("Output:", output);
} finally {
sourceFile.delete();
}
return outputFile;
}
}