possibility to specify custom target directory
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / structure / ClassGraph.java
old mode 100644 (file)
new mode 100755 (executable)
index 036d583..bf34841
@@ -1,10 +1,10 @@
 /*
  * JavaInspect - Utility to visualize java software
- * Copyright (C) 2013, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- * 
+ * Copyright (C) 2013-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ *
  * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public License
- * as published by the Free Software Foundation.
+ * modify it under the terms of version 3 of the GNU Lesser General Public License
+ * or later as published by the Free Software Foundation.
  */
 
 package eu.svjatoslav.inspector.java.structure;
@@ -51,7 +51,7 @@ public class ClassGraph {
         *            objects that shall be added to graph
         */
        public ClassGraph(final Object... objects) {
-               for (Object object : objects)
+               for (final Object object : objects)
                        addClass(object.getClass());
        }
 
@@ -112,7 +112,7 @@ public class ClassGraph {
         *            file name for the generated graph. File extension will be
         *            added automatically. Existing file with the same name will be
         *            overwritten.
-        * 
+        *
         * @param keepDotFile
         *            if set to <code>true</code> then intermediary GraphViz DOT
         *            file will be kept.
@@ -124,8 +124,31 @@ public class ClassGraph {
                final String desktopPath = CommonPathResolver.getDesktopDirectory()
                                .getAbsolutePath() + "/";
 
-               final String dotFilePath = desktopPath + resultFileName + ".dot";
-               final String imageFilePath = desktopPath + resultFileName + ".png";
+               generateGraph(desktopPath, resultFileName, keepDotFile);
+       }
+
+       /**
+        * @param targetDirectory
+        *            target directory name
+        *
+        * @param resultFileName
+        *            file name for the generated graph. File extension will be
+        *            added automatically. Existing file with the same name will be
+        *            overwritten.
+        *
+        * @param keepDotFile
+        *            if set to <code>true</code> then intermediary GraphViz DOT
+        *            file will be kept.
+        */
+
+       public void generateGraph(String targetDirectory,
+                       final String resultFileName, final boolean keepDotFile) {
+
+               if (!targetDirectory.endsWith("/"))
+                       targetDirectory += "/";
+
+               final String dotFilePath = targetDirectory + resultFileName + ".dot";
+               final String imageFilePath = targetDirectory + resultFileName + ".png";
 
                System.out.println("Dot file path:" + dotFilePath);
 
@@ -152,6 +175,7 @@ public class ClassGraph {
                } catch (final IOException e) {
                        System.err.println(e);
                }
+
        }
 
        private String getDot() {
@@ -170,6 +194,10 @@ public class ClassGraph {
                return resultStr;
        }
 
+       public Filter getFilter() {
+               return filter;
+       }
+
        /**
         * Hide orphaned class that have no references
         */
@@ -180,11 +208,7 @@ public class ClassGraph {
 
        }
 
-       public Filter getFilter() {
-               return filter;
-       }
-
-       public void setFilter(Filter filter) {
+       public void setFilter(final Filter filter) {
                this.filter = filter;
        }