Reorganized project.
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / structure / ClassGraph.java
index c6b6cbf..a4d9015 100755 (executable)
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 
 import static eu.svjatoslav.inspector.java.methods.JavaFile.UTF_8;
+import static java.io.File.separator;
 
 public class ClassGraph {
 
@@ -35,11 +36,13 @@ 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() {
     }
 
@@ -84,6 +87,10 @@ public class 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
@@ -92,10 +99,8 @@ public class ClassGraph {
 
     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
@@ -106,16 +111,18 @@ public class ClassGraph {
             // 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);
         }
 
     }
@@ -196,11 +203,11 @@ public class ClassGraph {
         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;
     }