import java.util.Map;
import static eu.svjatoslav.inspector.java.methods.JavaFile.UTF_8;
+import static java.io.File.separator;
public class ClassGraph {
private final List<String> whitelistClassPatterns = new ArrayList<String>();
- private String targetDirectory = CommonPathResolver.getDesktopDirectory()
- .getAbsolutePath() + "/";
+ private String targetDirectoryPath = CommonPathResolver.getDesktopDirectory()
+ .getAbsolutePath() + separator;
private boolean keepDotFile;
+ TargetImageType targetImageType = TargetImageType.SVG;
+
public ClassGraph() {
}
blacklistClassPatterns.add(pattern);
}
+ public void setTargetImageType(TargetImageType targetImageType) {
+ this.targetImageType = targetImageType;
+ }
+
/**
* @param resultFileName file name for the generated graph. File extension will be
* added automatically. Existing file with the same name will be
public void generateGraph(final String resultFileName) {
- final String dotFilePath = targetDirectory + resultFileName + ".dot";
- final String imageFilePath = targetDirectory + resultFileName + ".svg";
-
- System.out.println("Dot file path:" + dotFilePath);
+ final String dotFilePath = targetDirectoryPath + resultFileName + ".dot";
+ final String imageFilePath = targetDirectoryPath + resultFileName + "." + targetImageType.fileExtension;
try {
// write DOT file to disk
// execute GraphViz to visualize graph
try {
Runtime.getRuntime()
- .exec(new String[]{"dot", "-Tsvg", dotFilePath, "-o",
+ .exec(new String[]{"dot", "-T" + targetImageType.fileExtension, dotFilePath, "-o",
imageFilePath}).waitFor();
} catch (final InterruptedException ignored) {
}
if (!keepDotFile)
// delete dot file
- if (!new File(dotFilePath).delete()) throw new RuntimeException("Cannot delete file: " + dotFilePath);
+ if (!new File(dotFilePath).delete())
+ throw new RuntimeException("Cannot delete file: " + dotFilePath);
+
} catch (final IOException e) {
- System.err.println(e);
+ throw new RuntimeException("Unable to generate graph: " + e.getMessage(), e);
}
}
return this;
}
- public ClassGraph setTargetDirectory(String directoryPath) {
- if (!directoryPath.endsWith("/"))
- directoryPath += "/";
+ public ClassGraph setTargetDirectoryPath(String directoryPath) {
+ if (!directoryPath.endsWith(separator))
+ directoryPath += separator;
- targetDirectory = directoryPath;
+ targetDirectoryPath = directoryPath;
return this;
}