From da28a7e4ff80c5f443111ce24e366087fac305aa Mon Sep 17 00:00:00 2001 From: Diomidis Spinellis Date: Mon, 24 May 2010 05:46:57 +0000 Subject: [PATCH] - New -dotexecutable option. - UmlGraphDoc supports @opt options. (Contributed by Laird Nelson.) --- src/org/umlgraph/doclet/Options.java | 7 ++++++- src/org/umlgraph/doclet/UmlGraph.java | 2 +- src/org/umlgraph/doclet/UmlGraphDoc.java | 15 ++++++++------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/org/umlgraph/doclet/Options.java b/src/org/umlgraph/doclet/Options.java index 72bdd10..0db0b54 100644 --- a/src/org/umlgraph/doclet/Options.java +++ b/src/org/umlgraph/doclet/Options.java @@ -2,7 +2,7 @@ * Create a graphviz graph based on the classes in the specified java * source files. * - * (C) Copyright 2002-2005 Diomidis Spinellis + * (C) Copyright 2002-2010 Diomidis Spinellis * * Permission to use, copy, and distribute this software and its * documentation for any purpose and without fee is hereby granted, @@ -134,6 +134,7 @@ public class Options implements Cloneable, OptionProvider { // would have been hidden by the hide pattern "java.*" // TODO: consider making this standard behaviour boolean strictMatching; + String dotExecutable; Options() { showQualified = false; @@ -186,6 +187,7 @@ public class Options implements Cloneable, OptionProvider { relativeLinksForSourcePackages = false; nodeSep = 0.25; rankSep = 0.5; + dotExecutable = "dot"; } public Object clone() { @@ -271,6 +273,7 @@ public class Options implements Cloneable, OptionProvider { option.equals("-collpackages") || option.equals("-nodesep") || option.equals("-ranksep") || + option.equals("-dotexecutable") || option.equals("-link")) return 2; else if(option.equals("-contextPattern")) @@ -533,6 +536,8 @@ public class Options implements Cloneable, OptionProvider { } } else if (opt[0].equals("-!ranksep")) { rankSep = 0.5; + } else if (opt[0].equals("-dotexecutable")) { + dotExecutable = opt[1]; } else ; // Do nothing, javadoc will handle the option or complain, if // needed. diff --git a/src/org/umlgraph/doclet/UmlGraph.java b/src/org/umlgraph/doclet/UmlGraph.java index 16d7595..0c1fdbc 100644 --- a/src/org/umlgraph/doclet/UmlGraph.java +++ b/src/org/umlgraph/doclet/UmlGraph.java @@ -2,7 +2,7 @@ * Create a graphviz graph based on the classes in the specified java * source files. * - * (C) Copyright 2002-2005 Diomidis Spinellis + * (C) Copyright 2002-2010 Diomidis Spinellis * * Permission to use, copy, and distribute this software and its * documentation for any purpose and without fee is hereby granted, diff --git a/src/org/umlgraph/doclet/UmlGraphDoc.java b/src/org/umlgraph/doclet/UmlGraphDoc.java index 7446e71..efc67cf 100644 --- a/src/org/umlgraph/doclet/UmlGraphDoc.java +++ b/src/org/umlgraph/doclet/UmlGraphDoc.java @@ -52,7 +52,7 @@ public class UmlGraphDoc { try { String outputFolder = findOutputPath(root.options()); - Options opt = new Options(); + Options opt = UmlGraph.buildOptions(root); opt.setOptions(root.options()); // in javadoc enumerations are always printed opt.showEnumerations = true; @@ -94,7 +94,7 @@ public class UmlGraphDoc { packages.add(packageDoc.name()); OptionProvider view = new PackageView(outputFolder, packageDoc, root, opt); UmlGraph.buildGraph(root, view, packageDoc); - runGraphviz(outputFolder, packageDoc.name(), packageDoc.name(), root); + runGraphviz(opt.dotExecutable, outputFolder, packageDoc.name(), packageDoc.name(), root); alterHtmlDocs(opt, outputFolder, packageDoc.name(), packageDoc.name(), "package-summary.html", Pattern.compile(""), root); } @@ -113,7 +113,7 @@ public class UmlGraphDoc { else view.setContextCenter(classDoc); UmlGraph.buildGraph(root, view, classDoc); - runGraphviz(outputFolder, classDoc.containingPackage().name(), classDoc.name(), root); + runGraphviz(opt.dotExecutable, outputFolder, classDoc.containingPackage().name(), classDoc.name(), root); alterHtmlDocs(opt, outputFolder, classDoc.containingPackage().name(), classDoc.name(), classDoc.name() + ".html", Pattern.compile("(Class|Interface|Enum) " + classDoc.name() + ".*") , root); } @@ -121,17 +121,18 @@ public class UmlGraphDoc { /** * Runs Graphviz dot building both a diagram (in png format) and a client side map for it. - *

- * At the moment, it assumes dot.exe is in the classpahth */ - private static void runGraphviz(String outputFolder, String packageName, String name, RootDoc root) { + private static void runGraphviz(String dotExecutable, String outputFolder, String packageName, String name, RootDoc root) { + if (dotExecutable == null) { + dotExecutable = "dot"; + } File dotFile = new File(outputFolder, packageName.replace(".", "/") + "/" + name + ".dot"); File pngFile = new File(outputFolder, packageName.replace(".", "/") + "/" + name + ".png"); File mapFile = new File(outputFolder, packageName.replace(".", "/") + "/" + name + ".map"); try { Process p = Runtime.getRuntime().exec(new String [] { - "dot", + dotExecutable, "-Tcmapx", "-o", mapFile.getAbsolutePath(),