X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finspector%2Fjava%2Fstructure%2FClassGraph.java;h=51fa04a955164e4ff1f3cbf3349c7b2c2288f436;hb=93d3fd571ed634437334b78bec8fd725f4c90701;hp=1488b1c49427c2fc249de03a8d352e2dd818da75;hpb=c680c10ad9057106e23b149246abdd84b41775ee;p=javainspect.git diff --git a/src/main/java/eu/svjatoslav/inspector/java/structure/ClassGraph.java b/src/main/java/eu/svjatoslav/inspector/java/structure/ClassGraph.java index 1488b1c..51fa04a 100755 --- a/src/main/java/eu/svjatoslav/inspector/java/structure/ClassGraph.java +++ b/src/main/java/eu/svjatoslav/inspector/java/structure/ClassGraph.java @@ -1,6 +1,6 @@ /* * JavaInspect - Utility to visualize java software - * Copyright (C) 2013-2015, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * Copyright (C) 2013-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu * * This program is free software; you can redistribute it and/or * modify it under the terms of version 3 of the GNU Lesser General Public License @@ -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 { @@ -31,15 +32,17 @@ public class ClassGraph { */ private final Map fullyQualifiedNameToClassMap = new HashMap(); - private final List blacklistClassPatterns = new ArrayList(); + private final List blacklistClassGlobs = new ArrayList(); - private final List whitelistClassPatterns = new ArrayList(); + private final List whitelistClassGlobs = new ArrayList<>(); - private String targetDirectory = CommonPathResolver.getDesktopDirectory() - .getAbsolutePath() + "/"; + private String targetDirectoryPath = CommonPathResolver.getDesktopDirectory() + .getAbsolutePath() + separator; private boolean keepDotFile; + TargetImageType targetImageType = TargetImageType.SVG; + public ClassGraph() { } @@ -80,8 +83,12 @@ public class ClassGraph { } } - public void blacklistClassPattern(final String pattern) { - blacklistClassPatterns.add(pattern); + public void blacklistClassGlob(final String glob) { + blacklistClassGlobs.add(glob); + } + + public void setTargetImageType(TargetImageType targetImageType) { + this.targetImageType = targetImageType; } /** @@ -92,10 +99,8 @@ public class ClassGraph { public void generateGraph(final String resultFileName) { - final String dotFilePath = targetDirectory + resultFileName + ".dot"; - final String imageFilePath = targetDirectory + resultFileName + ".png"; - - 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", "-Tpng", 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); } } @@ -176,12 +183,12 @@ public class ClassGraph { } protected boolean isClassShown(final String className) { - for (final String pattern : blacklistClassPatterns) + for (final String pattern : blacklistClassGlobs) if (WildCardMatcher.match(className, pattern)) return false; - if (!whitelistClassPatterns.isEmpty()) { - for (final String pattern : whitelistClassPatterns) + if (!whitelistClassGlobs.isEmpty()) { + for (final String pattern : whitelistClassGlobs) if (WildCardMatcher.match(className, pattern)) return true; return false; @@ -196,18 +203,17 @@ 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; } - public ClassGraph whitelistClassPattern(final String pattern) { - whitelistClassPatterns.add(pattern); - + public ClassGraph whitelistClassGlob(final String glob) { + whitelistClassGlobs.add(glob); return this; }