mirror of https://github.com/dspinellis/UMLGraph
commit
26c9f9d1e5
2
TODO
2
TODO
|
|
@ -1,5 +1,3 @@
|
||||||
When UMLGraph 2.29 comes out use <i></i> for italic fonts?
|
|
||||||
|
|
||||||
http://stackoverflow.com/questions/8609546/umlgraph-not-automatic-integrated-in-javadoc
|
http://stackoverflow.com/questions/8609546/umlgraph-not-automatic-integrated-in-javadoc
|
||||||
|
|
||||||
Support for all UML diagrams: state, use-case, etc.
|
Support for all UML diagrams: state, use-case, etc.
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ this works well with <code>-qualify -postfixpackage</code> (and <code>-!qualifyG
|
||||||
To get the old <code>-qualify</code> behavior, you need to add <code>-qualifyGenerics</code>,
|
To get the old <code>-qualify</code> behavior, you need to add <code>-qualifyGenerics</code>,
|
||||||
the default is off, and it will not inherit from <code>-qualify</code>.</li>
|
the default is off, and it will not inherit from <code>-qualify</code>.</li>
|
||||||
<li>Better handling of complex names with generics and inner classes such as <code>pkg.Outer<T>.Inner</code>.</li>
|
<li>Better handling of complex names with generics and inner classes such as <code>pkg.Outer<T>.Inner</code>.</li>
|
||||||
|
<li>Use <i> tags for italic, because the old font naming approach does not work with SVG anymore.
|
||||||
|
Replace <code>-nodefontabstractname</code> and <code>-nodefontclassabstractname</code>
|
||||||
|
with a simple flag <code>-nodefontabstractitalic</code> instead.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -20,7 +20,6 @@
|
||||||
package org.umlgraph.doclet;
|
package org.umlgraph.doclet;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -32,7 +31,7 @@ import java.util.Map;
|
||||||
class ClassInfo {
|
class ClassInfo {
|
||||||
private static int classNumber;
|
private static int classNumber;
|
||||||
/** Alias name for the class */
|
/** Alias name for the class */
|
||||||
String name;
|
final String name;
|
||||||
/** True if the class class node has been printed */
|
/** True if the class class node has been printed */
|
||||||
boolean nodePrinted;
|
boolean nodePrinted;
|
||||||
/** True if the class class node is hidden */
|
/** True if the class class node is hidden */
|
||||||
|
|
@ -44,10 +43,9 @@ class ClassInfo {
|
||||||
*/
|
*/
|
||||||
Map<String, RelationPattern> relatedClasses = new HashMap<String, RelationPattern>();
|
Map<String, RelationPattern> relatedClasses = new HashMap<String, RelationPattern>();
|
||||||
|
|
||||||
ClassInfo(boolean p, boolean h) {
|
ClassInfo(boolean h) {
|
||||||
nodePrinted = p;
|
|
||||||
hidden = h;
|
hidden = h;
|
||||||
name = "c" + (new Integer(classNumber)).toString();
|
name = "c" + classNumber;
|
||||||
classNumber++;
|
classNumber++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,9 @@ public class ContextMatcher implements ClassMatcher {
|
||||||
this.root = root;
|
this.root = root;
|
||||||
this.keepParentHide = keepParentHide;
|
this.keepParentHide = keepParentHide;
|
||||||
opt = (Options) options.clone();
|
opt = (Options) options.clone();
|
||||||
opt.setOption(new String[] { "-!hide" });
|
opt.setOption(new String[] { "!hide" });
|
||||||
opt.setOption(new String[] { "-!attributes" });
|
opt.setOption(new String[] { "!attributes" });
|
||||||
opt.setOption(new String[] { "-!operations" });
|
opt.setOption(new String[] { "!operations" });
|
||||||
this.cg = new ClassGraphHack(root, opt);
|
this.cg = new ClassGraphHack(root, opt);
|
||||||
|
|
||||||
setContextCenter(pattern);
|
setContextCenter(pattern);
|
||||||
|
|
@ -97,26 +97,23 @@ public class ContextMatcher implements ClassMatcher {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the specified class to the internal class graph along with its
|
* Adds the specified class to the internal class graph along with its
|
||||||
* relations and depencies, eventually inferring them, according to the
|
* relations and dependencies, eventually inferring them, according to the
|
||||||
* Options specified for this matcher
|
* Options specified for this matcher
|
||||||
* @param cd
|
* @param cd
|
||||||
*/
|
*/
|
||||||
private void addToGraph(ClassDoc cd) {
|
private void addToGraph(ClassDoc cd) {
|
||||||
// avoid adding twice the same class, but don't rely on cg.getClassInfo
|
// avoid adding twice the same class, but don't rely on cg.getClassInfo
|
||||||
// since there
|
// since there are other ways to add a classInfor than printing the class
|
||||||
// are other ways to add a classInfor than printing the class
|
|
||||||
if (visited.contains(cd.toString()))
|
if (visited.contains(cd.toString()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
visited.add(cd.toString());
|
visited.add(cd.toString());
|
||||||
cg.printClass(cd, false);
|
cg.printClass(cd, false);
|
||||||
cg.printRelations(cd);
|
cg.printRelations(cd);
|
||||||
if (opt.inferRelationships) {
|
if (opt.inferRelationships)
|
||||||
cg.printInferredRelations(cd);
|
cg.printInferredRelations(cd);
|
||||||
}
|
if (opt.inferDependencies)
|
||||||
if (opt.inferDependencies) {
|
|
||||||
cg.printInferredDependencies(cd);
|
cg.printInferredDependencies(cd);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -144,10 +141,8 @@ public class ContextMatcher implements ClassMatcher {
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
for (ClassDoc mcd : matched) {
|
for (ClassDoc mcd : matched) {
|
||||||
String mcName = mcd.toString();
|
RelationPattern rp = cg.getClassInfo(mcd, true).getRelation(name);
|
||||||
ClassInfo ciMatched = cg.getClassInfo(mcName);
|
if (rp != null && opt.contextRelationPattern.matchesOne(rp))
|
||||||
RelationPattern rp = ciMatched.getRelation(name);
|
|
||||||
if (ciMatched != null && rp != null && opt.contextRelationPattern.matchesOne(rp))
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ public class ContextView implements OptionProvider {
|
||||||
private Options hideOptions;
|
private Options hideOptions;
|
||||||
private Options centerOptions;
|
private Options centerOptions;
|
||||||
private Options packageOptions;
|
private Options packageOptions;
|
||||||
private static final String[] HIDE_OPTIONS = new String[] { "-hide" };
|
private static final String[] HIDE_OPTIONS = new String[] { "hide" };
|
||||||
|
|
||||||
public ContextView(String outputFolder, ClassDoc cd, RootDoc root, Options parent)
|
public ContextView(String outputFolder, ClassDoc cd, RootDoc root, Options parent)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
@ -42,7 +42,7 @@ public class ContextView implements OptionProvider {
|
||||||
this.packageOptions.showQualified = false;
|
this.packageOptions.showQualified = false;
|
||||||
|
|
||||||
this.myGlobalOptions = parent.getGlobalOptions();
|
this.myGlobalOptions = parent.getGlobalOptions();
|
||||||
this.myGlobalOptions.setOption(new String[] { "-output", outputPath });
|
this.myGlobalOptions.setOption(new String[] { "output", outputPath });
|
||||||
this.myGlobalOptions.setOption(HIDE_OPTIONS);
|
this.myGlobalOptions.setOption(HIDE_OPTIONS);
|
||||||
|
|
||||||
this.hideOptions = parent.getGlobalOptions();
|
this.hideOptions = parent.getGlobalOptions();
|
||||||
|
|
@ -52,7 +52,7 @@ public class ContextView implements OptionProvider {
|
||||||
this.centerOptions.nodeFillColor = "lemonChiffon";
|
this.centerOptions.nodeFillColor = "lemonChiffon";
|
||||||
this.centerOptions.showQualified = false;
|
this.centerOptions.showQualified = false;
|
||||||
|
|
||||||
this.matcher = new ContextMatcher(root, Pattern.compile(cd.qualifiedName()),
|
this.matcher = new ContextMatcher(root, Pattern.compile(Pattern.quote(cd.toString())),
|
||||||
myGlobalOptions, true);
|
myGlobalOptions, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -61,8 +61,8 @@ public class ContextView implements OptionProvider {
|
||||||
this.cd = contextCenter;
|
this.cd = contextCenter;
|
||||||
String outputPath = cd.containingPackage().name().replace('.', '/') + "/" + cd.name()
|
String outputPath = cd.containingPackage().name().replace('.', '/') + "/" + cd.name()
|
||||||
+ ".dot";
|
+ ".dot";
|
||||||
this.myGlobalOptions.setOption(new String[] { "-output", outputPath });
|
this.myGlobalOptions.setOption(new String[] { "output", outputPath });
|
||||||
matcher.setContextCenter(Pattern.compile(cd.toString()));
|
matcher.setContextCenter(Pattern.compile(Pattern.quote(cd.toString())));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDisplayName() {
|
public String getDisplayName() {
|
||||||
|
|
@ -91,7 +91,7 @@ public class ContextView implements OptionProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Options getOptionsFor(String name) {
|
public Options getOptionsFor(String name) {
|
||||||
Options opt;
|
Options opt;
|
||||||
if (!matcher.matches(name))
|
if (!matcher.matches(name))
|
||||||
opt = hideOptions;
|
opt = hideOptions;
|
||||||
else if (name.equals(cd.name()))
|
else if (name.equals(cd.name()))
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
package org.umlgraph.doclet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to represent a font for graphviz.
|
||||||
|
* <p>
|
||||||
|
* This is a fairly complicated model, because it is rather an API into graphviz
|
||||||
|
* formatting strings rather than a standalone thing. <p Some fonts (edge, node,
|
||||||
|
* abstract) are set on the top level elements, whereas others (class name, tag,
|
||||||
|
* package) are inserted as {@code <font>} tags, and these can be omitted if not
|
||||||
|
* set. Inheritance of properties then happens in graphviz.
|
||||||
|
*
|
||||||
|
* @author Erich Schubert
|
||||||
|
*/
|
||||||
|
public enum Font {
|
||||||
|
/** Edge label font */
|
||||||
|
EDGE, //
|
||||||
|
/** Node basic */
|
||||||
|
NODE, //
|
||||||
|
/** Normal operation font */
|
||||||
|
NORMAL, //
|
||||||
|
/** Abstract operation font */
|
||||||
|
ABSTRACT, //
|
||||||
|
/** Class name. Inherits from null. */
|
||||||
|
CLASS, //
|
||||||
|
/** Class name of abstract classes (usually italic) */
|
||||||
|
CLASS_ABSTRACT, //
|
||||||
|
/** Package names Inherits from null. */
|
||||||
|
PACKAGE, //
|
||||||
|
/** Tags Inherits from null. */
|
||||||
|
TAG;
|
||||||
|
|
||||||
|
public static final String DEFAULT_FONT;
|
||||||
|
|
||||||
|
// Static initialization of further values.
|
||||||
|
static {
|
||||||
|
// use an appropriate font depending on the current operating system
|
||||||
|
if (System.getProperty("os.name").toLowerCase().contains("windows")) {
|
||||||
|
DEFAULT_FONT = "Arial";
|
||||||
|
} else {
|
||||||
|
DEFAULT_FONT = "Helvetica"; // TODO: can we use just "sans"?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wraps the text with the appropriate font according to the specified font type
|
||||||
|
*
|
||||||
|
* @param opt Options
|
||||||
|
* @param text Text to wrap
|
||||||
|
* @return Wrapped text
|
||||||
|
*/
|
||||||
|
public String wrap(Options opt, String text) {
|
||||||
|
if (text.isEmpty() || this == NORMAL)
|
||||||
|
return text;
|
||||||
|
String face = null;
|
||||||
|
double size = -1;
|
||||||
|
boolean italic = false;
|
||||||
|
switch (this) {
|
||||||
|
case EDGE:
|
||||||
|
case NODE:
|
||||||
|
// Not used with the wrap function.
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
case ABSTRACT:
|
||||||
|
italic = opt.nodeFontAbstractItalic;
|
||||||
|
case NORMAL:
|
||||||
|
break;
|
||||||
|
case CLASS_ABSTRACT:
|
||||||
|
italic = opt.nodeFontAbstractItalic;
|
||||||
|
case CLASS:
|
||||||
|
face = opt.nodeFontClassName;
|
||||||
|
size = opt.nodeFontClassSize;
|
||||||
|
break;
|
||||||
|
case PACKAGE:
|
||||||
|
face = opt.nodeFontPackageName;
|
||||||
|
size = opt.nodeFontPackageSize;
|
||||||
|
break;
|
||||||
|
case TAG:
|
||||||
|
face = opt.nodeFontTagName;
|
||||||
|
size = opt.nodeFontTagSize;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (face == null && size < 0 && !italic)
|
||||||
|
return text;
|
||||||
|
StringBuilder buf = new StringBuilder(text.length() + 100);
|
||||||
|
if (face != null || size > 0) {
|
||||||
|
buf.append("<font");
|
||||||
|
if (face != null)
|
||||||
|
buf.append(" face=\"").append(face).append('"');
|
||||||
|
if (size > 0)
|
||||||
|
buf.append(" point-size=\"").append(size).append('"');
|
||||||
|
buf.append('>');
|
||||||
|
}
|
||||||
|
if (italic)
|
||||||
|
buf.append("<i>");
|
||||||
|
buf.append(text);
|
||||||
|
if (italic)
|
||||||
|
buf.append("</i>");
|
||||||
|
if (face != null || size > 0)
|
||||||
|
buf.append("</font>");
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -26,23 +26,17 @@ public class InterfaceMatcher implements ClassMatcher {
|
||||||
|
|
||||||
// for each interface, recurse, since classes and interfaces
|
// for each interface, recurse, since classes and interfaces
|
||||||
// are treated the same in the doclet API
|
// are treated the same in the doclet API
|
||||||
for (ClassDoc iface : cd.interfaces()) {
|
for (ClassDoc iface : cd.interfaces())
|
||||||
if(matches(iface))
|
if(matches(iface))
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
// recurse on supeclass, if available
|
// recurse on supeclass, if available
|
||||||
if(cd.superclass() != null)
|
return cd.superclass() == null ? false : matches(cd.superclass());
|
||||||
return matches(cd.superclass());
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean matches(String name) {
|
public boolean matches(String name) {
|
||||||
ClassDoc cd = root.classNamed(name);
|
ClassDoc cd = root.classNamed(name);
|
||||||
if(cd == null)
|
return cd == null ? false : matches(cd);
|
||||||
return false;
|
|
||||||
return matches(cd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,30 +48,16 @@ import com.sun.javadoc.Tag;
|
||||||
* @author <a href="http://www.spinellis.gr">Diomidis Spinellis</a>
|
* @author <a href="http://www.spinellis.gr">Diomidis Spinellis</a>
|
||||||
*/
|
*/
|
||||||
public class Options implements Cloneable, OptionProvider {
|
public class Options implements Cloneable, OptionProvider {
|
||||||
// dot's font platform dependence workaround
|
|
||||||
private static String defaultFont;
|
|
||||||
private static String defaultItalicFont;
|
|
||||||
// reused often, especially in UmlGraphDoc, worth creating just once and reusing
|
// reused often, especially in UmlGraphDoc, worth creating just once and reusing
|
||||||
private static final Pattern allPattern = Pattern.compile(".*");
|
private static final Pattern allPattern = Pattern.compile(".*");
|
||||||
protected static final String DEFAULT_EXTERNAL_APIDOC = "http://docs.oracle.com/javase/7/docs/api/";
|
protected static final String DEFAULT_EXTERNAL_APIDOC = "http://docs.oracle.com/javase/7/docs/api/";
|
||||||
|
|
||||||
static {
|
|
||||||
// use an appropriate font depending on the current operating system
|
|
||||||
// (on windows graphviz is unable to locate "Helvetica-Oblique"
|
|
||||||
if(System.getProperty("os.name").toLowerCase().contains("windows")) {
|
|
||||||
defaultFont = "arial";
|
|
||||||
defaultItalicFont = "arial italic";
|
|
||||||
} else {
|
|
||||||
defaultFont = "Helvetica";
|
|
||||||
defaultItalicFont = "Helvetica-Oblique";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// instance fields
|
// instance fields
|
||||||
List<Pattern> hidePatterns = new ArrayList<Pattern>();
|
List<Pattern> hidePatterns = new ArrayList<Pattern>();
|
||||||
List<Pattern> includePatterns = new ArrayList<Pattern>();
|
List<Pattern> includePatterns = new ArrayList<Pattern>();
|
||||||
boolean showQualified = false;
|
boolean showQualified = false;
|
||||||
boolean showQualifiedGenerics = false;
|
boolean showQualifiedGenerics = false;
|
||||||
|
boolean hideGenerics = false;
|
||||||
boolean showAttributes = false;
|
boolean showAttributes = false;
|
||||||
boolean showEnumerations = false;
|
boolean showEnumerations = false;
|
||||||
boolean showEnumConstants = false;
|
boolean showEnumConstants = false;
|
||||||
|
|
@ -82,23 +68,22 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
boolean showType = false;
|
boolean showType = false;
|
||||||
boolean showComment = false;
|
boolean showComment = false;
|
||||||
boolean autoSize = true;
|
boolean autoSize = true;
|
||||||
String edgeFontName = defaultFont;
|
String edgeFontName = Font.DEFAULT_FONT;
|
||||||
String edgeFontColor = "black";
|
String edgeFontColor = "black";
|
||||||
String edgeColor = "black";
|
String edgeColor = "black";
|
||||||
double edgeFontSize = 10;
|
double edgeFontSize = 10;
|
||||||
String nodeFontName = defaultFont;
|
String nodeFontName = Font.DEFAULT_FONT;
|
||||||
String nodeFontAbstractName = defaultItalicFont;
|
boolean nodeFontAbstractItalic = true;
|
||||||
String nodeFontColor = "black";
|
String nodeFontColor = "black";
|
||||||
double nodeFontSize = 10;
|
double nodeFontSize = 10;
|
||||||
String nodeFillColor = null;
|
String nodeFillColor = null;
|
||||||
double nodeFontClassSize = -1;
|
double nodeFontClassSize = -1;
|
||||||
String nodeFontClassName = null;
|
String nodeFontClassName = null;
|
||||||
String nodeFontClassAbstractName = null;
|
|
||||||
double nodeFontTagSize = -1;
|
double nodeFontTagSize = -1;
|
||||||
String nodeFontTagName = null;
|
String nodeFontTagName = null;
|
||||||
double nodeFontPackageSize = -1;
|
double nodeFontPackageSize = -1;
|
||||||
String nodeFontPackageName = null;
|
String nodeFontPackageName = null;
|
||||||
Shape shape = new Shape();
|
Shape shape = Shape.CLASS;
|
||||||
String bgColor = null;
|
String bgColor = null;
|
||||||
public String outputFileName = "graph.dot";
|
public String outputFileName = "graph.dot";
|
||||||
String outputEncoding = "ISO-8859-1"; // TODO: default to UTF-8 now?
|
String outputEncoding = "ISO-8859-1"; // TODO: default to UTF-8 now?
|
||||||
|
|
@ -169,6 +154,34 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
showVisibility = true;
|
showVisibility = true;
|
||||||
showType = true;
|
showType = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Match strings, ignoring leading <tt>-</tt>, <tt>-!</tt>, and <tt>!</tt>.
|
||||||
|
*
|
||||||
|
* @param given Given string
|
||||||
|
* @param expect Expected string
|
||||||
|
* @return {@code true} on success
|
||||||
|
*/
|
||||||
|
protected static boolean matchOption(String given, String expect) {
|
||||||
|
return matchOption(given, expect, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Match strings, ignoring leading <tt>-</tt>, <tt>-!</tt>, and <tt>!</tt>.
|
||||||
|
*
|
||||||
|
* @param given Given string
|
||||||
|
* @param expect Expected string
|
||||||
|
* @param negative May be negative
|
||||||
|
* @return {@code true} on success
|
||||||
|
*/
|
||||||
|
protected static boolean matchOption(String given, String expect, boolean negative) {
|
||||||
|
int begin = 0, end = given.length();
|
||||||
|
if (begin < end && given.charAt(begin) == '-')
|
||||||
|
++begin;
|
||||||
|
if (negative && begin < end && given.charAt(begin) == '!')
|
||||||
|
++begin;
|
||||||
|
return expect.length() == end - begin && expect.regionMatches(0, given, begin, end - begin);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the number of arguments associated with the specified option.
|
* Return the number of arguments associated with the specified option.
|
||||||
|
|
@ -176,66 +189,66 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
* Will return 0 if the option is not supported.
|
* Will return 0 if the option is not supported.
|
||||||
*/
|
*/
|
||||||
public static int optionLength(String option) {
|
public static int optionLength(String option) {
|
||||||
if(option.equals("-qualify") || option.equals("-!qualify") ||
|
if(matchOption(option, "qualify", true) ||
|
||||||
option.equals("-qualifyGenerics") || option.equals("-!qualifyGenerics") ||
|
matchOption(option, "qualifyGenerics", true) ||
|
||||||
option.equals("-horizontal") || option.equals("-!horizontal") ||
|
matchOption(option, "hideGenerics", true) ||
|
||||||
option.equals("-attributes") || option.equals("-!attributes") ||
|
matchOption(option, "horizontal", true) ||
|
||||||
option.equals("-enumconstants") || option.equals("-!enumconstants") ||
|
matchOption(option, "attributes", true) ||
|
||||||
option.equals("-operations") || option.equals("-!operations") ||
|
matchOption(option, "enumconstants", true) ||
|
||||||
option.equals("-enumerations") || option.equals("-!enumerations") ||
|
matchOption(option, "operations", true) ||
|
||||||
option.equals("-constructors") || option.equals("-!constructors") ||
|
matchOption(option, "enumerations", true) ||
|
||||||
option.equals("-visibility") || option.equals("-!visibility") ||
|
matchOption(option, "constructors", true) ||
|
||||||
option.equals("-types") || option.equals("-!types") ||
|
matchOption(option, "visibility", true) ||
|
||||||
option.equals("-autosize") || option.equals("-!autosize") ||
|
matchOption(option, "types", true) ||
|
||||||
option.equals("-commentname") || option.equals("-!commentname") ||
|
matchOption(option, "autosize", true) ||
|
||||||
option.equals("-all") ||
|
matchOption(option, "commentname", true) ||
|
||||||
option.equals("-postfixpackage") ||
|
matchOption(option, "nodefontabstractitalic", true) ||
|
||||||
option.equals("-noguillemot") ||
|
matchOption(option, "all") ||
|
||||||
option.equals("-views") ||
|
matchOption(option, "postfixpackage") ||
|
||||||
option.equals("-inferrel") ||
|
matchOption(option, "noguillemot") ||
|
||||||
option.equals("-useimports") ||
|
matchOption(option, "views") ||
|
||||||
option.equals("-collapsible") ||
|
matchOption(option, "inferrel") ||
|
||||||
option.equals("-inferdep") ||
|
matchOption(option, "useimports") ||
|
||||||
option.equals("-inferdepinpackage") ||
|
matchOption(option, "collapsible") ||
|
||||||
option.equals("-compact"))
|
matchOption(option, "inferdep") ||
|
||||||
|
matchOption(option, "inferdepinpackage") ||
|
||||||
|
matchOption(option, "compact"))
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
else if(option.equals("-nodefillcolor") ||
|
else if(matchOption(option, "nodefillcolor") ||
|
||||||
option.equals("-nodefontcolor") ||
|
matchOption(option, "nodefontcolor") ||
|
||||||
option.equals("-nodefontsize") ||
|
matchOption(option, "nodefontsize") ||
|
||||||
option.equals("-nodefontname") ||
|
matchOption(option, "nodefontname") ||
|
||||||
option.equals("-nodefontabstractname") ||
|
matchOption(option, "nodefontclasssize") ||
|
||||||
option.equals("-nodefontclasssize") ||
|
matchOption(option, "nodefontclassname") ||
|
||||||
option.equals("-nodefontclassname") ||
|
matchOption(option, "nodefonttagsize") ||
|
||||||
option.equals("-nodefontclassabstractname") ||
|
matchOption(option, "nodefonttagname") ||
|
||||||
option.equals("-nodefonttagsize") ||
|
matchOption(option, "nodefontpackagesize") ||
|
||||||
option.equals("-nodefonttagname") ||
|
matchOption(option, "nodefontpackagename") ||
|
||||||
option.equals("-nodefontpackagesize") ||
|
matchOption(option, "edgefontcolor") ||
|
||||||
option.equals("-nodefontpackagename") ||
|
matchOption(option, "edgecolor") ||
|
||||||
option.equals("-edgefontcolor") ||
|
matchOption(option, "edgefontsize") ||
|
||||||
option.equals("-edgecolor") ||
|
matchOption(option, "edgefontname") ||
|
||||||
option.equals("-edgefontsize") ||
|
matchOption(option, "shape") ||
|
||||||
option.equals("-edgefontname") ||
|
matchOption(option, "output") ||
|
||||||
option.equals("-shape") ||
|
matchOption(option, "outputencoding") ||
|
||||||
option.equals("-output") ||
|
matchOption(option, "bgcolor") ||
|
||||||
option.equals("-outputencoding") ||
|
matchOption(option, "hide") ||
|
||||||
option.equals("-bgcolor") ||
|
matchOption(option, "include") ||
|
||||||
option.equals("-hide") ||
|
matchOption(option, "apidocroot") ||
|
||||||
option.equals("-include") ||
|
matchOption(option, "apidocmap") ||
|
||||||
option.equals("-apidocroot") ||
|
matchOption(option, "d") ||
|
||||||
option.equals("-apidocmap") ||
|
matchOption(option, "view") ||
|
||||||
option.equals("-d") ||
|
matchOption(option, "inferreltype") ||
|
||||||
option.equals("-view") ||
|
matchOption(option, "inferdepvis") ||
|
||||||
option.equals("-inferreltype") ||
|
matchOption(option, "collpackages") ||
|
||||||
option.equals("-inferdepvis") ||
|
matchOption(option, "nodesep") ||
|
||||||
option.equals("-collpackages") ||
|
matchOption(option, "ranksep") ||
|
||||||
option.equals("-nodesep") ||
|
matchOption(option, "dotexecutable") ||
|
||||||
option.equals("-ranksep") ||
|
matchOption(option, "link"))
|
||||||
option.equals("-dotexecutable") ||
|
|
||||||
option.equals("-link"))
|
|
||||||
return 2;
|
return 2;
|
||||||
else if(option.equals("-contextPattern") ||
|
else if(matchOption(option, "contextPattern") ||
|
||||||
option.equals("-linkoffline"))
|
matchOption(option, "linkoffline"))
|
||||||
return 3;
|
return 3;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -243,247 +256,166 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
|
|
||||||
/** Set the options based on a single option and its arguments */
|
/** Set the options based on a single option and its arguments */
|
||||||
void setOption(String[] opt) {
|
void setOption(String[] opt) {
|
||||||
if(!opt[0].equals("-hide") && optionLength(opt[0]) > opt.length) {
|
if(!matchOption(opt[0], "hide") && optionLength(opt[0]) > opt.length) {
|
||||||
System.err.println("Skipping option '" + opt[0] + "', missing argument");
|
System.err.println("Skipping option '" + opt[0] + "', missing argument");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
boolean dash = opt[0].length() > 1 && opt[0].charAt(0) == '-';
|
||||||
|
boolean positive = !(opt[0].length() > 1 && opt[0].charAt(dash ? 1 : 0) == '!');
|
||||||
|
|
||||||
if(opt[0].equals("-qualify")) {
|
if(matchOption(opt[0], "qualify", true)) {
|
||||||
showQualified = true;
|
showQualified = positive;
|
||||||
} else if (opt[0].equals("-!qualify")) {
|
} else if(matchOption(opt[0], "qualifyGenerics", true)) {
|
||||||
showQualified = false;
|
showQualifiedGenerics = positive;
|
||||||
} else if(opt[0].equals("-qualifyGenerics")) {
|
} else if(matchOption(opt[0], "hideGenerics", true)) {
|
||||||
showQualifiedGenerics = true;
|
hideGenerics = positive;
|
||||||
} else if (opt[0].equals("-!qualifyGenerics")) {
|
} else if(matchOption(opt[0], "horizontal", true)) {
|
||||||
showQualifiedGenerics = false;
|
horizontal = positive;
|
||||||
} else if(opt[0].equals("-horizontal")) {
|
} else if(matchOption(opt[0], "attributes", true)) {
|
||||||
horizontal = true;
|
showAttributes = positive;
|
||||||
} else if (opt[0].equals("-!horizontal")) {
|
} else if(matchOption(opt[0], "enumconstants", true)) {
|
||||||
horizontal = false;
|
showEnumConstants = positive;
|
||||||
} else if(opt[0].equals("-attributes")) {
|
} else if(matchOption(opt[0], "operations", true)) {
|
||||||
showAttributes = true;
|
showOperations = positive;
|
||||||
} else if (opt[0].equals("-!attributes")) {
|
} else if(matchOption(opt[0], "enumerations", true)) {
|
||||||
showAttributes = false;
|
showEnumerations = positive;
|
||||||
} else if(opt[0].equals("-enumconstants")) {
|
} else if(matchOption(opt[0], "constructors", true)) {
|
||||||
showEnumConstants = true;
|
showConstructors = positive;
|
||||||
} else if (opt[0].equals("-!enumconstants")) {
|
} else if(matchOption(opt[0], "visibility", true)) {
|
||||||
showEnumConstants = false;
|
showVisibility = positive;
|
||||||
} else if(opt[0].equals("-operations")) {
|
} else if(matchOption(opt[0], "types", true)) {
|
||||||
showOperations = true;
|
showType = positive;
|
||||||
} else if (opt[0].equals("-!operations")) {
|
} else if(matchOption(opt[0], "autoSize", true)) {
|
||||||
showOperations = false;
|
autoSize = positive;
|
||||||
} else if(opt[0].equals("-enumerations")) {
|
} else if(matchOption(opt[0], "commentname", true)) {
|
||||||
showEnumerations = true;
|
showComment = positive;
|
||||||
} else if (opt[0].equals("-!enumerations")) {
|
} else if(matchOption(opt[0], "all")) {
|
||||||
showEnumerations = false;
|
|
||||||
} else if(opt[0].equals("-constructors")) {
|
|
||||||
showConstructors = true;
|
|
||||||
} else if (opt[0].equals("-!constructors")) {
|
|
||||||
showConstructors = false;
|
|
||||||
} else if(opt[0].equals("-visibility")) {
|
|
||||||
showVisibility = true;
|
|
||||||
} else if (opt[0].equals("-!visibility")) {
|
|
||||||
showVisibility = false;
|
|
||||||
} else if(opt[0].equals("-types")) {
|
|
||||||
showType = true;
|
|
||||||
} else if (opt[0].equals("-!types")) {
|
|
||||||
showType = false;
|
|
||||||
} else if(opt[0].equals("-autoSize")) {
|
|
||||||
autoSize = true;
|
|
||||||
} else if (opt[0].equals("-!autoSize")) {
|
|
||||||
autoSize = false;
|
|
||||||
} else if(opt[0].equals("-commentname")) {
|
|
||||||
showComment = true;
|
|
||||||
} else if (opt[0].equals("-!commentname")) {
|
|
||||||
showComment = false;
|
|
||||||
} else if(opt[0].equals("-all")) {
|
|
||||||
setAll();
|
setAll();
|
||||||
} else if(opt[0].equals("-bgcolor")) {
|
} else if(matchOption(opt[0], "bgcolor", true)) {
|
||||||
bgColor = opt[1];
|
bgColor = positive ? opt[1] : null;
|
||||||
} else if (opt[0].equals("-!bgcolor")) {
|
} else if(matchOption(opt[0], "edgecolor", true)) {
|
||||||
bgColor = null;
|
edgeColor = positive ? opt[1] : "black";
|
||||||
} else if(opt[0].equals("-edgecolor")) {
|
} else if(matchOption(opt[0], "edgefontcolor", true)) {
|
||||||
edgeColor = opt[1];
|
edgeFontColor = positive ? opt[1] : "black";
|
||||||
} else if (opt[0].equals("-!edgecolor")) {
|
} else if(matchOption(opt[0], "edgefontname", true)) {
|
||||||
edgeColor = "black";
|
edgeFontName = positive ? opt[1] : Font.DEFAULT_FONT;
|
||||||
} else if(opt[0].equals("-edgefontcolor")) {
|
} else if(matchOption(opt[0], "edgefontsize", true)) {
|
||||||
edgeFontColor = opt[1];
|
edgeFontSize = positive ? Double.parseDouble(opt[1]) : 10;
|
||||||
} else if (opt[0].equals("-!edgefontcolor")) {
|
} else if(matchOption(opt[0], "nodefontcolor", true)) {
|
||||||
edgeFontColor = "black";
|
nodeFontColor = positive ? opt[1] : "black";
|
||||||
} else if(opt[0].equals("-edgefontname")) {
|
} else if(matchOption(opt[0], "nodefontname", true)) {
|
||||||
edgeFontName = opt[1];
|
nodeFontName = positive ? opt[1] : Font.DEFAULT_FONT;
|
||||||
} else if (opt[0].equals("-!edgefontname")) {
|
} else if(matchOption(opt[0], "nodefontabstractitalic", true)) {
|
||||||
edgeFontName = defaultFont;
|
nodeFontAbstractItalic = positive;
|
||||||
} else if(opt[0].equals("-edgefontsize")) {
|
} else if(matchOption(opt[0], "nodefontsize", true)) {
|
||||||
edgeFontSize = Integer.parseInt(opt[1]);
|
nodeFontSize = positive ? Double.parseDouble(opt[1]) : 10;
|
||||||
} else if (opt[0].equals("-!edgefontsize")) {
|
} else if(matchOption(opt[0], "nodefontclassname", true)) {
|
||||||
edgeFontSize = 10;
|
nodeFontClassName = positive ? opt[1] : null;
|
||||||
} else if(opt[0].equals("-nodefontcolor")) {
|
} else if(matchOption(opt[0], "nodefontclasssize", true)) {
|
||||||
nodeFontColor = opt[1];
|
nodeFontClassSize = positive ? Double.parseDouble(opt[1]) : -1;
|
||||||
} else if (opt[0].equals("-!nodefontcolor")) {
|
} else if(matchOption(opt[0], "nodefonttagname", true)) {
|
||||||
nodeFontColor = "black";
|
nodeFontTagName = positive ? opt[1] : null;
|
||||||
} else if(opt[0].equals("-nodefontname")) {
|
} else if(matchOption(opt[0], "nodefonttagsize", true)) {
|
||||||
nodeFontName = opt[1];
|
nodeFontTagSize = positive ? Double.parseDouble(opt[1]) : -1;
|
||||||
} else if (opt[0].equals("-!nodefontname")) {
|
} else if(matchOption(opt[0], "nodefontpackagename", true)) {
|
||||||
nodeFontName = defaultFont;
|
nodeFontPackageName = positive ? opt[1] : null;
|
||||||
} else if(opt[0].equals("-nodefontabstractname")) {
|
} else if(matchOption(opt[0], "nodefontpackagesize", true)) {
|
||||||
nodeFontAbstractName = opt[1];
|
nodeFontPackageSize = positive ? Double.parseDouble(opt[1]) : -1;
|
||||||
} else if (opt[0].equals("-!nodefontabstractname")) {
|
} else if(matchOption(opt[0], "nodefillcolor", true)) {
|
||||||
nodeFontAbstractName = defaultItalicFont;
|
nodeFillColor = positive ? opt[1] : null;
|
||||||
} else if(opt[0].equals("-nodefontsize")) {
|
} else if(matchOption(opt[0], "shape", true)) {
|
||||||
nodeFontSize = Integer.parseInt(opt[1]);
|
shape = positive ? Shape.of(opt[1]) : Shape.CLASS;
|
||||||
} else if (opt[0].equals("-!nodefontsize")) {
|
} else if(matchOption(opt[0], "output", true)) {
|
||||||
nodeFontSize = 10;
|
outputFileName = positive ? opt[1] : "graph.dot";
|
||||||
} else if(opt[0].equals("-nodefontclassname")) {
|
} else if(matchOption(opt[0], "outputencoding", true)) {
|
||||||
nodeFontClassName = opt[1];
|
outputEncoding = positive ? opt[1] : "ISO-8859-1";
|
||||||
} else if (opt[0].equals("-!nodefontclassname")) {
|
} else if(matchOption(opt[0], "hide", true)) {
|
||||||
nodeFontClassName = null;
|
if (positive) {
|
||||||
} else if(opt[0].equals("-nodefontclassabstractname")) {
|
if (opt.length == 1) {
|
||||||
nodeFontClassAbstractName = opt[1];
|
hidePatterns.clear();
|
||||||
} else if (opt[0].equals("-!nodefontclassabstractname")) {
|
hidePatterns.add(allPattern);
|
||||||
nodeFontClassAbstractName = null;
|
} else {
|
||||||
} else if(opt[0].equals("-nodefontclasssize")) {
|
try {
|
||||||
nodeFontClassSize = Integer.parseInt(opt[1]);
|
hidePatterns.add(Pattern.compile(opt[1]));
|
||||||
} else if (opt[0].equals("-!nodefontclasssize")) {
|
} catch (PatternSyntaxException e) {
|
||||||
nodeFontClassSize = -1;
|
System.err.println("Skipping invalid pattern " + opt[1]);
|
||||||
} else if(opt[0].equals("-nodefonttagname")) {
|
}
|
||||||
nodeFontTagName = opt[1];
|
}
|
||||||
} else if (opt[0].equals("-!nodefonttagname")) {
|
} else
|
||||||
nodeFontTagName = null;
|
|
||||||
} else if(opt[0].equals("-nodefonttagsize")) {
|
|
||||||
nodeFontTagSize = Integer.parseInt(opt[1]);
|
|
||||||
} else if (opt[0].equals("-!nodefonttagsize")) {
|
|
||||||
nodeFontTagSize = -1;
|
|
||||||
} else if(opt[0].equals("-nodefontpackagename")) {
|
|
||||||
nodeFontPackageName = opt[1];
|
|
||||||
} else if (opt[0].equals("-!nodefontpackagename")) {
|
|
||||||
nodeFontPackageName = null;
|
|
||||||
} else if(opt[0].equals("-nodefontpackagesize")) {
|
|
||||||
nodeFontPackageSize = Integer.parseInt(opt[1]);
|
|
||||||
} else if (opt[0].equals("-!nodefontpackagesize")) {
|
|
||||||
nodeFontPackageSize = -1;
|
|
||||||
} else if(opt[0].equals("-nodefillcolor")) {
|
|
||||||
nodeFillColor = opt[1];
|
|
||||||
} else if (opt[0].equals("-!nodefillcolor")) {
|
|
||||||
nodeFillColor = null;
|
|
||||||
} else if(opt[0].equals("-shape")) {
|
|
||||||
shape = new Shape(opt[1]);
|
|
||||||
} else if (opt[0].equals("-!shape")) {
|
|
||||||
shape = new Shape();
|
|
||||||
} else if(opt[0].equals("-output")) {
|
|
||||||
outputFileName = opt[1];
|
|
||||||
} else if (opt[0].equals("-!output")) {
|
|
||||||
outputFileName = "graph.dot";
|
|
||||||
} else if(opt[0].equals("-outputencoding")) {
|
|
||||||
outputEncoding = opt[1];
|
|
||||||
} else if (opt[0].equals("-!outputencoding")) {
|
|
||||||
outputEncoding = "ISO-8859-1";
|
|
||||||
} else if(opt[0].equals("-hide")) {
|
|
||||||
if(opt.length == 1) {
|
|
||||||
hidePatterns.clear();
|
hidePatterns.clear();
|
||||||
hidePatterns.add(allPattern);
|
} else if(matchOption(opt[0], "include", true)) {
|
||||||
} else {
|
if (positive) {
|
||||||
try {
|
try {
|
||||||
hidePatterns.add(Pattern.compile(opt[1]));
|
includePatterns.add(Pattern.compile(opt[1]));
|
||||||
} catch (PatternSyntaxException e) {
|
} catch (PatternSyntaxException e) {
|
||||||
System.err.println("Skipping invalid pattern " + opt[1]);
|
System.err.println("Skipping invalid pattern " + opt[1]);
|
||||||
}
|
}
|
||||||
}
|
} else
|
||||||
} else if (opt[0].equals("-!hide")) {
|
includePatterns.clear();
|
||||||
hidePatterns.clear();
|
} else if(matchOption(opt[0], "apidocroot", true)) {
|
||||||
} else if(opt[0].equals("-include")) {
|
apiDocRoot = positive ? fixApiDocRoot(opt[1]) : null;
|
||||||
try {
|
} else if(matchOption(opt[0], "apidocmap", true)) {
|
||||||
includePatterns.add(Pattern.compile(opt[1]));
|
if (positive)
|
||||||
} catch (PatternSyntaxException e) {
|
setApiDocMapFile(opt[1]);
|
||||||
System.err.println("Skipping invalid pattern " + opt[1]);
|
else
|
||||||
}
|
apiDocMap.clear();
|
||||||
} else if (opt[0].equals("-!include")) {
|
} else if(matchOption(opt[0], "noguillemot", true)) {
|
||||||
includePatterns.clear();
|
guilOpen = positive ? "<<" : "\u00ab";
|
||||||
} else if(opt[0].equals("-apidocroot")) {
|
guilClose = positive ? ">>" : "\u00bb";
|
||||||
apiDocRoot = fixApiDocRoot(opt[1]);
|
} else if (matchOption(opt[0], "view", true)) {
|
||||||
} else if (opt[0].equals("-!apidocroot")) {
|
viewName = positive ? opt[1] : null;
|
||||||
apiDocRoot = null;
|
} else if (matchOption(opt[0], "views", true)) {
|
||||||
} else if(opt[0].equals("-apidocmap")) {
|
findViews = positive;
|
||||||
setApiDocMapFile(opt[1]);
|
} else if (matchOption(opt[0], "d", true)) {
|
||||||
} else if (opt[0].equals("-!apidocmap")) {
|
outputDirectory = positive ? opt[1] : null;
|
||||||
apiDocMap.clear();
|
} else if(matchOption(opt[0], "inferrel", true)) {
|
||||||
} else if(opt[0].equals("-noguillemot")) {
|
inferRelationships = positive;
|
||||||
guilOpen = "<<";
|
} else if(matchOption(opt[0], "inferreltype", true)) {
|
||||||
guilClose = ">>";
|
if (positive) {
|
||||||
} else if (opt[0].equals("-!noguillemot")) {
|
|
||||||
guilOpen = "\u00ab";
|
|
||||||
guilClose = "\u00bb";
|
|
||||||
} else if (opt[0].equals("-view")) {
|
|
||||||
viewName = opt[1];
|
|
||||||
} else if (opt[0].equals("-!view")) {
|
|
||||||
viewName = null;
|
|
||||||
} else if (opt[0].equals("-views")) {
|
|
||||||
findViews = true;
|
|
||||||
} else if (opt[0].equals("-!views")) {
|
|
||||||
findViews = false;
|
|
||||||
} else if (opt[0].equals("-d")) {
|
|
||||||
outputDirectory = opt[1];
|
|
||||||
} else if (opt[0].equals("-!d")) {
|
|
||||||
outputDirectory = null;
|
|
||||||
} else if(opt[0].equals("-inferrel")) {
|
|
||||||
inferRelationships = true;
|
|
||||||
} else if(opt[0].equals("-!inferrel")) {
|
|
||||||
inferRelationships = false;
|
|
||||||
} else if(opt[0].equals("-inferreltype")) {
|
|
||||||
try {
|
try {
|
||||||
inferRelationshipType = RelationType.valueOf(opt[1].toUpperCase());
|
inferRelationshipType = RelationType.valueOf(opt[1].toUpperCase());
|
||||||
} catch(IllegalArgumentException e) {
|
} catch(IllegalArgumentException e) {
|
||||||
System.err.println("Unknown association type " + opt[1]);
|
System.err.println("Unknown association type " + opt[1]);
|
||||||
}
|
}
|
||||||
} else if(opt[0].equals("-!inferreltype")) {
|
} else
|
||||||
inferRelationshipType = RelationType.NAVASSOC;
|
inferRelationshipType = RelationType.NAVASSOC;
|
||||||
} else if(opt[0].equals("-inferdepvis")) {
|
} else if(matchOption(opt[0], "inferdepvis", true)) {
|
||||||
try {
|
if (positive) {
|
||||||
Visibility vis = Visibility.valueOf(opt[1].toUpperCase());
|
try {
|
||||||
inferDependencyVisibility = vis;
|
Visibility vis = Visibility.valueOf(opt[1].toUpperCase());
|
||||||
} catch(IllegalArgumentException e) {
|
inferDependencyVisibility = vis;
|
||||||
System.err.println("Ignoring invalid visibility specification for " +
|
} catch(IllegalArgumentException e) {
|
||||||
"dependency inference: " + opt[1]);
|
System.err.println("Ignoring invalid visibility specification for " +
|
||||||
}
|
"dependency inference: " + opt[1]);
|
||||||
} else if(opt[0].equals("-!inferdepvis")) {
|
}
|
||||||
inferDependencyVisibility = Visibility.PRIVATE;
|
} else
|
||||||
} else if(opt[0].equals("-collapsible")) {
|
inferDependencyVisibility = Visibility.PRIVATE;
|
||||||
collapsibleDiagrams = true;
|
} else if(matchOption(opt[0], "collapsible", true)) {
|
||||||
} else if(opt[0].equals("-!collapsible")) {
|
collapsibleDiagrams = positive;
|
||||||
collapsibleDiagrams = false;
|
} else if(matchOption(opt[0], "inferdep", true)) {
|
||||||
} else if(opt[0].equals("-inferdep")) {
|
inferDependencies = positive;
|
||||||
inferDependencies = true;
|
} else if(matchOption(opt[0], "inferdepinpackage", true)) {
|
||||||
} else if(opt[0].equals("-!inferdep")) {
|
inferDepInPackage = positive;
|
||||||
inferDependencies = false;
|
} else if(matchOption(opt[0], "useimports", true)) {
|
||||||
} else if(opt[0].equals("-inferdepinpackage")) {
|
useImports = positive;
|
||||||
inferDepInPackage = true;
|
} else if (matchOption(opt[0], "collpackages", true)) {
|
||||||
} else if(opt[0].equals("-!inferdepinpackage")) {
|
if (positive) {
|
||||||
inferDepInPackage = false;
|
try {
|
||||||
} else if(opt[0].equals("-useimports")) {
|
collPackages.add(Pattern.compile(opt[1]));
|
||||||
useImports = true;
|
} catch (PatternSyntaxException e) {
|
||||||
} else if(opt[0].equals("-!useimports")) {
|
System.err.println("Skipping invalid pattern " + opt[1]);
|
||||||
useImports = false;
|
}
|
||||||
} else if (opt[0].equals("-collpackages")) {
|
} else
|
||||||
try {
|
collPackages.clear();
|
||||||
collPackages.add(Pattern.compile(opt[1]));
|
} else if (matchOption(opt[0], "compact", true)) {
|
||||||
} catch (PatternSyntaxException e) {
|
compact = positive;
|
||||||
System.err.println("Skipping invalid pattern " + opt[1]);
|
} else if (matchOption(opt[0], "postfixpackage", true)) {
|
||||||
}
|
postfixPackage = positive;
|
||||||
} else if (opt[0].equals("-!collpackages")) {
|
} else if (matchOption(opt[0], "link")) {
|
||||||
collPackages.clear();
|
|
||||||
} else if (opt[0].equals("-compact")) {
|
|
||||||
compact = true;
|
|
||||||
} else if (opt[0].equals("-!compact")) {
|
|
||||||
compact = false;
|
|
||||||
} else if (opt[0].equals("-postfixpackage")) {
|
|
||||||
postfixPackage = true;
|
|
||||||
} else if (opt[0].equals("-!postfixpackage")) {
|
|
||||||
postfixPackage = false;
|
|
||||||
} else if (opt[0].equals("-link")) {
|
|
||||||
addApiDocRoots(opt[1]);
|
addApiDocRoots(opt[1]);
|
||||||
} else if (opt[0].equals("-linkoffline")) {
|
} else if (matchOption(opt[0], "linkoffline")) {
|
||||||
addApiDocRootsOffline(opt[1], opt[2]);
|
addApiDocRootsOffline(opt[1], opt[2]);
|
||||||
} else if(opt[0].equals("-contextPattern")) {
|
} else if(matchOption(opt[0], "contextPattern")) {
|
||||||
RelationDirection d; RelationType rt;
|
RelationDirection d; RelationType rt;
|
||||||
try {
|
try {
|
||||||
d = RelationDirection.valueOf(opt[2].toUpperCase());
|
d = RelationDirection.valueOf(opt[2].toUpperCase());
|
||||||
|
|
@ -497,27 +429,22 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (opt[0].equals("-nodesep")) {
|
} else if (matchOption(opt[0], "nodesep", true)) {
|
||||||
try {
|
try {
|
||||||
nodeSep = Double.parseDouble(opt[1]);
|
nodeSep = positive ? Double.parseDouble(opt[1]) : 0.25;
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
System.err.println("Skipping invalid nodesep " + opt[1]);
|
System.err.println("Skipping invalid nodesep " + opt[1]);
|
||||||
}
|
}
|
||||||
} else if (opt[0].equals("-!nodesep")) {
|
} else if (matchOption(opt[0], "ranksep", true)) {
|
||||||
nodeSep = 0.25;
|
|
||||||
} else if (opt[0].equals("-ranksep")) {
|
|
||||||
try {
|
try {
|
||||||
rankSep = Double.parseDouble(opt[1]);
|
rankSep = positive ? Double.parseDouble(opt[1]) : 0.5;
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
System.err.println("Skipping invalid ranksep " + opt[1]);
|
System.err.println("Skipping invalid ranksep " + opt[1]);
|
||||||
}
|
}
|
||||||
} else if (opt[0].equals("-!ranksep")) {
|
} else if (matchOption(opt[0], "dotexecutable")) {
|
||||||
rankSep = 0.5;
|
dotExecutable = opt[1];
|
||||||
} else if (opt[0].equals("-dotexecutable")) {
|
|
||||||
dotExecutable = opt[1];
|
|
||||||
} else
|
} else
|
||||||
; // Do nothing, javadoc will handle the option or complain, if
|
; // Do nothing, javadoc will handle the option or complain, if needed.
|
||||||
// needed.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -589,11 +516,10 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
userMap.load(is);
|
userMap.load(is);
|
||||||
for (Map.Entry<?, ?> mapEntry : userMap.entrySet()) {
|
for (Map.Entry<?, ?> mapEntry : userMap.entrySet()) {
|
||||||
try {
|
try {
|
||||||
Pattern regex = Pattern.compile((String) mapEntry.getKey());
|
|
||||||
String thisRoot = (String) mapEntry.getValue();
|
String thisRoot = (String) mapEntry.getValue();
|
||||||
if (thisRoot != null) {
|
if (thisRoot != null) {
|
||||||
thisRoot = fixApiDocRoot(thisRoot);
|
thisRoot = fixApiDocRoot(thisRoot);
|
||||||
apiDocMap.put(regex, thisRoot);
|
apiDocMap.put(Pattern.compile((String) mapEntry.getKey()), thisRoot);
|
||||||
} else {
|
} else {
|
||||||
System.err.println("No URL for pattern " + mapEntry.getKey());
|
System.err.println("No URL for pattern " + mapEntry.getKey());
|
||||||
}
|
}
|
||||||
|
|
@ -614,7 +540,7 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
* match the class name against the regular expressions specified in the
|
* match the class name against the regular expressions specified in the
|
||||||
* <code>apiDocMap</code>; if a match is found, the associated URL
|
* <code>apiDocMap</code>; if a match is found, the associated URL
|
||||||
* will be returned.
|
* will be returned.
|
||||||
*
|
* <p>
|
||||||
* <b>NOTE:</b> The match order of the match attempts is the one specified by the
|
* <b>NOTE:</b> The match order of the match attempts is the one specified by the
|
||||||
* constructor of the api doc root, so it depends on the order of "-link" and "-apiDocMap"
|
* constructor of the api doc root, so it depends on the order of "-link" and "-apiDocMap"
|
||||||
* parameters.
|
* parameters.
|
||||||
|
|
@ -624,9 +550,7 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
|
apiDocMap.put(Pattern.compile(".*"), DEFAULT_EXTERNAL_APIDOC);
|
||||||
|
|
||||||
for (Map.Entry<Pattern, String> mapEntry : apiDocMap.entrySet()) {
|
for (Map.Entry<Pattern, String> mapEntry : apiDocMap.entrySet()) {
|
||||||
Pattern regex = mapEntry.getKey();
|
if (mapEntry.getKey().matcher(className).matches())
|
||||||
Matcher matcher = regex.matcher(className);
|
|
||||||
if (matcher.matches())
|
|
||||||
return mapEntry.getValue();
|
return mapEntry.getValue();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -634,16 +558,15 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
|
|
||||||
/** Trim and append a file separator to the string */
|
/** Trim and append a file separator to the string */
|
||||||
private String fixApiDocRoot(String str) {
|
private String fixApiDocRoot(String str) {
|
||||||
String fixed = null;
|
if (str == null)
|
||||||
if (str != null) {
|
return null;
|
||||||
fixed = str.trim();
|
String fixed = str.trim();
|
||||||
if (fixed.length() > 0) {
|
if (fixed.isEmpty())
|
||||||
if (!File.separator.equals("/"))
|
return "";
|
||||||
fixed = fixed.replace(File.separator.charAt(0), '/');
|
if (File.separatorChar != '/')
|
||||||
if (!fixed.endsWith("/"))
|
fixed = fixed.replace(File.separatorChar, '/');
|
||||||
fixed = fixed + "/";
|
if (!fixed.endsWith("/"))
|
||||||
}
|
fixed = fixed + "/";
|
||||||
}
|
|
||||||
return fixed;
|
return fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -659,11 +582,8 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
if (p == null)
|
if (p == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Tag tag : p.tags("opt")) {
|
for (Tag tag : p.tags("opt"))
|
||||||
String[] opt = StringUtil.tokenize(tag.text());
|
setOption(StringUtil.tokenize(tag.text()));
|
||||||
opt[0] = "-" + opt[0];
|
|
||||||
setOption(opt);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -678,13 +598,8 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
Matcher m = hidePattern.matcher(s);
|
Matcher m = hidePattern.matcher(s);
|
||||||
if (strictMatching) {
|
if (strictMatching ? m.matches() : m.find())
|
||||||
if (m.matches()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else if (m.find()) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -697,13 +612,8 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
public boolean matchesIncludeExpression(String s) {
|
public boolean matchesIncludeExpression(String s) {
|
||||||
for (Pattern includePattern : includePatterns) {
|
for (Pattern includePattern : includePatterns) {
|
||||||
Matcher m = includePattern.matcher(s);
|
Matcher m = includePattern.matcher(s);
|
||||||
if (strictMatching) {
|
if (strictMatching ? m.matches() : m.find())
|
||||||
if (m.matches()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else if (m.find()) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -716,13 +626,8 @@ public class Options implements Cloneable, OptionProvider {
|
||||||
public boolean matchesCollPackageExpression(String s) {
|
public boolean matchesCollPackageExpression(String s) {
|
||||||
for (Pattern collPattern : collPackages) {
|
for (Pattern collPattern : collPackages) {
|
||||||
Matcher m = collPattern.matcher(s);
|
Matcher m = collPattern.matcher(s);
|
||||||
if (strictMatching) {
|
if (strictMatching ? m.matches() : m.find())
|
||||||
if (m.matches()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else if (m.find()) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,9 @@ public class PackageMatcher implements ClassMatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean matches(String name) {
|
public boolean matches(String name) {
|
||||||
for (ClassDoc cd : packageDoc.allClasses()) {
|
for (ClassDoc cd : packageDoc.allClasses())
|
||||||
if (cd.qualifiedName().equals(name))
|
if (cd.qualifiedName().equals(name))
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import com.sun.javadoc.RootDoc;
|
||||||
*/
|
*/
|
||||||
public class PackageView implements OptionProvider {
|
public class PackageView implements OptionProvider {
|
||||||
|
|
||||||
private static final String[] HIDE = new String[] { "-hide" };
|
private static final String[] HIDE = new String[] { "hide" };
|
||||||
private PackageDoc pd;
|
private PackageDoc pd;
|
||||||
private OptionProvider parent;
|
private OptionProvider parent;
|
||||||
private ClassMatcher matcher;
|
private ClassMatcher matcher;
|
||||||
|
|
@ -40,7 +40,7 @@ public class PackageView implements OptionProvider {
|
||||||
public Options getGlobalOptions() {
|
public Options getGlobalOptions() {
|
||||||
Options go = parent.getGlobalOptions();
|
Options go = parent.getGlobalOptions();
|
||||||
|
|
||||||
go.setOption(new String[] { "-output", outputPath });
|
go.setOption(new String[] { "output", outputPath });
|
||||||
go.setOption(HIDE);
|
go.setOption(HIDE);
|
||||||
|
|
||||||
return go;
|
return go;
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@
|
||||||
*/
|
*/
|
||||||
package org.umlgraph.doclet;
|
package org.umlgraph.doclet;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import com.sun.javadoc.ClassDoc;
|
import com.sun.javadoc.ClassDoc;
|
||||||
|
|
@ -38,8 +37,7 @@ public class PatternMatcher implements ClassMatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean matches(String name) {
|
public boolean matches(String name) {
|
||||||
Matcher matcher = pattern.matcher(name);
|
return pattern.matcher(name).matches();
|
||||||
return matcher.matches();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,9 @@ public enum RelationDirection {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public RelationDirection sum(RelationDirection d) {
|
public RelationDirection sum(RelationDirection d) {
|
||||||
if (this == NONE)
|
// Handle same and nones first:
|
||||||
return d;
|
return (this == d || d == NONE) ? this : //
|
||||||
|
this == NONE ? d : BOTH; // They are different and not none.
|
||||||
if ((this == IN && d == OUT) || (this == OUT && d == IN) || this == BOTH || d == BOTH)
|
|
||||||
return BOTH;
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -28,10 +25,7 @@ public enum RelationDirection {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public boolean contains(RelationDirection d) {
|
public boolean contains(RelationDirection d) {
|
||||||
if (this == BOTH)
|
return this == BOTH ? true : (d == this);
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return d == this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -40,12 +34,7 @@ public enum RelationDirection {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public RelationDirection inverse() {
|
public RelationDirection inverse() {
|
||||||
if (this == IN)
|
return this == IN ? OUT : this == OUT ? IN : this;
|
||||||
return OUT;
|
|
||||||
else if (this == OUT)
|
|
||||||
return IN;
|
|
||||||
else
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,34 @@
|
||||||
package org.umlgraph.doclet;
|
package org.umlgraph.doclet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of relation that links two entities
|
* The type of relation that links two entities, and the graphviz format
|
||||||
* @author wolf
|
|
||||||
*
|
*
|
||||||
|
* @author Erich Schubert
|
||||||
*/
|
*/
|
||||||
public enum RelationType {
|
public enum RelationType {
|
||||||
ASSOC(), NAVASSOC(), HAS(), NAVHAS(), COMPOSED(), NAVCOMPOSED(), DEPEND(), EXTENDS(), IMPLEMENTS();
|
DEPEND("arrowhead=open,style=dashed,weight=0", false), // Weakest
|
||||||
|
NAVASSOC("arrowhead=open,weight=1", false), //
|
||||||
|
ASSOC("arrowhead=none,weight=2", false), //
|
||||||
|
NAVHAS("arrowhead=open,arrowtail=ediamond,dir=both,weight=3", false), //
|
||||||
|
HAS("arrowhead=none,arrowtail=ediamond,dir=back,weight=4", false), //
|
||||||
|
NAVCOMPOSED("arrowhead=open,arrowtail=diamond,dir=both,weight=5", false), //
|
||||||
|
COMPOSED("arrowhead=none,arrowtail=diamond,dir=back,weight=6", false), //
|
||||||
|
IMPLEMENTS("arrowtail=empty,style=dashed,dir=back,weight=9", true), //
|
||||||
|
EXTENDS("arrowtail=empty,dir=back,weight=10", true);
|
||||||
|
|
||||||
|
/** Lower case version of the label */
|
||||||
public final String lower;
|
public final String lower;
|
||||||
|
|
||||||
private RelationType() {
|
/** Graphviz style */
|
||||||
this.lower = toString().toLowerCase();
|
public final String style;
|
||||||
|
|
||||||
|
/** Backwards edges with respect to node ranking */
|
||||||
|
public final boolean backorder;
|
||||||
|
|
||||||
|
/** Enum constructors must be private */
|
||||||
|
private RelationType(String style, boolean backorder) {
|
||||||
|
this.lower = toString().toLowerCase();
|
||||||
|
this.style = style;
|
||||||
|
this.backorder = backorder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,80 +18,66 @@
|
||||||
|
|
||||||
package org.umlgraph.doclet;
|
package org.umlgraph.doclet;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.util.HashMap;
|
||||||
import java.io.PrintWriter;
|
import java.util.Locale;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.sun.javadoc.ClassDoc;
|
|
||||||
import com.sun.javadoc.Doc;
|
|
||||||
import com.sun.javadoc.LanguageVersion;
|
|
||||||
import com.sun.javadoc.RootDoc;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Properties of node shapes
|
* Properties of node shapes
|
||||||
*
|
*
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
* @author <a href="http://www.spinellis.gr">Diomidis Spinellis</a>
|
* @author Erich Schubert
|
||||||
*/
|
*/
|
||||||
public class Shape {
|
public enum Shape {
|
||||||
|
CLASS(""), //
|
||||||
|
NOTE(", shape=note"), //
|
||||||
|
NODE(", shape=box3d"), //
|
||||||
|
COMPONENT(", shape=component"), //
|
||||||
|
PACKAGE(", shape=tab"), //
|
||||||
|
COLLABORATION(", shape=ellipse, style=dashed"), //
|
||||||
|
USECASE(", shape=ellipse"), //
|
||||||
|
ACTIVECLASS("");
|
||||||
|
|
||||||
/** Shape's UMLGraph name */
|
/** Graphviz style */
|
||||||
private String name;
|
public final String style;
|
||||||
|
|
||||||
/** Construct a default (class) Shape */
|
/** Map for valid shape names */
|
||||||
public Shape() {
|
private static final HashMap<String, Shape> index = new HashMap<String, Shape>(16);
|
||||||
name = "class";
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Construct a Shape through the specified UMLGraph name */
|
/** Initialize the lookup index */
|
||||||
public Shape(String n) {
|
static {
|
||||||
name = n;
|
for (Shape s : Shape.values()) {
|
||||||
if (graphvizAttribute() == null) {
|
index.put(s.name(), s);
|
||||||
System.err.println("Ignoring invalid shape " + n);
|
index.put(s.name().toLowerCase(Locale.ROOT), s);
|
||||||
name = "class";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the GraphViz shape name corresponding to the shape
|
* Get the shape from a string. This allows both the uppercase and the lowercase
|
||||||
|
* name. Prefer this to {{@link #valueOf(String)} which only accepts uppercase.
|
||||||
|
*
|
||||||
|
* @param s String
|
||||||
|
* @return Shape
|
||||||
*/
|
*/
|
||||||
public String graphvizAttribute() {
|
public static Shape of(String s) {
|
||||||
if (name.equals("class"))
|
Shape shp = index.get(s);
|
||||||
return ""; // Default; plaintext
|
if (shp != null)
|
||||||
else if (name.equals("note"))
|
return shp;
|
||||||
return ", shape=note";
|
System.err.println("Ignoring invalid shape: " + s);
|
||||||
else if (name.equals("node"))
|
return CLASS;
|
||||||
return ", shape=box3d";
|
|
||||||
else if (name.equals("component"))
|
|
||||||
return ", shape=component";
|
|
||||||
else if (name.equals("package"))
|
|
||||||
return ", shape=tab";
|
|
||||||
else if (name.equals("collaboration"))
|
|
||||||
return ", shape=ellipse, style=dashed";
|
|
||||||
else if (name.equals("usecase"))
|
|
||||||
return ", shape=ellipse";
|
|
||||||
else if (name.equals("activeclass"))
|
|
||||||
return ""; // Default; plaintext
|
|
||||||
else
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return the shape's GraphViz landing port */
|
/** Enum constructor, must be private! */
|
||||||
String landingPort() {
|
private Shape(String style) {
|
||||||
if (name.equals("class") || name.equals("activeclass"))
|
this.style = style;
|
||||||
return ":p";
|
|
||||||
else
|
|
||||||
return "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return the table border required for the shape */
|
/** Return the table border required for the shape */
|
||||||
String extraColumn() {
|
public String extraColumn() {
|
||||||
return name.equals("activeclass") ? ("<td rowspan=\"10\"></td>") : "";
|
return this == Shape.ACTIVECLASS ? ("<td rowspan=\"10\"></td>") : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return the cell border required for the shape */
|
/** Return the cell border required for the shape */
|
||||||
String cellBorder() {
|
public String cellBorder() {
|
||||||
return (name.equals("class") || name.equals("activeclass")) ? "1" : "0";
|
return this == CLASS || this == ACTIVECLASS ? "1" : "0";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -164,4 +164,68 @@ class StringUtil {
|
||||||
}
|
}
|
||||||
return buf.toString();
|
return buf.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String buildRelativePathFromClassNames(String contextPackageName, String classPackageName) {
|
||||||
|
// path, relative to the root, of the destination class
|
||||||
|
String[] contextClassPath = contextPackageName.split("\\.");
|
||||||
|
String[] currClassPath = classPackageName.split("\\.");
|
||||||
|
|
||||||
|
// compute relative path between the context and the destination
|
||||||
|
// ... first, compute common part
|
||||||
|
int i = 0, e = Math.min(contextClassPath.length, currClassPath.length);
|
||||||
|
while (i < e && contextClassPath[i].equals(currClassPath[i]))
|
||||||
|
i++;
|
||||||
|
// ... go up with ".." to reach the common root
|
||||||
|
StringBuilder buf = new StringBuilder(classPackageName.length());
|
||||||
|
for (int j = i; j < contextClassPath.length; j++)
|
||||||
|
buf.append("../");
|
||||||
|
// ... go down from the common root to the destination
|
||||||
|
for (int j = i; j < currClassPath.length; j++)
|
||||||
|
buf.append(currClassPath[j]).append('/'); // Always use HTML seperators
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We can't just always use the last dot, because there are inner classes. And
|
||||||
|
* these may have frequent names. But the prime example is
|
||||||
|
* {@link java.util.Map.Entry}, which we want to show up as package
|
||||||
|
* <tt>java.util</tt> and class <tt>Map.Entry</tt>.
|
||||||
|
* <p>
|
||||||
|
* Note: this is only a heuristic. We only have the string here, and must assume
|
||||||
|
* users adhere to Java conventions, of beginning package names with a lowercase
|
||||||
|
* letter.
|
||||||
|
*
|
||||||
|
* @param className
|
||||||
|
* @return Splitting point (Either referring to a dot, or -1)
|
||||||
|
*/
|
||||||
|
public static int splitPackageClass(String className) {
|
||||||
|
int gen = className.indexOf('<'); // Begin before generics.
|
||||||
|
int end = gen >= 0 ? gen : className.length();
|
||||||
|
int start = className.lastIndexOf('.', end);
|
||||||
|
// No package name special cases:
|
||||||
|
if (start < 0)
|
||||||
|
return gen >= 0 || className.isEmpty() ? -1 //
|
||||||
|
: Character.isLowerCase(className.charAt(0)) ? end : -1;
|
||||||
|
int split = end;
|
||||||
|
while (true) {
|
||||||
|
if (Character.isLowerCase(className.charAt(start + 1)))
|
||||||
|
return split;
|
||||||
|
split = start; // Continue, this looks like a class name.
|
||||||
|
if (start < 0)
|
||||||
|
return -1;
|
||||||
|
start = className.lastIndexOf('.', start - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format a double to a string.
|
||||||
|
* <p>
|
||||||
|
* Avoids printing "10.0" for exact values like 10.
|
||||||
|
*
|
||||||
|
* @param val Value
|
||||||
|
* @return Formatted value
|
||||||
|
*/
|
||||||
|
public static String fmt(double val) {
|
||||||
|
return val == Math.round(val) ? Long.toString((long) val) : Double.toString(val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,17 +25,12 @@ public class SubclassMatcher implements ClassMatcher {
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// recurse on supeclass, if available
|
// recurse on supeclass, if available
|
||||||
if(cd.superclass() != null)
|
return cd.superclass() == null ? false : matches(cd.superclass());
|
||||||
return matches(cd.superclass());
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean matches(String name) {
|
public boolean matches(String name) {
|
||||||
ClassDoc cd = root.classNamed(name);
|
ClassDoc cd = root.classNamed(name);
|
||||||
if(cd == null)
|
return cd == null ? false : matches(cd);
|
||||||
return false;
|
|
||||||
return matches(cd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ public class UmlGraph {
|
||||||
commentOptions = new Options();
|
commentOptions = new Options();
|
||||||
commentOptions.setOptions(root.options());
|
commentOptions.setOptions(root.options());
|
||||||
commentOptions.setOptions(findClass(root, "UMLNoteOptions"));
|
commentOptions.setOptions(findClass(root, "UMLNoteOptions"));
|
||||||
commentOptions.shape = new Shape("note");
|
commentOptions.shape = Shape.NOTE;
|
||||||
|
|
||||||
Options opt = new Options();
|
Options opt = new Options();
|
||||||
opt.setOptions(root.options());
|
opt.setOptions(root.options());
|
||||||
|
|
|
||||||
|
|
@ -62,12 +62,10 @@ public class UmlGraphDoc {
|
||||||
opt.strictMatching = true;
|
opt.strictMatching = true;
|
||||||
// root.printNotice(opt.toString());
|
// root.printNotice(opt.toString());
|
||||||
|
|
||||||
root = new WrappedRootDoc(root);
|
|
||||||
generatePackageDiagrams(root, opt, outputFolder);
|
generatePackageDiagrams(root, opt, outputFolder);
|
||||||
generateContextDiagrams(root, opt, outputFolder);
|
generateContextDiagrams(root, opt, outputFolder);
|
||||||
} catch(Throwable t) {
|
} catch(Throwable t) {
|
||||||
root.printWarning("Error!");
|
root.printWarning("Error: " + t.toString());
|
||||||
root.printWarning(t.toString());
|
|
||||||
t.printStackTrace();
|
t.printStackTrace();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* Automatically generated file */
|
/* Automatically generated file */
|
||||||
package org.umlgraph.doclet;
|
package org.umlgraph.doclet;
|
||||||
class Version { public static String VERSION = "R5_7_2-49-ge25953";}
|
class Version { public static String VERSION = "R5_7_2-60-g0e99a6";}
|
||||||
|
|
||||||
|
|
@ -140,36 +140,30 @@ public class View implements OptionProvider {
|
||||||
|
|
||||||
boolean outputSet = false;
|
boolean outputSet = false;
|
||||||
for (String[] opts : globalOptions) {
|
for (String[] opts : globalOptions) {
|
||||||
if (opts[0].equals("-output"))
|
if (Options.matchOption(opts[0], "output"))
|
||||||
outputSet = true;
|
outputSet = true;
|
||||||
go.setOption(opts);
|
go.setOption(opts);
|
||||||
}
|
}
|
||||||
if (!outputSet)
|
if (!outputSet)
|
||||||
go.setOption(new String[] { "-output", viewDoc.name() + ".dot" });
|
go.setOption(new String[] { "output", viewDoc.name() + ".dot" });
|
||||||
|
|
||||||
return go;
|
return go;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void overrideForClass(Options opt, ClassDoc cd) {
|
public void overrideForClass(Options opt, ClassDoc cd) {
|
||||||
provider.overrideForClass(opt, cd);
|
provider.overrideForClass(opt, cd);
|
||||||
for (ClassMatcher cm : optionOverrides.keySet()) {
|
for (ClassMatcher cm : optionOverrides.keySet())
|
||||||
if(cm.matches(cd)) {
|
if(cm.matches(cd))
|
||||||
for (String[] override : optionOverrides.get(cm)) {
|
for (String[] override : optionOverrides.get(cm))
|
||||||
opt.setOption(override);
|
opt.setOption(override);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void overrideForClass(Options opt, String className) {
|
public void overrideForClass(Options opt, String className) {
|
||||||
provider.overrideForClass(opt, className);
|
provider.overrideForClass(opt, className);
|
||||||
for (ClassMatcher cm : optionOverrides.keySet()) {
|
for (ClassMatcher cm : optionOverrides.keySet())
|
||||||
if(cm.matches(className)) {
|
if(cm.matches(className))
|
||||||
for (String[] override : optionOverrides.get(cm)) {
|
for (String[] override : optionOverrides.get(cm))
|
||||||
opt.setOption(override);
|
opt.setOption(override);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDisplayName() {
|
public String getDisplayName() {
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,15 @@ import com.sun.javadoc.ProgramElementDoc;
|
||||||
* Enumerates the possible visibilities in a Java program. For brevity, package
|
* Enumerates the possible visibilities in a Java program. For brevity, package
|
||||||
* private visibility is referred as PACKAGE.
|
* private visibility is referred as PACKAGE.
|
||||||
* @author wolf
|
* @author wolf
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public enum Visibility {
|
public enum Visibility {
|
||||||
PRIVATE, PACKAGE, PROTECTED, PUBLIC;
|
PRIVATE("- "), PACKAGE("~ "), PROTECTED("# "), PUBLIC("+ ");
|
||||||
|
|
||||||
|
final public String symbol;
|
||||||
|
|
||||||
|
private Visibility(String symbol) {
|
||||||
|
this.symbol = symbol;
|
||||||
|
}
|
||||||
|
|
||||||
public static Visibility get(ProgramElementDoc doc) {
|
public static Visibility get(ProgramElementDoc doc) {
|
||||||
if (doc.isPrivate())
|
if (doc.isPrivate())
|
||||||
|
|
@ -38,6 +43,5 @@ public enum Visibility {
|
||||||
return PROTECTED;
|
return PROTECTED;
|
||||||
else
|
else
|
||||||
return PUBLIC;
|
return PUBLIC;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,369 +0,0 @@
|
||||||
/*
|
|
||||||
* Create a graphviz graph based on the classes in the specified java
|
|
||||||
* source files.
|
|
||||||
*
|
|
||||||
* (C) Copyright 2002-2005 Diomidis Spinellis
|
|
||||||
*
|
|
||||||
* Permission to use, copy, and distribute this software and its
|
|
||||||
* documentation for any purpose and without fee is hereby granted,
|
|
||||||
* provided that the above copyright notice appear in all copies and that
|
|
||||||
* both that copyright notice and this permission notice appear in
|
|
||||||
* supporting documentation.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.umlgraph.doclet;
|
|
||||||
|
|
||||||
import com.sun.javadoc.AnnotatedType;
|
|
||||||
import com.sun.javadoc.AnnotationDesc;
|
|
||||||
import com.sun.javadoc.AnnotationTypeDoc;
|
|
||||||
import com.sun.javadoc.ClassDoc;
|
|
||||||
import com.sun.javadoc.ConstructorDoc;
|
|
||||||
import com.sun.javadoc.FieldDoc;
|
|
||||||
import com.sun.javadoc.MethodDoc;
|
|
||||||
import com.sun.javadoc.PackageDoc;
|
|
||||||
import com.sun.javadoc.ParamTag;
|
|
||||||
import com.sun.javadoc.ParameterizedType;
|
|
||||||
import com.sun.javadoc.SeeTag;
|
|
||||||
import com.sun.javadoc.SourcePosition;
|
|
||||||
import com.sun.javadoc.Tag;
|
|
||||||
import com.sun.javadoc.Type;
|
|
||||||
import com.sun.javadoc.TypeVariable;
|
|
||||||
import com.sun.javadoc.WildcardType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A ClassDoc wrapper that caches answer to the most common requests performed
|
|
||||||
* by UMLGraph, considerably improving the overall UMLDoc performance (ClassDoc
|
|
||||||
* computes most of the results for more fine grained information at each call).
|
|
||||||
* <p>
|
|
||||||
* Unfortunately this has a side effect, since it breaks the equals() call between
|
|
||||||
* plain ClassDoc instances and WrappedClassDoc ones, so use it with due care.
|
|
||||||
* <p>
|
|
||||||
* In particular, don't provide WrappedClassDoc instances to the standard doclet.
|
|
||||||
* @author wolf
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class WrappedClassDoc implements ClassDoc {
|
|
||||||
ClassDoc wrapped;
|
|
||||||
String toString;
|
|
||||||
String name;
|
|
||||||
Tag[] tags;
|
|
||||||
|
|
||||||
public WrappedClassDoc(ClassDoc wrapped) {
|
|
||||||
this.wrapped = wrapped;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AnnotationDesc[] annotations() {
|
|
||||||
return wrapped.annotations();
|
|
||||||
}
|
|
||||||
|
|
||||||
public AnnotationTypeDoc asAnnotationTypeDoc() {
|
|
||||||
return wrapped.asAnnotationTypeDoc();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc asClassDoc() {
|
|
||||||
return wrapped.asClassDoc();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ParameterizedType asParameterizedType() {
|
|
||||||
return wrapped.asParameterizedType();
|
|
||||||
}
|
|
||||||
|
|
||||||
public TypeVariable asTypeVariable() {
|
|
||||||
return wrapped.asTypeVariable();
|
|
||||||
}
|
|
||||||
|
|
||||||
public WildcardType asWildcardType() {
|
|
||||||
return wrapped.asWildcardType();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String commentText() {
|
|
||||||
return wrapped.commentText();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int compareTo(Object arg0) {
|
|
||||||
if (arg0 instanceof WrappedClassDoc) {
|
|
||||||
WrappedClassDoc other = (WrappedClassDoc) arg0;
|
|
||||||
return wrapped.compareTo(other.wrapped);
|
|
||||||
}
|
|
||||||
return wrapped.compareTo(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConstructorDoc[] constructors() {
|
|
||||||
return wrapped.constructors();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConstructorDoc[] constructors(boolean arg0) {
|
|
||||||
return wrapped.constructors(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc containingClass() {
|
|
||||||
return wrapped.containingClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
public PackageDoc containingPackage() {
|
|
||||||
return wrapped.containingPackage();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean definesSerializableFields() {
|
|
||||||
return wrapped.definesSerializableFields();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String dimension() {
|
|
||||||
return wrapped.dimension();
|
|
||||||
}
|
|
||||||
|
|
||||||
public FieldDoc[] enumConstants() {
|
|
||||||
return wrapped.enumConstants();
|
|
||||||
}
|
|
||||||
|
|
||||||
public FieldDoc[] fields() {
|
|
||||||
return wrapped.fields();
|
|
||||||
}
|
|
||||||
|
|
||||||
public FieldDoc[] fields(boolean arg0) {
|
|
||||||
return wrapped.fields(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc findClass(String arg0) {
|
|
||||||
return wrapped.findClass(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tag[] firstSentenceTags() {
|
|
||||||
return wrapped.firstSentenceTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRawCommentText() {
|
|
||||||
return wrapped.getRawCommentText();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated */
|
|
||||||
public @Deprecated ClassDoc[] importedClasses() {
|
|
||||||
return wrapped.importedClasses();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated */
|
|
||||||
public @Deprecated PackageDoc[] importedPackages() {
|
|
||||||
return wrapped.importedPackages();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tag[] inlineTags() {
|
|
||||||
return wrapped.inlineTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc[] innerClasses() {
|
|
||||||
return wrapped.innerClasses();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc[] innerClasses(boolean arg0) {
|
|
||||||
return wrapped.innerClasses(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc[] interfaces() {
|
|
||||||
return wrapped.interfaces();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Type[] interfaceTypes() {
|
|
||||||
return wrapped.interfaceTypes();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAbstract() {
|
|
||||||
return wrapped.isAbstract();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAnnotationType() {
|
|
||||||
return wrapped.isAnnotationType();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAnnotationTypeElement() {
|
|
||||||
return wrapped.isAnnotationTypeElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isClass() {
|
|
||||||
return wrapped.isClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isConstructor() {
|
|
||||||
return wrapped.isConstructor();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEnum() {
|
|
||||||
return wrapped.isEnum();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEnumConstant() {
|
|
||||||
return wrapped.isEnumConstant();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isError() {
|
|
||||||
return wrapped.isError();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isException() {
|
|
||||||
return wrapped.isException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isExternalizable() {
|
|
||||||
return wrapped.isExternalizable();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isField() {
|
|
||||||
return wrapped.isField();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isFinal() {
|
|
||||||
return wrapped.isFinal();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isIncluded() {
|
|
||||||
return wrapped.isIncluded();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isInterface() {
|
|
||||||
return wrapped.isInterface();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isMethod() {
|
|
||||||
return wrapped.isMethod();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isOrdinaryClass() {
|
|
||||||
return wrapped.isOrdinaryClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPackagePrivate() {
|
|
||||||
return wrapped.isPackagePrivate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPrimitive() {
|
|
||||||
return wrapped.isPrimitive();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPrivate() {
|
|
||||||
return wrapped.isPrivate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isProtected() {
|
|
||||||
return wrapped.isProtected();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPublic() {
|
|
||||||
return wrapped.isPublic();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSerializable() {
|
|
||||||
return wrapped.isSerializable();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isStatic() {
|
|
||||||
return wrapped.isStatic();
|
|
||||||
}
|
|
||||||
|
|
||||||
public MethodDoc[] methods() {
|
|
||||||
return wrapped.methods();
|
|
||||||
}
|
|
||||||
|
|
||||||
public MethodDoc[] methods(boolean arg0) {
|
|
||||||
return wrapped.methods(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String modifiers() {
|
|
||||||
return wrapped.modifiers();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int modifierSpecifier() {
|
|
||||||
return wrapped.modifierSpecifier();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String name() {
|
|
||||||
if (name == null)
|
|
||||||
name = wrapped.name();
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SourcePosition position() {
|
|
||||||
return wrapped.position();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String qualifiedName() {
|
|
||||||
return wrapped.qualifiedName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String qualifiedTypeName() {
|
|
||||||
return wrapped.qualifiedTypeName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SeeTag[] seeTags() {
|
|
||||||
return wrapped.seeTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public FieldDoc[] serializableFields() {
|
|
||||||
return wrapped.serializableFields();
|
|
||||||
}
|
|
||||||
|
|
||||||
public MethodDoc[] serializationMethods() {
|
|
||||||
return wrapped.serializationMethods();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRawCommentText(String arg0) {
|
|
||||||
wrapped.setRawCommentText(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String simpleTypeName() {
|
|
||||||
return wrapped.simpleTypeName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean subclassOf(ClassDoc arg0) {
|
|
||||||
return wrapped.subclassOf(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc superclass() {
|
|
||||||
return wrapped.superclass();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Type superclassType() {
|
|
||||||
return wrapped.superclassType();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tag[] tags() {
|
|
||||||
if (tags == null)
|
|
||||||
tags = wrapped.tags();
|
|
||||||
return tags;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tag[] tags(String arg0) {
|
|
||||||
return wrapped.tags(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
if (toString == null) {
|
|
||||||
toString = wrapped.toString();
|
|
||||||
}
|
|
||||||
return toString;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String typeName() {
|
|
||||||
return wrapped.typeName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public TypeVariable[] typeParameters() {
|
|
||||||
return wrapped.typeParameters();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ParamTag[] typeParamTags() {
|
|
||||||
return wrapped.typeParamTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public AnnotatedType asAnnotatedType() {
|
|
||||||
return wrapped.asAnnotatedType();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Type getElementType() {
|
|
||||||
return wrapped.getElementType();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,191 +0,0 @@
|
||||||
/*
|
|
||||||
* Create a graphviz graph based on the classes in the specified java
|
|
||||||
* source files.
|
|
||||||
*
|
|
||||||
* (C) Copyright 2002-2005 Diomidis Spinellis
|
|
||||||
*
|
|
||||||
* Permission to use, copy, and distribute this software and its
|
|
||||||
* documentation for any purpose and without fee is hereby granted,
|
|
||||||
* provided that the above copyright notice appear in all copies and that
|
|
||||||
* both that copyright notice and this permission notice appear in
|
|
||||||
* supporting documentation.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.umlgraph.doclet;
|
|
||||||
|
|
||||||
import com.sun.javadoc.ClassDoc;
|
|
||||||
import com.sun.javadoc.PackageDoc;
|
|
||||||
import com.sun.javadoc.RootDoc;
|
|
||||||
import com.sun.javadoc.SeeTag;
|
|
||||||
import com.sun.javadoc.SourcePosition;
|
|
||||||
import com.sun.javadoc.Tag;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* RootDoc wrapper that provides WrappedClassDoc instances instead of plain ClassDoc in order
|
|
||||||
* to optimize the overall performance of UMLDoc.
|
|
||||||
* @author wolf
|
|
||||||
*/
|
|
||||||
public class WrappedRootDoc implements RootDoc {
|
|
||||||
RootDoc wrapped;
|
|
||||||
WrappedClassDoc[] wrappedClassDocs;
|
|
||||||
|
|
||||||
public WrappedRootDoc(RootDoc wrapped) {
|
|
||||||
this.wrapped = wrapped;
|
|
||||||
ClassDoc[] classes = wrapped.classes();
|
|
||||||
wrappedClassDocs = new WrappedClassDoc[classes.length];
|
|
||||||
for (int i = 0; i < classes.length; i++) {
|
|
||||||
wrappedClassDocs[i] = new WrappedClassDoc(classes[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc[] classes() {
|
|
||||||
return wrappedClassDocs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc classNamed(String arg0) {
|
|
||||||
return wrapped.classNamed(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String commentText() {
|
|
||||||
return wrapped.commentText();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int compareTo(Object arg0) {
|
|
||||||
return wrapped.compareTo(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tag[] firstSentenceTags() {
|
|
||||||
return wrapped.firstSentenceTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRawCommentText() {
|
|
||||||
return wrapped.getRawCommentText();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tag[] inlineTags() {
|
|
||||||
return wrapped.inlineTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAnnotationType() {
|
|
||||||
return wrapped.isAnnotationType();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAnnotationTypeElement() {
|
|
||||||
return wrapped.isAnnotationTypeElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isClass() {
|
|
||||||
return wrapped.isClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isConstructor() {
|
|
||||||
return wrapped.isConstructor();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEnum() {
|
|
||||||
return wrapped.isEnum();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEnumConstant() {
|
|
||||||
return wrapped.isEnumConstant();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isError() {
|
|
||||||
return wrapped.isError();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isException() {
|
|
||||||
return wrapped.isException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isField() {
|
|
||||||
return wrapped.isField();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isIncluded() {
|
|
||||||
return wrapped.isIncluded();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isInterface() {
|
|
||||||
return wrapped.isInterface();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isMethod() {
|
|
||||||
return wrapped.isMethod();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isOrdinaryClass() {
|
|
||||||
return wrapped.isOrdinaryClass();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String name() {
|
|
||||||
return wrapped.name();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[][] options() {
|
|
||||||
return wrapped.options();
|
|
||||||
}
|
|
||||||
|
|
||||||
public PackageDoc packageNamed(String arg0) {
|
|
||||||
return wrapped.packageNamed(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SourcePosition position() {
|
|
||||||
return wrapped.position();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printError(SourcePosition arg0, String arg1) {
|
|
||||||
wrapped.printError(arg0, arg1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printError(String arg0) {
|
|
||||||
wrapped.printError(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printNotice(SourcePosition arg0, String arg1) {
|
|
||||||
wrapped.printNotice(arg0, arg1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printNotice(String arg0) {
|
|
||||||
wrapped.printNotice(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printWarning(SourcePosition arg0, String arg1) {
|
|
||||||
wrapped.printWarning(arg0, arg1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void printWarning(String arg0) {
|
|
||||||
wrapped.printWarning(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SeeTag[] seeTags() {
|
|
||||||
return wrapped.seeTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRawCommentText(String arg0) {
|
|
||||||
wrapped.setRawCommentText(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClassDoc[] specifiedClasses() {
|
|
||||||
return wrapped.specifiedClasses();
|
|
||||||
}
|
|
||||||
|
|
||||||
public PackageDoc[] specifiedPackages() {
|
|
||||||
return wrapped.specifiedPackages();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tag[] tags() {
|
|
||||||
return wrapped.tags();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tag[] tags(String arg0) {
|
|
||||||
return wrapped.tags(arg0);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -166,16 +166,15 @@ public class DotDiff {
|
||||||
int closedBracketIdx = line.lastIndexOf(']');
|
int closedBracketIdx = line.lastIndexOf(']');
|
||||||
int arrowIdx = line.indexOf("->");
|
int arrowIdx = line.indexOf("->");
|
||||||
if (openBrackedIdx < 0 && closedBracketIdx < 0 || line.startsWith("edge")
|
if (openBrackedIdx < 0 && closedBracketIdx < 0 || line.startsWith("edge")
|
||||||
|| line.startsWith("node"))
|
|| line.startsWith("node") || line.startsWith("graph"))
|
||||||
extraLines.add(line);
|
extraLines.add(line);
|
||||||
else if (arrowIdx > 0 && arrowIdx < openBrackedIdx) { // that's an arc
|
else if (arrowIdx > 0 && arrowIdx < openBrackedIdx) { // that's an arc
|
||||||
arcLines.add(line);
|
arcLines.add(line);
|
||||||
} else { // that's a node
|
} else { // that's a node
|
||||||
String attributes = line.substring(openBrackedIdx + 1, closedBracketIdx);
|
String attributes = line.substring(openBrackedIdx + 1, closedBracketIdx);
|
||||||
Map<String, String> attMap = parseAttributes(attributes);
|
Map<String, String> attMap = parseAttributes(attributes);
|
||||||
String name = line.substring(0, openBrackedIdx - 1).trim();
|
String name = trim(line.substring(0, openBrackedIdx - 1));
|
||||||
String label = attMap.get("label");
|
DotNode node = new DotNode(name, attMap.get("label"), attMap, line);
|
||||||
DotNode node = new DotNode(name, label, attMap, line);
|
|
||||||
nodes.put(name, node);
|
nodes.put(name, node);
|
||||||
nodeList.add(node);
|
nodeList.add(node);
|
||||||
}
|
}
|
||||||
|
|
@ -185,19 +184,21 @@ public class DotDiff {
|
||||||
int closedBracketIdx = line.lastIndexOf(']');
|
int closedBracketIdx = line.lastIndexOf(']');
|
||||||
String attributes = line.substring(openBrackedIdx + 1, closedBracketIdx);
|
String attributes = line.substring(openBrackedIdx + 1, closedBracketIdx);
|
||||||
String[] names = line.substring(0, openBrackedIdx).split("->");
|
String[] names = line.substring(0, openBrackedIdx).split("->");
|
||||||
DotNode from = nodes.get(names[0].trim());
|
DotNode from = nodes.get(names[0] = trim(names[0]));
|
||||||
DotNode to = nodes.get(names[1].trim());
|
DotNode to = nodes.get(names[1] = trim(names[1]));
|
||||||
if (from == null) {
|
from = from != null ? from : new DotNode(names[0], "", new HashMap<String, String>(), "");
|
||||||
from = new DotNode(names[0], "", new HashMap<String, String>(), "");
|
to = to != null? to : new DotNode(names[1], "", new HashMap<String, String>(), "");
|
||||||
}
|
|
||||||
if (to == null) {
|
|
||||||
to = new DotNode(names[1], "", new HashMap<String, String>(), "");
|
|
||||||
}
|
|
||||||
arcs.add(new DotArc(from, to, parseAttributes(attributes), line));
|
arcs.add(new DotArc(from, to, parseAttributes(attributes), line));
|
||||||
}
|
}
|
||||||
return extraLines;
|
return extraLines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Trim space AND port.
|
||||||
|
private String trim(String name) {
|
||||||
|
name = name.trim();
|
||||||
|
return name.endsWith(":p") ? name.substring(0, name.length() - 2) : name;
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String, String> parseAttributes(String attributes) throws IOException {
|
private Map<String, String> parseAttributes(String attributes) throws IOException {
|
||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<String, String>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,21 +5,22 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// test.AbstractNode
|
ranksep=0.5;
|
||||||
c1 [label=<<table title="test.AbstractNode" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="Helvetica-Oblique"> AbstractNode </font></td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> abstractMethod() </font></td></tr><tr><td align="left" balign="left"> concreteMethod() </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// test.AbstractNode
|
||||||
// test.InnerNode
|
c1 [label=<<table title="test.AbstractNode" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><i> AbstractNode </i></td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"><i> abstractMethod() </i></td></tr><tr><td align="left" balign="left"> concreteMethod() </td></tr></table></td></tr></table>>];
|
||||||
c2 [label=<<table title="test.InnerNode" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InnerNode </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// test.InnerNode
|
||||||
// test.Leaf
|
c2 [label=<<table title="test.InnerNode" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InnerNode </td></tr></table></td></tr></table>>];
|
||||||
c3 [label=<<table title="test.Leaf" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Leaf </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// test.Leaf
|
||||||
//test.InnerNode extends test.AbstractNode
|
c3 [label=<<table title="test.Leaf" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Leaf </td></tr></table></td></tr></table>>];
|
||||||
c1:p -> c2:p [dir=back,arrowtail=empty];
|
// test.InnerNode extends test.AbstractNode
|
||||||
// test.InnerNode COMPOSED test.AbstractNode
|
c1 -> c2 [arrowtail=empty,dir=back,weight=10];
|
||||||
c2:p -> c1:p [taillabel="1", label="has", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// test.InnerNode composed test.AbstractNode
|
||||||
//test.Leaf extends test.AbstractNode
|
c2 -> c1 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1", label="has", headlabel="*"];
|
||||||
c1:p -> c3:p [dir=back,arrowtail=empty];
|
// test.Leaf extends test.AbstractNode
|
||||||
|
c1 -> c3 [arrowtail=empty,dir=back,weight=10];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,45 +5,46 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// A
|
ranksep=0.5;
|
||||||
c66 [label=<<table title="A" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> A </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> first : B </td></tr><tr><td align="left" balign="left"> second : B </td></tr><tr><td align="left" balign="left"> third : C </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// A
|
||||||
// B
|
c66 [label=<<table title="A" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> A </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> first : B </td></tr><tr><td align="left" balign="left"> second : B </td></tr><tr><td align="left" balign="left"> third : C </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c67 [label=<<table title="B" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> B </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> doSomething(b : B, c : C) : A </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// B
|
||||||
// C
|
c67 [label=<<table title="B" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> B </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> doSomething(b : B, c : C) : A </td></tr></table></td></tr></table>>];
|
||||||
c68 [label=<<table title="C" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> C </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> collectionOfA : List<A> </td></tr><tr><td align="left" balign="left"> collectionOfB : ArrayList<B> </td></tr><tr><td align="left" balign="left"> mapOfD : Map<String, D> </td></tr><tr><td align="left" balign="left"> childs : C[] </td></tr><tr><td align="left" balign="left"> anOpaqueList : List<> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// C
|
||||||
// MyFunnyList<T, V>
|
c68 [label=<<table title="C" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> C </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> collectionOfA : List<A> </td></tr><tr><td align="left" balign="left"> collectionOfB : ArrayList<B> </td></tr><tr><td align="left" balign="left"> mapOfD : Map<String, D> </td></tr><tr><td align="left" balign="left"> childs : C[] </td></tr><tr><td align="left" balign="left"> anOpaqueList : List<> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c69 [label=<<table title="MyFunnyList" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> MyFunnyList<T, V> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> myField : V </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// MyFunnyList<T, V>
|
||||||
// MyList
|
c69 [label=<<table title="MyFunnyList" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> MyFunnyList<T, V> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> myField : V </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c70 [label=<<table title="MyList" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> MyList </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// MyList
|
||||||
// D
|
c70 [label=<<table title="MyList" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> MyList </td></tr></table></td></tr></table>>];
|
||||||
c71 [label=<<table title="D" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> D </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> anotherListOfA : MyList </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// D
|
||||||
//MyFunnyList<T, V> extends java.util.ArrayList<T>
|
c71 [label=<<table title="D" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> D </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> anotherListOfA : MyList </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c72:p -> c69:p [dir=back,arrowtail=empty];
|
// MyFunnyList<T, V> extends java.util.ArrayList<T>
|
||||||
//MyList extends MyFunnyList<A, B>
|
c72 -> c69 [arrowtail=empty,dir=back,weight=10];
|
||||||
c69:p -> c70:p [dir=back,arrowtail=empty];
|
// MyList extends MyFunnyList<A, B>
|
||||||
// A HAS B
|
c69 -> c70 [arrowtail=empty,dir=back,weight=10];
|
||||||
c66:p -> c67:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=ediamond, dir=both];
|
// A has B
|
||||||
// A HAS C
|
c66 -> c67 [arrowhead=none,arrowtail=ediamond,dir=back,weight=4];
|
||||||
c66:p -> c68:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=ediamond, dir=both];
|
// A has C
|
||||||
// C NAVASSOC B
|
c66 -> c68 [arrowhead=none,arrowtail=ediamond,dir=back,weight=4];
|
||||||
c68:p -> c67:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// C navassoc B
|
||||||
// C NAVASSOC D
|
c68 -> c67 [arrowhead=open,weight=1,headlabel="*"];
|
||||||
c68:p -> c71:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// C navassoc D
|
||||||
// C NAVASSOC C
|
c68 -> c71 [arrowhead=open,weight=1,headlabel="*"];
|
||||||
c68:p -> c68:p [taillabel="", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// C navassoc C
|
||||||
// C NAVASSOC java.util.List<E>
|
c68 -> c68 [arrowhead=open,weight=1,headlabel="*"];
|
||||||
c68:p -> c73:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// C navassoc java.util.List<E>
|
||||||
// D NAVASSOC MyList
|
c68 -> c73 [arrowhead=open,weight=1];
|
||||||
c71:p -> c70:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// D navassoc MyList
|
||||||
// B DEPEND A
|
c71 -> c70 [arrowhead=open,weight=1];
|
||||||
c67:p -> c66:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
|
// B depend A
|
||||||
// java.util.List<E>
|
c67 -> c66 [arrowhead=open,style=dashed,weight=0];
|
||||||
c73 [label=<<table title="java.util.List" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> List<E> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> size() : int </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> isEmpty() : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> contains(arg0 : Object) : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> iterator() : Iterator<E> </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> toArray() : Object[] </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> toArray(arg0 : T[]) : T[] </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> add(arg0 : E) : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> remove(arg0 : Object) : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> containsAll(arg0 : Collection<?>) : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> addAll(arg0 : Collection<?>) : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> addAll(arg0 : int, arg1 : Collection<?>) : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> removeAll(arg0 : Collection<?>) : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> retainAll(arg0 : Collection<?>) : boolean </font></td></tr><tr><td align="left" balign="left"> replaceAll(arg0 : UnaryOperator<E>) </td></tr><tr><td align="left" balign="left"> sort(arg0 : Comparator<?>) </td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> clear() </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> equals(arg0 : Object) : boolean </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> hashCode() : int </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> get(arg0 : int) : E </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> set(arg0 : int, arg1 : E) : E </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> add(arg0 : int, arg1 : E) </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> remove(arg0 : int) : E </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> indexOf(arg0 : Object) : int </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> lastIndexOf(arg0 : Object) : int </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> listIterator() : ListIterator<E> </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> listIterator(arg0 : int) : ListIterator<E> </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> subList(arg0 : int, arg1 : int) : List<E> </font></td></tr><tr><td align="left" balign="left"> spliterator() : Spliterator<E> </td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/java/util/List.html", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// java.util.List<E>
|
||||||
// java.util.ArrayList<E>
|
c73 [label=<<table title="java.util.List" border="0" cellborder="1" cellspacing="0" cellpadding="2" href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> List<E> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"><i> size() : int </i></td></tr><tr><td align="left" balign="left"><i> isEmpty() : boolean </i></td></tr><tr><td align="left" balign="left"><i> contains(arg0 : Object) : boolean </i></td></tr><tr><td align="left" balign="left"><i> iterator() : Iterator<E> </i></td></tr><tr><td align="left" balign="left"><i> toArray() : Object[] </i></td></tr><tr><td align="left" balign="left"><i> toArray(arg0 : T[]) : T[] </i></td></tr><tr><td align="left" balign="left"><i> add(arg0 : E) : boolean </i></td></tr><tr><td align="left" balign="left"><i> remove(arg0 : Object) : boolean </i></td></tr><tr><td align="left" balign="left"><i> containsAll(arg0 : Collection<?>) : boolean </i></td></tr><tr><td align="left" balign="left"><i> addAll(arg0 : Collection<?>) : boolean </i></td></tr><tr><td align="left" balign="left"><i> addAll(arg0 : int, arg1 : Collection<?>) : boolean </i></td></tr><tr><td align="left" balign="left"><i> removeAll(arg0 : Collection<?>) : boolean </i></td></tr><tr><td align="left" balign="left"><i> retainAll(arg0 : Collection<?>) : boolean </i></td></tr><tr><td align="left" balign="left"> replaceAll(arg0 : UnaryOperator<E>) </td></tr><tr><td align="left" balign="left"> sort(arg0 : Comparator<?>) </td></tr><tr><td align="left" balign="left"><i> clear() </i></td></tr><tr><td align="left" balign="left"><i> equals(arg0 : Object) : boolean </i></td></tr><tr><td align="left" balign="left"><i> hashCode() : int </i></td></tr><tr><td align="left" balign="left"><i> get(arg0 : int) : E </i></td></tr><tr><td align="left" balign="left"><i> set(arg0 : int, arg1 : E) : E </i></td></tr><tr><td align="left" balign="left"><i> add(arg0 : int, arg1 : E) </i></td></tr><tr><td align="left" balign="left"><i> remove(arg0 : int) : E </i></td></tr><tr><td align="left" balign="left"><i> indexOf(arg0 : Object) : int </i></td></tr><tr><td align="left" balign="left"><i> lastIndexOf(arg0 : Object) : int </i></td></tr><tr><td align="left" balign="left"><i> listIterator() : ListIterator<E> </i></td></tr><tr><td align="left" balign="left"><i> listIterator(arg0 : int) : ListIterator<E> </i></td></tr><tr><td align="left" balign="left"><i> subList(arg0 : int, arg1 : int) : List<E> </i></td></tr><tr><td align="left" balign="left"> spliterator() : Spliterator<E> </td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/java/util/List.html"];
|
||||||
c72 [label=<<table title="java.util.ArrayList" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ArrayList<E> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> serialVersionUID : long </td></tr><tr><td align="left" balign="left"> DEFAULT_CAPACITY : int </td></tr><tr><td align="left" balign="left"> EMPTY_ELEMENTDATA : Object[] </td></tr><tr><td align="left" balign="left"> DEFAULTCAPACITY_EMPTY_ELEMENTDATA : Object[] </td></tr><tr><td align="left" balign="left"> elementData : Object[] </td></tr><tr><td align="left" balign="left"> size : int </td></tr><tr><td align="left" balign="left"> MAX_ARRAY_SIZE : int </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> trimToSize() </td></tr><tr><td align="left" balign="left"> ensureCapacity(arg0 : int) </td></tr><tr><td align="left" balign="left"> ensureCapacityInternal(arg0 : int) </td></tr><tr><td align="left" balign="left"> ensureExplicitCapacity(arg0 : int) </td></tr><tr><td align="left" balign="left"> grow(arg0 : int) </td></tr><tr><td align="left" balign="left"> hugeCapacity(arg0 : int) : int </td></tr><tr><td align="left" balign="left"> size() : int </td></tr><tr><td align="left" balign="left"> isEmpty() : boolean </td></tr><tr><td align="left" balign="left"> contains(arg0 : Object) : boolean </td></tr><tr><td align="left" balign="left"> indexOf(arg0 : Object) : int </td></tr><tr><td align="left" balign="left"> lastIndexOf(arg0 : Object) : int </td></tr><tr><td align="left" balign="left"> clone() : Object </td></tr><tr><td align="left" balign="left"> toArray() : Object[] </td></tr><tr><td align="left" balign="left"> toArray(arg0 : T[]) : T[] </td></tr><tr><td align="left" balign="left"> elementData(arg0 : int) : E </td></tr><tr><td align="left" balign="left"> get(arg0 : int) : E </td></tr><tr><td align="left" balign="left"> set(arg0 : int, arg1 : E) : E </td></tr><tr><td align="left" balign="left"> add(arg0 : E) : boolean </td></tr><tr><td align="left" balign="left"> add(arg0 : int, arg1 : E) </td></tr><tr><td align="left" balign="left"> remove(arg0 : int) : E </td></tr><tr><td align="left" balign="left"> remove(arg0 : Object) : boolean </td></tr><tr><td align="left" balign="left"> fastRemove(arg0 : int) </td></tr><tr><td align="left" balign="left"> clear() </td></tr><tr><td align="left" balign="left"> addAll(arg0 : Collection<?>) : boolean </td></tr><tr><td align="left" balign="left"> addAll(arg0 : int, arg1 : Collection<?>) : boolean </td></tr><tr><td align="left" balign="left"> removeRange(arg0 : int, arg1 : int) </td></tr><tr><td align="left" balign="left"> rangeCheck(arg0 : int) </td></tr><tr><td align="left" balign="left"> rangeCheckForAdd(arg0 : int) </td></tr><tr><td align="left" balign="left"> outOfBoundsMsg(arg0 : int) : String </td></tr><tr><td align="left" balign="left"> removeAll(arg0 : Collection<?>) : boolean </td></tr><tr><td align="left" balign="left"> retainAll(arg0 : Collection<?>) : boolean </td></tr><tr><td align="left" balign="left"> batchRemove(arg0 : Collection<?>, arg1 : boolean) : boolean </td></tr><tr><td align="left" balign="left"> writeObject(arg0 : ObjectOutputStream) </td></tr><tr><td align="left" balign="left"> readObject(arg0 : ObjectInputStream) </td></tr><tr><td align="left" balign="left"> listIterator(arg0 : int) : ListIterator<E> </td></tr><tr><td align="left" balign="left"> listIterator() : ListIterator<E> </td></tr><tr><td align="left" balign="left"> iterator() : Iterator<E> </td></tr><tr><td align="left" balign="left"> subList(arg0 : int, arg1 : int) : List<E> </td></tr><tr><td align="left" balign="left"> subListRangeCheck(arg0 : int, arg1 : int, arg2 : int) </td></tr><tr><td align="left" balign="left"> forEach(arg0 : Consumer<?>) </td></tr><tr><td align="left" balign="left"> spliterator() : Spliterator<E> </td></tr><tr><td align="left" balign="left"> removeIf(arg0 : Predicate<?>) : boolean </td></tr><tr><td align="left" balign="left"> replaceAll(arg0 : UnaryOperator<E>) </td></tr><tr><td align="left" balign="left"> sort(arg0 : Comparator<?>) </td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// java.util.ArrayList<E>
|
||||||
|
c72 [label=<<table title="java.util.ArrayList" border="0" cellborder="1" cellspacing="0" cellpadding="2" href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ArrayList<E> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> serialVersionUID : long </td></tr><tr><td align="left" balign="left"> DEFAULT_CAPACITY : int </td></tr><tr><td align="left" balign="left"> EMPTY_ELEMENTDATA : Object[] </td></tr><tr><td align="left" balign="left"> DEFAULTCAPACITY_EMPTY_ELEMENTDATA : Object[] </td></tr><tr><td align="left" balign="left"> elementData : Object[] </td></tr><tr><td align="left" balign="left"> size : int </td></tr><tr><td align="left" balign="left"> MAX_ARRAY_SIZE : int </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> trimToSize() </td></tr><tr><td align="left" balign="left"> ensureCapacity(arg0 : int) </td></tr><tr><td align="left" balign="left"> ensureCapacityInternal(arg0 : int) </td></tr><tr><td align="left" balign="left"> ensureExplicitCapacity(arg0 : int) </td></tr><tr><td align="left" balign="left"> grow(arg0 : int) </td></tr><tr><td align="left" balign="left"> hugeCapacity(arg0 : int) : int </td></tr><tr><td align="left" balign="left"> size() : int </td></tr><tr><td align="left" balign="left"> isEmpty() : boolean </td></tr><tr><td align="left" balign="left"> contains(arg0 : Object) : boolean </td></tr><tr><td align="left" balign="left"> indexOf(arg0 : Object) : int </td></tr><tr><td align="left" balign="left"> lastIndexOf(arg0 : Object) : int </td></tr><tr><td align="left" balign="left"> clone() : Object </td></tr><tr><td align="left" balign="left"> toArray() : Object[] </td></tr><tr><td align="left" balign="left"> toArray(arg0 : T[]) : T[] </td></tr><tr><td align="left" balign="left"> elementData(arg0 : int) : E </td></tr><tr><td align="left" balign="left"> get(arg0 : int) : E </td></tr><tr><td align="left" balign="left"> set(arg0 : int, arg1 : E) : E </td></tr><tr><td align="left" balign="left"> add(arg0 : E) : boolean </td></tr><tr><td align="left" balign="left"> add(arg0 : int, arg1 : E) </td></tr><tr><td align="left" balign="left"> remove(arg0 : int) : E </td></tr><tr><td align="left" balign="left"> remove(arg0 : Object) : boolean </td></tr><tr><td align="left" balign="left"> fastRemove(arg0 : int) </td></tr><tr><td align="left" balign="left"> clear() </td></tr><tr><td align="left" balign="left"> addAll(arg0 : Collection<?>) : boolean </td></tr><tr><td align="left" balign="left"> addAll(arg0 : int, arg1 : Collection<?>) : boolean </td></tr><tr><td align="left" balign="left"> removeRange(arg0 : int, arg1 : int) </td></tr><tr><td align="left" balign="left"> rangeCheck(arg0 : int) </td></tr><tr><td align="left" balign="left"> rangeCheckForAdd(arg0 : int) </td></tr><tr><td align="left" balign="left"> outOfBoundsMsg(arg0 : int) : String </td></tr><tr><td align="left" balign="left"> removeAll(arg0 : Collection<?>) : boolean </td></tr><tr><td align="left" balign="left"> retainAll(arg0 : Collection<?>) : boolean </td></tr><tr><td align="left" balign="left"> batchRemove(arg0 : Collection<?>, arg1 : boolean) : boolean </td></tr><tr><td align="left" balign="left"> writeObject(arg0 : ObjectOutputStream) </td></tr><tr><td align="left" balign="left"> readObject(arg0 : ObjectInputStream) </td></tr><tr><td align="left" balign="left"> listIterator(arg0 : int) : ListIterator<E> </td></tr><tr><td align="left" balign="left"> listIterator() : ListIterator<E> </td></tr><tr><td align="left" balign="left"> iterator() : Iterator<E> </td></tr><tr><td align="left" balign="left"> subList(arg0 : int, arg1 : int) : List<E> </td></tr><tr><td align="left" balign="left"> subListRangeCheck(arg0 : int, arg1 : int, arg2 : int) </td></tr><tr><td align="left" balign="left"> forEach(arg0 : Consumer<?>) </td></tr><tr><td align="left" balign="left"> spliterator() : Spliterator<E> </td></tr><tr><td align="left" balign="left"> removeIf(arg0 : Predicate<?>) : boolean </td></tr><tr><td align="left" balign="left"> replaceAll(arg0 : UnaryOperator<E>) </td></tr><tr><td align="left" balign="left"> sort(arg0 : Comparator<?>) </td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,19 +5,20 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Application
|
ranksep=0.5;
|
||||||
c74 [label=<<table title="Application" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Application </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Application
|
||||||
// IrpApplication
|
c74 [label=<<table title="Application" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Application </td></tr></table></td></tr></table>>];
|
||||||
c75 [label=<<table title="IrpApplication" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> IrpApplication </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// IrpApplication
|
||||||
// Main
|
c75 [label=<<table title="IrpApplication" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> IrpApplication </td></tr></table></td></tr></table>>];
|
||||||
c76 [label=<<table title="Main" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Main </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Main
|
||||||
//IrpApplication extends Application
|
c76 [label=<<table title="Main" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Main </td></tr></table></td></tr></table>>];
|
||||||
c74:p -> c75:p [dir=back,arrowtail=empty];
|
// IrpApplication extends Application
|
||||||
// Main DEPEND IrpApplication
|
c74 -> c75 [arrowtail=empty,dir=back,weight=10];
|
||||||
c76:p -> c75:p [taillabel="", label="«friend»", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
|
// Main depend IrpApplication
|
||||||
|
c76 -> c75 [arrowhead=open,style=dashed,weight=0,label="«friend»"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,16 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// A
|
ranksep=0.5;
|
||||||
c81 [label=<<table title="A" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> A </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// A
|
||||||
// C
|
c81 [label=<<table title="A" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> A </td></tr></table></td></tr></table>>];
|
||||||
c83 [label=<<table title="C" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> C </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// C
|
||||||
// A DEPEND C
|
c83 [label=<<table title="C" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> C </td></tr></table></td></tr></table>>];
|
||||||
c81:p -> c83:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
|
// A depend C
|
||||||
|
c81 -> c83 [arrowhead=open,style=dashed,weight=0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -5,43 +5,44 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Root
|
ranksep=0.5;
|
||||||
c90 [label=<<table title="Root" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Root </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Root
|
||||||
// Adapter
|
c90 [label=<<table title="Root" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Root </td></tr></table></td></tr></table>>];
|
||||||
c91 [label=<<table title="Adapter" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Adapter </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Adapter
|
||||||
// Element
|
c91 [label=<<table title="Adapter" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Adapter </td></tr></table></td></tr></table>>];
|
||||||
c92 [label=<<table title="Element" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="Helvetica-Oblique"> Element </font></td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Element
|
||||||
// ObjectType
|
c92 [label=<<table title="Element" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><i> Element </i></td></tr></table></td></tr></table>>];
|
||||||
c93 [label=<<table title="ObjectType" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ObjectType </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// ObjectType
|
||||||
// ObjectMap
|
c93 [label=<<table title="ObjectType" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ObjectType </td></tr></table></td></tr></table>>];
|
||||||
c94 [label=<<table title="ObjectMap" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ObjectMap </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// ObjectMap
|
||||||
// Table
|
c94 [label=<<table title="ObjectMap" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ObjectMap </td></tr></table></td></tr></table>>];
|
||||||
c95 [label=<<table title="Table" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Table </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Table
|
||||||
// DataOperation
|
c95 [label=<<table title="Table" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Table </td></tr></table></td></tr></table>>];
|
||||||
c96 [label=<<table title="DataOperation" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> DataOperation </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// DataOperation
|
||||||
// Root ASSOC Adapter
|
c96 [label=<<table title="DataOperation" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> DataOperation </td></tr></table></td></tr></table>>];
|
||||||
c90:p -> c91:p [taillabel="1..1", label="", headlabel="0..n", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Root assoc Adapter
|
||||||
// Root ASSOC ObjectType
|
c90 -> c91 [arrowhead=none,weight=2,taillabel="1..1", headlabel="0..n"];
|
||||||
c90:p -> c93:p [taillabel="", label="", headlabel="0..n", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Root assoc ObjectType
|
||||||
// Root ASSOC ObjectMap
|
c90 -> c93 [arrowhead=none,weight=2,headlabel="0..n"];
|
||||||
c90:p -> c94:p [taillabel="", label="", headlabel="0..n", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Root assoc ObjectMap
|
||||||
// Root ASSOC Table
|
c90 -> c94 [arrowhead=none,weight=2,headlabel="0..n"];
|
||||||
c90:p -> c95:p [taillabel="", label="", headlabel="0..n", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Root assoc Table
|
||||||
// Root ASSOC DataOperation
|
c90 -> c95 [arrowhead=none,weight=2,headlabel="0..n"];
|
||||||
c90:p -> c96:p [taillabel="", label="", headlabel="0..n", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Root assoc DataOperation
|
||||||
//ObjectType extends Element
|
c90 -> c96 [arrowhead=none,weight=2,headlabel="0..n"];
|
||||||
c92:p -> c93:p [dir=back,arrowtail=empty];
|
// ObjectType extends Element
|
||||||
//ObjectMap extends Element
|
c92 -> c93 [arrowtail=empty,dir=back,weight=10];
|
||||||
c92:p -> c94:p [dir=back,arrowtail=empty];
|
// ObjectMap extends Element
|
||||||
// ObjectMap HAS ObjectType
|
c92 -> c94 [arrowtail=empty,dir=back,weight=10];
|
||||||
c94:p -> c93:p [taillabel="1..1", label="", headlabel="1..1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=ediamond, dir=both];
|
// ObjectMap has ObjectType
|
||||||
//Table extends Element
|
c94 -> c93 [arrowhead=none,arrowtail=ediamond,dir=back,weight=4,taillabel="1..1", headlabel="1..1"];
|
||||||
c92:p -> c95:p [dir=back,arrowtail=empty];
|
// Table extends Element
|
||||||
//DataOperation extends Element
|
c92 -> c95 [arrowtail=empty,dir=back,weight=10];
|
||||||
c92:p -> c96:p [dir=back,arrowtail=empty];
|
// DataOperation extends Element
|
||||||
|
c92 -> c96 [arrowtail=empty,dir=back,weight=10];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,16 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// test.RunnableRef
|
ranksep=0.5;
|
||||||
c98 [label=<<table title="test.RunnableRef" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> RunnableRef </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// test.RunnableRef
|
||||||
// test.RunnableRef DEPEND java.lang.Runnable
|
c98 [label=<<table title="test.RunnableRef" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> RunnableRef </td></tr></table></td></tr></table>>];
|
||||||
c98:p -> c99:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
|
// test.RunnableRef depend java.lang.Runnable
|
||||||
// java.lang.Runnable
|
c98 -> c99 [arrowhead=open,style=dashed,weight=0];
|
||||||
c99 [label=<<table title="java.lang.Runnable" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> Runnable </td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// java.lang.Runnable
|
||||||
|
c99 [label=<<table title="java.lang.Runnable" border="0" cellborder="1" cellspacing="0" cellpadding="2" href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> Runnable </td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,23 +5,24 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="arial",fontsize=10,labelfontname="arial",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="arial",fontsize=10,shape=plaintext];
|
edge [fontname="arial",fontsize=10,labelfontname="arial",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="arial",fontcolor="black",fontsize=9,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// net.sf.whatever.test.AbstractBase
|
ranksep=0.5;
|
||||||
c112 [label=<<table title="net.sf.whatever.test.AbstractBase" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «base» </td></tr><tr><td align="center" balign="center"><font face="arial"> AbstractBase </font></td></tr><tr><td align="center" balign="center"><font point-size="8.0"> net.sf.whatever.test </font></td></tr><tr><td align="right" balign="right"><font face="arial" point-size="6.0"> {since = 1.0} </font></td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> field : int </td></tr><tr><td align="right" balign="right"><font face="arial" point-size="6.0"> {since = 1.5} </font></td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="9.0"> abstractMethod() </font></td></tr><tr><td align="left" balign="left"> concreteMethod() : int </td></tr></table></td></tr></table>>, URL="null", fontname="arial", fontcolor="black", fontsize=9.0];
|
// net.sf.whatever.test.AbstractBase
|
||||||
// net.sf.whatever.test.Composite
|
c112 [label=<<table title="net.sf.whatever.test.AbstractBase" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «base» </td></tr><tr><td align="center" balign="center"><font face="arial"> AbstractBase </font></td></tr><tr><td align="center" balign="center"><font point-size="8.0"> net.sf.whatever.test </font></td></tr><tr><td align="right" balign="right"><font face="arial" point-size="6.0"> {since = 1.0} </font></td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> field : int </td></tr><tr><td align="right" balign="right"><font face="arial" point-size="6.0"> {since = 1.5} </font></td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"><i> abstractMethod() </i></td></tr><tr><td align="left" balign="left"> concreteMethod() : int </td></tr></table></td></tr></table>>];
|
||||||
c113 [label=<<table title="net.sf.whatever.test.Composite" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="arial"> Composite </font></td></tr><tr><td align="center" balign="center"><font point-size="8.0"> net.sf.whatever.test </font></td></tr></table></td></tr></table>>, URL="null", fontname="arial", fontcolor="black", fontsize=9.0];
|
// net.sf.whatever.test.Composite
|
||||||
// net.sf.whatever.test.Style
|
c113 [label=<<table title="net.sf.whatever.test.Composite" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="arial"> Composite </font></td></tr><tr><td align="center" balign="center"><font point-size="8.0"> net.sf.whatever.test </font></td></tr></table></td></tr></table>>];
|
||||||
c114 [label=<<table title="net.sf.whatever.test.Style" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="arial"> Style </font></td></tr><tr><td align="center" balign="center"><font point-size="8.0"> net.sf.whatever.test </font></td></tr></table></td></tr></table>>, URL="null", fontname="arial", fontcolor="black", fontsize=9.0];
|
// net.sf.whatever.test.Style
|
||||||
//net.sf.whatever.test.Composite extends net.sf.whatever.test.AbstractBase
|
c114 [label=<<table title="net.sf.whatever.test.Style" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="arial"> Style </font></td></tr><tr><td align="center" balign="center"><font point-size="8.0"> net.sf.whatever.test </font></td></tr></table></td></tr></table>>];
|
||||||
c112:p -> c113:p [dir=back,arrowtail=empty];
|
// net.sf.whatever.test.Composite extends net.sf.whatever.test.AbstractBase
|
||||||
// net.sf.whatever.test.Composite COMPOSED from.Outer.Space.AlienClass
|
c112 -> c113 [arrowtail=empty,dir=back,weight=10];
|
||||||
c113:p -> c115:p [taillabel="1", label="has", headlabel="*", fontname="arial", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// net.sf.whatever.test.Composite composed from.Outer.Space.AlienClass
|
||||||
//net.sf.whatever.test.Style extends net.sf.whatever.test.AbstractBase
|
c113 -> c115 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1",label="has",headlabel="*"];
|
||||||
c112:p -> c114:p [dir=back,arrowtail=empty];
|
// net.sf.whatever.test.Style extends net.sf.whatever.test.AbstractBase
|
||||||
// from.Outer.Space.AlienClass
|
c112 -> c114 [arrowtail=empty,dir=back,weight=10];
|
||||||
c115[label=<<table title="from.Outer.Space.AlienClass" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" href="http://docs.oracle.com/javase/7/docs/api/from/Outer/Space/AlienClass.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="arial"> AlienClass </font></td></tr><tr><td align="center" balign="center"><font point-size="8.0"> from.Outer.Space </font></td></tr></table></td></tr></table>>, fontname="arial", fontcolor="black", fontsize=9.0];
|
// from.Outer.Space.AlienClass
|
||||||
|
c115[label=<<table title="from.Outer.Space.AlienClass" border="0" cellborder="1" cellspacing="0" cellpadding="2" href="http://docs.oracle.com/javase/7/docs/api/from/Outer.Space.AlienClass.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="arial"> AlienClass </font></td></tr><tr><td align="center" balign="center"><font point-size="8.0"> from.Outer.Space </font></td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,12 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// test.TestHideOp
|
ranksep=0.5;
|
||||||
c117 [label=<<table title="test.TestHideOp" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> TestHideOp </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// test.TestHideOp
|
||||||
|
c117 [label=<<table title="test.TestHideOp" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> TestHideOp </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,27 +5,28 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.basic.invoice.InvoiceItem
|
ranksep=0.5;
|
||||||
c355 [label=<<table title="gr.spinellis.basic.invoice.InvoiceItem" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InvoiceItem </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.InvoiceItem
|
||||||
// gr.spinellis.basic.invoice.Invoice
|
c355 [label=<<table title="gr.spinellis.basic.invoice.InvoiceItem" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InvoiceItem </td></tr></table></td></tr></table>>];
|
||||||
c356 [label=<<table title="gr.spinellis.basic.invoice.Invoice" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Invoice </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.Invoice
|
||||||
// gr.spinellis.basic.invoice.Customer
|
c356 [label=<<table title="gr.spinellis.basic.invoice.Invoice" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Invoice </td></tr></table></td></tr></table>>];
|
||||||
c357 [label=<<table title="gr.spinellis.basic.invoice.Customer" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Customer </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.Customer
|
||||||
// gr.spinellis.basic.product.Product
|
c357 [label=<<table title="gr.spinellis.basic.invoice.Customer" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Customer </td></tr></table></td></tr></table>>];
|
||||||
c358 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.product.Category
|
c358 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr></table>>];
|
||||||
c359 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Category
|
||||||
// gr.spinellis.basic.invoice.InvoiceItem ASSOC gr.spinellis.basic.product.Product
|
c359 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr></table>>];
|
||||||
c355:p -> c358:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.invoice.InvoiceItem assoc gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.invoice.Invoice ASSOC gr.spinellis.basic.invoice.Customer
|
c355 -> c358 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c356:p -> c357:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.invoice.Invoice assoc gr.spinellis.basic.invoice.Customer
|
||||||
// gr.spinellis.basic.invoice.Invoice COMPOSED gr.spinellis.basic.invoice.InvoiceItem
|
c356 -> c357 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c356:p -> c355:p [taillabel="1", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// gr.spinellis.basic.invoice.Invoice composed gr.spinellis.basic.invoice.InvoiceItem
|
||||||
// gr.spinellis.basic.product.Product ASSOC gr.spinellis.basic.product.Category
|
c356 -> c355 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1", headlabel="*"];
|
||||||
c358:p -> c359:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.product.Product assoc gr.spinellis.basic.product.Category
|
||||||
|
c358 -> c359 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,27 +5,28 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.basic.invoice.InvoiceItem
|
ranksep=0.5;
|
||||||
c317 [label=<<table title="gr.spinellis.basic.invoice.InvoiceItem" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InvoiceItem </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> product : Product </td></tr><tr><td align="left" balign="left"> quantity : int </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.InvoiceItem
|
||||||
// gr.spinellis.basic.invoice.Invoice
|
c317 [label=<<table title="gr.spinellis.basic.invoice.InvoiceItem" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InvoiceItem </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> product : Product </td></tr><tr><td align="left" balign="left"> quantity : int </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c318 [label=<<table title="gr.spinellis.basic.invoice.Invoice" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Invoice </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> total : double </td></tr><tr><td align="left" balign="left"> items : InvoiceItem[] </td></tr><tr><td align="left" balign="left"> customer : Customer </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> addItem(p : Product, quantity : int) </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.Invoice
|
||||||
// gr.spinellis.basic.invoice.Customer
|
c318 [label=<<table title="gr.spinellis.basic.invoice.Invoice" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Invoice </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> total : double </td></tr><tr><td align="left" balign="left"> items : InvoiceItem[] </td></tr><tr><td align="left" balign="left"> customer : Customer </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> addItem(p : Product, quantity : int) </td></tr></table></td></tr></table>>];
|
||||||
c319 [label=<<table title="gr.spinellis.basic.invoice.Customer" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Customer </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : String </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.Customer
|
||||||
// gr.spinellis.basic.product.Product
|
c319 [label=<<table title="gr.spinellis.basic.invoice.Customer" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Customer </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : String </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c320 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : String </td></tr><tr><td align="left" balign="left"> stock : int </td></tr><tr><td align="left" balign="left"> price : double </td></tr><tr><td align="left" balign="left"> category : Category </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.product.Category
|
c320 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : String </td></tr><tr><td align="left" balign="left"> stock : int </td></tr><tr><td align="left" balign="left"> price : double </td></tr><tr><td align="left" balign="left"> category : Category </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c321 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : String </td></tr><tr><td align="left" balign="left"> products : List<> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Category
|
||||||
// gr.spinellis.basic.invoice.InvoiceItem ASSOC gr.spinellis.basic.product.Product
|
c321 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : String </td></tr><tr><td align="left" balign="left"> products : List<> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c317:p -> c320:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.invoice.InvoiceItem assoc gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.invoice.Invoice ASSOC gr.spinellis.basic.invoice.Customer
|
c317 -> c320 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c318:p -> c319:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.invoice.Invoice assoc gr.spinellis.basic.invoice.Customer
|
||||||
// gr.spinellis.basic.invoice.Invoice COMPOSED gr.spinellis.basic.invoice.InvoiceItem
|
c318 -> c319 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c318:p -> c317:p [taillabel="1", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// gr.spinellis.basic.invoice.Invoice composed gr.spinellis.basic.invoice.InvoiceItem
|
||||||
// gr.spinellis.basic.product.Product ASSOC gr.spinellis.basic.product.Category
|
c318 -> c317 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1", headlabel="*"];
|
||||||
c320:p -> c321:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.product.Product assoc gr.spinellis.basic.product.Category
|
||||||
|
c320 -> c321 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,27 +5,28 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.basic.invoice.InvoiceItem
|
ranksep=0.5;
|
||||||
c279 [label=<<table title="gr.spinellis.basic.invoice.InvoiceItem" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InvoiceItem </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> product </td></tr><tr><td align="left" balign="left"> quantity </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
// gr.spinellis.basic.invoice.InvoiceItem
|
||||||
// gr.spinellis.basic.invoice.Invoice
|
c279 [label=<<table title="gr.spinellis.basic.invoice.InvoiceItem" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InvoiceItem </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> product </td></tr><tr><td align="left" balign="left"> quantity </td></tr></table></td></tr></table>>, fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
||||||
c280 [label=<<table title="gr.spinellis.basic.invoice.Invoice" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Invoice </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> total </td></tr><tr><td align="left" balign="left"> items </td></tr><tr><td align="left" balign="left"> customer </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
// gr.spinellis.basic.invoice.Invoice
|
||||||
// gr.spinellis.basic.invoice.Customer
|
c280 [label=<<table title="gr.spinellis.basic.invoice.Invoice" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Invoice </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> total </td></tr><tr><td align="left" balign="left"> items </td></tr><tr><td align="left" balign="left"> customer </td></tr></table></td></tr></table>>, fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
||||||
c281 [label=<<table title="gr.spinellis.basic.invoice.Customer" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Customer </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
// gr.spinellis.basic.invoice.Customer
|
||||||
// gr.spinellis.basic.product.Product
|
c281 [label=<<table title="gr.spinellis.basic.invoice.Customer" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Customer </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr></table></td></tr></table>>, fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
||||||
c282 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> stock </td></tr><tr><td align="left" balign="left"> price </td></tr><tr><td align="left" balign="left"> category </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
// gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.product.Category
|
c282 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> stock </td></tr><tr><td align="left" balign="left"> price </td></tr><tr><td align="left" balign="left"> category </td></tr></table></td></tr></table>>, fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
||||||
c283 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> products </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
// gr.spinellis.basic.product.Category
|
||||||
// gr.spinellis.basic.invoice.InvoiceItem ASSOC gr.spinellis.basic.product.Product
|
c283 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> products </td></tr></table></td></tr></table>>, fontname="Helvetica", fontcolor="black", fontsize=16.0];
|
||||||
c279:p -> c282:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.invoice.InvoiceItem assoc gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.invoice.Invoice ASSOC gr.spinellis.basic.invoice.Customer
|
c279 -> c282 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c280:p -> c281:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.invoice.Invoice assoc gr.spinellis.basic.invoice.Customer
|
||||||
// gr.spinellis.basic.invoice.Invoice COMPOSED gr.spinellis.basic.invoice.InvoiceItem
|
c280 -> c281 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c280:p -> c279:p [taillabel="1", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// gr.spinellis.basic.invoice.Invoice composed gr.spinellis.basic.invoice.InvoiceItem
|
||||||
// gr.spinellis.basic.product.Product ASSOC gr.spinellis.basic.product.Category
|
c280 -> c279 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1", headlabel="*"];
|
||||||
c282:p -> c283:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.product.Product assoc gr.spinellis.basic.product.Category
|
||||||
|
c282 -> c283 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,16 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.basic.product.Product
|
ranksep=0.5;
|
||||||
c244 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="LemonChiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.product.Category
|
c244 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="LemonChiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr></table>>];
|
||||||
c245 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="LemonChiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Category
|
||||||
// gr.spinellis.basic.product.Product ASSOC gr.spinellis.basic.product.Category
|
c245 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="LemonChiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr></table>>];
|
||||||
c244:p -> c245:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.product.Product assoc gr.spinellis.basic.product.Category
|
||||||
|
c244 -> c245 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,16 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.basic.product.Product
|
ranksep=0.5;
|
||||||
c206 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="LemonChiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> stock </td></tr><tr><td align="left" balign="left"> price </td></tr><tr><td align="left" balign="left"> category </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.product.Category
|
c206 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="LemonChiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> stock </td></tr><tr><td align="left" balign="left"> price </td></tr><tr><td align="left" balign="left"> category </td></tr></table></td></tr></table>>];
|
||||||
c207 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="brown"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Category
|
||||||
// gr.spinellis.basic.product.Product ASSOC gr.spinellis.basic.product.Category
|
c207 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="brown"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr></table>>];
|
||||||
c206:p -> c207:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.product.Product assoc gr.spinellis.basic.product.Category
|
||||||
|
c206 -> c207 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,31 +5,32 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.basic.invoice.InvoiceItem
|
ranksep=0.5;
|
||||||
c164 [label=<<table title="gr.spinellis.basic.invoice.InvoiceItem" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InvoiceItem </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.InvoiceItem
|
||||||
// gr.spinellis.basic.invoice.Invoice
|
c164 [label=<<table title="gr.spinellis.basic.invoice.InvoiceItem" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InvoiceItem </td></tr></table></td></tr></table>>];
|
||||||
c165 [label=<<table title="gr.spinellis.basic.invoice.Invoice" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Invoice </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.Invoice
|
||||||
// gr.spinellis.basic.invoice.Customer
|
c165 [label=<<table title="gr.spinellis.basic.invoice.Invoice" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Invoice </td></tr></table></td></tr></table>>];
|
||||||
c166 [label=<<table title="gr.spinellis.basic.invoice.Customer" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Customer </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.invoice.Customer
|
||||||
// gr.spinellis.basic.product.Product
|
c166 [label=<<table title="gr.spinellis.basic.invoice.Customer" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Customer </td></tr></table></td></tr></table>>];
|
||||||
c167 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.product.Category
|
c167 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr></table>>];
|
||||||
c168 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Category
|
||||||
// gr.spinellis.basic.invoice.InvoiceItem ASSOC gr.spinellis.basic.product.Product
|
c168 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="yellow"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr></table>>];
|
||||||
c164:p -> c167:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.invoice.InvoiceItem assoc gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.invoice.Invoice ASSOC gr.spinellis.basic.invoice.Customer
|
c164 -> c167 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c165:p -> c166:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.invoice.Invoice assoc gr.spinellis.basic.invoice.Customer
|
||||||
// gr.spinellis.basic.invoice.Invoice COMPOSED gr.spinellis.basic.invoice.InvoiceItem
|
c165 -> c166 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c165:p -> c164:p [taillabel="1", label="", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// gr.spinellis.basic.invoice.Invoice composed gr.spinellis.basic.invoice.InvoiceItem
|
||||||
// gr.spinellis.basic.product.Product ASSOC gr.spinellis.basic.product.Category
|
c165 -> c164 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1", headlabel="*"];
|
||||||
c167:p -> c168:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.product.Product assoc gr.spinellis.basic.product.Category
|
||||||
// gr.spinellis.basic.product.Category DEPEND java.util.List<E>
|
c167 -> c168 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
c168:p -> c202:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
|
// gr.spinellis.basic.product.Category depend java.util.List<E>
|
||||||
// java.util.List<E>
|
c168 -> c202 [arrowhead=open,style=dashed,weight=0];
|
||||||
c202 [label=<<table title="java.util.List" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="gray" href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> List<E> </td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/java/util/List.html", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// java.util.List<E>
|
||||||
|
c202 [label=<<table title="java.util.List" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="gray" href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> List<E> </td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/java/util/List.html"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,39 +5,40 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.context.classes.AClient
|
ranksep=0.5;
|
||||||
c424 [label=<<table title="gr.spinellis.context.classes.AClient" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> AClient </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.context.classes.AClient
|
||||||
// gr.spinellis.context.classes.ASubclass
|
c424 [label=<<table title="gr.spinellis.context.classes.AClient" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> AClient </td></tr></table></td></tr></table>>];
|
||||||
c426 [label=<<table title="gr.spinellis.context.classes.ASubclass" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ASubclass </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.context.classes.ASubclass
|
||||||
// gr.spinellis.context.classes.E
|
c426 [label=<<table title="gr.spinellis.context.classes.ASubclass" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ASubclass </td></tr></table></td></tr></table>>];
|
||||||
c427 [label=<<table title="gr.spinellis.context.classes.E" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> E </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.context.classes.E
|
||||||
// gr.spinellis.context.classes.D
|
c427 [label=<<table title="gr.spinellis.context.classes.E" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> E </td></tr></table></td></tr></table>>];
|
||||||
c429 [label=<<table title="gr.spinellis.context.classes.D" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> D </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.context.classes.D
|
||||||
// gr.spinellis.context.classes.B
|
c429 [label=<<table title="gr.spinellis.context.classes.D" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> D </td></tr></table></td></tr></table>>];
|
||||||
c432 [label=<<table title="gr.spinellis.context.classes.B" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> B </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.context.classes.B
|
||||||
// gr.spinellis.context.classes.ABaseClass
|
c432 [label=<<table title="gr.spinellis.context.classes.B" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> B </td></tr></table></td></tr></table>>];
|
||||||
c433 [label=<<table title="gr.spinellis.context.classes.ABaseClass" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ABaseClass </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.context.classes.ABaseClass
|
||||||
// gr.spinellis.context.classes.A
|
c433 [label=<<table title="gr.spinellis.context.classes.ABaseClass" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ABaseClass </td></tr></table></td></tr></table>>];
|
||||||
c434 [label=<<table title="gr.spinellis.context.classes.A" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="lemonchiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> A </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.context.classes.A
|
||||||
//gr.spinellis.context.classes.ASubclass extends gr.spinellis.context.classes.A
|
c434 [label=<<table title="gr.spinellis.context.classes.A" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="lemonchiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> A </td></tr></table></td></tr></table>>];
|
||||||
c434:p -> c426:p [dir=back,arrowtail=empty];
|
// gr.spinellis.context.classes.ASubclass extends gr.spinellis.context.classes.A
|
||||||
//gr.spinellis.context.classes.A extends gr.spinellis.context.classes.ABaseClass
|
c434 -> c426 [arrowtail=empty,dir=back,weight=10];
|
||||||
c433:p -> c434:p [dir=back,arrowtail=empty];
|
// gr.spinellis.context.classes.A extends gr.spinellis.context.classes.ABaseClass
|
||||||
// gr.spinellis.context.classes.D NAVASSOC gr.spinellis.context.classes.A
|
c433 -> c434 [arrowtail=empty,dir=back,weight=10];
|
||||||
c429:p -> c434:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// gr.spinellis.context.classes.D navassoc gr.spinellis.context.classes.A
|
||||||
// gr.spinellis.context.classes.A NAVASSOC gr.spinellis.context.classes.B
|
c429 -> c434 [arrowhead=open,weight=1];
|
||||||
c434:p -> c432:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// gr.spinellis.context.classes.A navassoc gr.spinellis.context.classes.B
|
||||||
// gr.spinellis.context.classes.A NAVASSOC javax.swing.JComponent
|
c434 -> c432 [arrowhead=open,weight=1];
|
||||||
c434:p -> c509:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// gr.spinellis.context.classes.A navassoc javax.swing.JComponent
|
||||||
// gr.spinellis.context.classes.AClient DEPEND gr.spinellis.context.classes.A
|
c434 -> c509 [arrowhead=open,weight=1];
|
||||||
c424:p -> c434:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
|
// gr.spinellis.context.classes.AClient depend gr.spinellis.context.classes.A
|
||||||
// gr.spinellis.context.classes.A DEPEND gr.spinellis.context.classes.E
|
c424 -> c434 [arrowhead=open,style=dashed,weight=0];
|
||||||
c434:p -> c427:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
|
// gr.spinellis.context.classes.A depend gr.spinellis.context.classes.E
|
||||||
// javax.swing.JComponent
|
c434 -> c427 [arrowhead=open,style=dashed,weight=0];
|
||||||
c509 [label=<<table title="javax.swing.JComponent" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" href="http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="Helvetica-Oblique"> JComponent </font></td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// javax.swing.JComponent
|
||||||
|
c509 [label=<<table title="javax.swing.JComponent" border="0" cellborder="1" cellspacing="0" cellpadding="2" href="http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html" target="_parent"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><i> JComponent </i></td></tr></table></td></tr></table>>, URL="http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,27 +5,28 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.iface.classes.FarImplementor
|
ranksep=0.5;
|
||||||
c534 [label=<<table title="gr.spinellis.iface.classes.FarImplementor" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> FarImplementor </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.iface.classes.FarImplementor
|
||||||
// gr.spinellis.iface.classes.DirectImplementor
|
c534 [label=<<table title="gr.spinellis.iface.classes.FarImplementor" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> FarImplementor </td></tr></table></td></tr></table>>];
|
||||||
c535 [label=<<table title="gr.spinellis.iface.classes.DirectImplementor" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> DirectImplementor </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.iface.classes.DirectImplementor
|
||||||
// gr.spinellis.iface.classes.SubSubFace
|
c535 [label=<<table title="gr.spinellis.iface.classes.DirectImplementor" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> DirectImplementor </td></tr></table></td></tr></table>>];
|
||||||
c537 [label=<<table title="gr.spinellis.iface.classes.SubSubFace" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> SubSubFace </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.iface.classes.SubSubFace
|
||||||
// gr.spinellis.iface.classes.SubFace
|
c537 [label=<<table title="gr.spinellis.iface.classes.SubSubFace" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> SubSubFace </td></tr></table></td></tr></table>>];
|
||||||
c538 [label=<<table title="gr.spinellis.iface.classes.SubFace" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> SubFace </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.iface.classes.SubFace
|
||||||
// gr.spinellis.iface.classes.Face
|
c538 [label=<<table title="gr.spinellis.iface.classes.SubFace" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> SubFace </td></tr></table></td></tr></table>>];
|
||||||
c539 [label=<<table title="gr.spinellis.iface.classes.Face" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="lemonchiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> Face </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.iface.classes.Face
|
||||||
//gr.spinellis.iface.classes.FarImplementor implements gr.spinellis.iface.classes.SubSubFace
|
c539 [label=<<table title="gr.spinellis.iface.classes.Face" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="lemonchiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> Face </td></tr></table></td></tr></table>>];
|
||||||
c537:p -> c534:p [dir=back,arrowtail=empty,style=dashed];
|
// gr.spinellis.iface.classes.FarImplementor implements gr.spinellis.iface.classes.SubSubFace
|
||||||
//gr.spinellis.iface.classes.DirectImplementor implements gr.spinellis.iface.classes.Face
|
c537 -> c534 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c539:p -> c535:p [dir=back,arrowtail=empty,style=dashed];
|
// gr.spinellis.iface.classes.DirectImplementor implements gr.spinellis.iface.classes.Face
|
||||||
//gr.spinellis.iface.classes.SubSubFace implements gr.spinellis.iface.classes.SubFace
|
c539 -> c535 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c538:p -> c537:p [dir=back,arrowtail=empty,style=dashed];
|
// gr.spinellis.iface.classes.SubSubFace implements gr.spinellis.iface.classes.SubFace
|
||||||
//gr.spinellis.iface.classes.SubFace implements gr.spinellis.iface.classes.Face
|
c538 -> c537 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c539:p -> c538:p [dir=back,arrowtail=empty,style=dashed];
|
// gr.spinellis.iface.classes.SubFace implements gr.spinellis.iface.classes.Face
|
||||||
|
c539 -> c538 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,16 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.basic.product.Product
|
ranksep=0.5;
|
||||||
c129 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> stock </td></tr><tr><td align="left" balign="left"> price </td></tr><tr><td align="left" balign="left"> category </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Product
|
||||||
// gr.spinellis.basic.product.Category
|
c129 [label=<<table title="gr.spinellis.basic.product.Product" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Product </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> stock </td></tr><tr><td align="left" balign="left"> price </td></tr><tr><td align="left" balign="left"> category </td></tr></table></td></tr></table>>];
|
||||||
c130 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> products </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.basic.product.Category
|
||||||
// gr.spinellis.basic.product.Product ASSOC gr.spinellis.basic.product.Category
|
c130 [label=<<table title="gr.spinellis.basic.product.Category" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Category </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name </td></tr><tr><td align="left" balign="left"> products </td></tr></table></td></tr></table>>];
|
||||||
c129:p -> c130:p [taillabel="*", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// gr.spinellis.basic.product.Product assoc gr.spinellis.basic.product.Category
|
||||||
|
c129 -> c130 [arrowhead=none,weight=2,taillabel="*", headlabel="1"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,27 +5,28 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// gr.spinellis.subclass.classes.SubOneTwo
|
ranksep=0.5;
|
||||||
c580 [label=<<table title="gr.spinellis.subclass.classes.SubOneTwo" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SubOneTwo </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.subclass.classes.SubOneTwo
|
||||||
// gr.spinellis.subclass.classes.SubOneOne
|
c580 [label=<<table title="gr.spinellis.subclass.classes.SubOneTwo" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SubOneTwo </td></tr></table></td></tr></table>>];
|
||||||
c581 [label=<<table title="gr.spinellis.subclass.classes.SubOneOne" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SubOneOne </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.subclass.classes.SubOneOne
|
||||||
// gr.spinellis.subclass.classes.SubTwo
|
c581 [label=<<table title="gr.spinellis.subclass.classes.SubOneOne" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SubOneOne </td></tr></table></td></tr></table>>];
|
||||||
c582 [label=<<table title="gr.spinellis.subclass.classes.SubTwo" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SubTwo </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.subclass.classes.SubTwo
|
||||||
// gr.spinellis.subclass.classes.SubOne
|
c582 [label=<<table title="gr.spinellis.subclass.classes.SubTwo" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SubTwo </td></tr></table></td></tr></table>>];
|
||||||
c583 [label=<<table title="gr.spinellis.subclass.classes.SubOne" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SubOne </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.subclass.classes.SubOne
|
||||||
// gr.spinellis.subclass.classes.Super
|
c583 [label=<<table title="gr.spinellis.subclass.classes.SubOne" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SubOne </td></tr></table></td></tr></table>>];
|
||||||
c584 [label=<<table title="gr.spinellis.subclass.classes.Super" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="lemonchiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Super </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// gr.spinellis.subclass.classes.Super
|
||||||
//gr.spinellis.subclass.classes.SubOneTwo extends gr.spinellis.subclass.classes.SubOne
|
c584 [label=<<table title="gr.spinellis.subclass.classes.Super" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="lemonchiffon"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Super </td></tr></table></td></tr></table>>];
|
||||||
c583:p -> c580:p [dir=back,arrowtail=empty];
|
// gr.spinellis.subclass.classes.SubOneTwo extends gr.spinellis.subclass.classes.SubOne
|
||||||
//gr.spinellis.subclass.classes.SubOneOne extends gr.spinellis.subclass.classes.SubOne
|
c583 -> c580 [arrowtail=empty,dir=back,weight=10];
|
||||||
c583:p -> c581:p [dir=back,arrowtail=empty];
|
// gr.spinellis.subclass.classes.SubOneOne extends gr.spinellis.subclass.classes.SubOne
|
||||||
//gr.spinellis.subclass.classes.SubTwo extends gr.spinellis.subclass.classes.Super
|
c583 -> c581 [arrowtail=empty,dir=back,weight=10];
|
||||||
c584:p -> c582:p [dir=back,arrowtail=empty];
|
// gr.spinellis.subclass.classes.SubTwo extends gr.spinellis.subclass.classes.Super
|
||||||
//gr.spinellis.subclass.classes.SubOne extends gr.spinellis.subclass.classes.Super
|
c584 -> c582 [arrowtail=empty,dir=back,weight=10];
|
||||||
c584:p -> c583:p [dir=back,arrowtail=empty];
|
// gr.spinellis.subclass.classes.SubOne extends gr.spinellis.subclass.classes.Super
|
||||||
|
c584 -> c583 [arrowtail=empty,dir=back,weight=10];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,12 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Active
|
ranksep=0.5;
|
||||||
c32 [label=<<table title="Active" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td rowspan="10"></td><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Active </td></tr></table></td><td rowspan="10"></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> run() </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Active
|
||||||
|
c32 [label=<<table title="Active" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td rowspan="10"></td><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Active </td></tr></table></td><td rowspan="10"></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> run() </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,31 +5,32 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Controller
|
ranksep=0.5;
|
||||||
c5 [label=<<table title="Controller" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Controller </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Controller
|
||||||
// EmbeddedAgent
|
c5 [label=<<table title="Controller" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Controller </td></tr></table></td></tr></table>>];
|
||||||
c6 [label=<<table title="EmbeddedAgent" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> EmbeddedAgent </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// EmbeddedAgent
|
||||||
// PowerManager
|
c6 [label=<<table title="EmbeddedAgent" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> EmbeddedAgent </td></tr></table></td></tr></table>>];
|
||||||
c7 [label=<<table title="PowerManager" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> PowerManager </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// PowerManager
|
||||||
// SetTopController
|
c7 [label=<<table title="PowerManager" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> PowerManager </td></tr></table></td></tr></table>>];
|
||||||
c8 [label=<<table title="SetTopController" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SetTopController </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> authorizationLevel </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> startUp() </td></tr><tr><td align="left" balign="left"> shutDown() </td></tr><tr><td align="left" balign="left"> connect() </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// SetTopController
|
||||||
// ChannelIterator
|
c8 [label=<<table title="SetTopController" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SetTopController </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> authorizationLevel </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> startUp() </td></tr><tr><td align="left" balign="left"> shutDown() </td></tr><tr><td align="left" balign="left"> connect() </td></tr></table></td></tr></table>>];
|
||||||
c9 [label=<<table title="ChannelIterator" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ChannelIterator </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// ChannelIterator
|
||||||
// URLStreamHandler
|
c9 [label=<<table title="ChannelIterator" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ChannelIterator </td></tr></table></td></tr></table>>];
|
||||||
c10 [label=<<table title="URLStreamHandler" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> URLStreamHandler </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> OpenConnection() </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> parseURL() </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> setURL() </font></td></tr><tr><td align="left" balign="left"><font face="Helvetica-Oblique" point-size="10.0"> toExternalForm() </font></td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// URLStreamHandler
|
||||||
//SetTopController extends Controller
|
c10 [label=<<table title="URLStreamHandler" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> URLStreamHandler </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"><i> OpenConnection() </i></td></tr><tr><td align="left" balign="left"><i> parseURL() </i></td></tr><tr><td align="left" balign="left"><i> setURL() </i></td></tr><tr><td align="left" balign="left"><i> toExternalForm() </i></td></tr></table></td></tr></table>>];
|
||||||
c5:p -> c8:p [dir=back,arrowtail=empty];
|
// SetTopController extends Controller
|
||||||
//SetTopController extends EmbeddedAgent
|
c5 -> c8 [arrowtail=empty,dir=back,weight=10];
|
||||||
c6:p -> c8:p [dir=back,arrowtail=empty];
|
// SetTopController extends EmbeddedAgent
|
||||||
//SetTopController implements URLStreamHandler
|
c6 -> c8 [arrowtail=empty,dir=back,weight=10];
|
||||||
c10:p -> c8:p [dir=back,arrowtail=empty,style=dashed];
|
// SetTopController implements URLStreamHandler
|
||||||
// SetTopController NAVASSOC PowerManager
|
c10 -> c8 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c8:p -> c7:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// SetTopController navassoc PowerManager
|
||||||
// ChannelIterator DEPEND SetTopController
|
c8 -> c7 [arrowhead=open,weight=1];
|
||||||
c9:p -> c8:p [taillabel="", label="«friend»", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open, style=dashed];
|
// ChannelIterator depend SetTopController
|
||||||
|
c9 -> c8 [arrowhead=open,style=dashed,weight=0,label="«friend»"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,20 +5,21 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
rankdir=LR;
|
ranksep=0.5;
|
||||||
// UserGroup
|
rankdir=LR;
|
||||||
c12 [label=<<table title="UserGroup" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> UserGroup </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// UserGroup
|
||||||
// User
|
c12 [label=<<table title="UserGroup" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> UserGroup </td></tr></table></td></tr></table>>];
|
||||||
c13 [label=<<table title="User" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> User </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// User
|
||||||
// Password
|
c13 [label=<<table title="User" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> User </td></tr></table></td></tr></table>>];
|
||||||
c14 [label=<<table title="Password" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Password </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Password
|
||||||
// UserGroup ASSOC User
|
c14 [label=<<table title="Password" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Password </td></tr></table></td></tr></table>>];
|
||||||
c12:p -> c13:p [taillabel="*", label="", headlabel="*\n\n+user ", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// UserGroup assoc User
|
||||||
// User NAVASSOC Password
|
c12 -> c13 [arrowhead=none,weight=2,taillabel="*", headlabel="*\n\n+user "];
|
||||||
c13:p -> c14:p [taillabel="1\n\n+owner\r", label="", headlabel="*\n\n+key", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// User navassoc Password
|
||||||
|
c13 -> c14 [arrowhead=open,weight=1,taillabel="1\n\n+owner\r", headlabel="*\n\n+key"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,23 +5,24 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Tyre
|
ranksep=0.5;
|
||||||
c15 [label=<<table title="Tyre" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Tyre </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Tyre
|
||||||
// Engine
|
c15 [label=<<table title="Tyre" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Tyre </td></tr></table></td></tr></table>>];
|
||||||
c16 [label=<<table title="Engine" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Engine </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Engine
|
||||||
// Body
|
c16 [label=<<table title="Engine" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Engine </td></tr></table></td></tr></table>>];
|
||||||
c17 [label=<<table title="Body" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Body </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Body
|
||||||
// Car
|
c17 [label=<<table title="Body" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Body </td></tr></table></td></tr></table>>];
|
||||||
c18 [label=<<table title="Car" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Car </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Car
|
||||||
// Car COMPOSED Tyre
|
c18 [label=<<table title="Car" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Car </td></tr></table></td></tr></table>>];
|
||||||
c18:p -> c15:p [taillabel="1", label="", headlabel="4", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// Car composed Tyre
|
||||||
// Car COMPOSED Engine
|
c18 -> c15 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1", headlabel="4"];
|
||||||
c18:p -> c16:p [taillabel="1", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// Car composed Engine
|
||||||
// Car COMPOSED Body
|
c18 -> c16 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1", headlabel="1"];
|
||||||
c18:p -> c17:p [taillabel="1", label="", headlabel="1", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// Car composed Body
|
||||||
|
c18 -> c17 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1", headlabel="1"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,53 +5,54 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// HttpResponseBase
|
ranksep=0.5;
|
||||||
c19 [label=<<table title="HttpResponseBase" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> HttpResponseBase </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// HttpResponseBase
|
||||||
// HttpResponseWrapper
|
c19 [label=<<table title="HttpResponseBase" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> HttpResponseBase </td></tr></table></td></tr></table>>];
|
||||||
c20 [label=<<table title="HttpResponseWrapper" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="Helvetica-Oblique"> HttpResponseWrapper </font></td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// HttpResponseWrapper
|
||||||
// HttpResponseFacade
|
c20 [label=<<table title="HttpResponseWrapper" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><i> HttpResponseWrapper </i></td></tr></table></td></tr></table>>];
|
||||||
c21 [label=<<table title="HttpResponseFacade" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> HttpResponseFacade </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// HttpResponseFacade
|
||||||
// ResponseWrapper
|
c21 [label=<<table title="HttpResponseFacade" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> HttpResponseFacade </td></tr></table></td></tr></table>>];
|
||||||
c22 [label=<<table title="ResponseWrapper" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="Helvetica-Oblique"> ResponseWrapper </font></td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// ResponseWrapper
|
||||||
// HttpResponse
|
c22 [label=<<table title="ResponseWrapper" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><i> ResponseWrapper </i></td></tr></table></td></tr></table>>];
|
||||||
c23 [label=<<table title="HttpResponse" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> HttpResponse </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// HttpResponse
|
||||||
// ResponseBase
|
c23 [label=<<table title="HttpResponse" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> HttpResponse </td></tr></table></td></tr></table>>];
|
||||||
c24 [label=<<table title="ResponseBase" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><font face="Helvetica-Oblique"> ResponseBase </font></td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// ResponseBase
|
||||||
// HttpServletResponse
|
c24 [label=<<table title="ResponseBase" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"><i> ResponseBase </i></td></tr></table></td></tr></table>>];
|
||||||
c25 [label=<<table title="HttpServletResponse" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> HttpServletResponse </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// HttpServletResponse
|
||||||
// ResponseFacade
|
c25 [label=<<table title="HttpServletResponse" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> HttpServletResponse </td></tr></table></td></tr></table>>];
|
||||||
c26 [label=<<table title="ResponseFacade" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ResponseFacade </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// ResponseFacade
|
||||||
// ServletResponse
|
c26 [label=<<table title="ResponseFacade" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> ResponseFacade </td></tr></table></td></tr></table>>];
|
||||||
c27 [label=<<table title="ServletResponse" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> ServletResponse </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// ServletResponse
|
||||||
// Response
|
c27 [label=<<table title="ServletResponse" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> ServletResponse </td></tr></table></td></tr></table>>];
|
||||||
c28 [label=<<table title="Response" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> Response </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Response
|
||||||
//HttpResponseBase extends ResponseBase
|
c28 [label=<<table title="Response" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «interface» </td></tr><tr><td align="center" balign="center"> Response </td></tr></table></td></tr></table>>];
|
||||||
c24:p -> c19:p [dir=back,arrowtail=empty];
|
// HttpResponseBase extends ResponseBase
|
||||||
//HttpResponseBase implements HttpResponse
|
c24 -> c19 [arrowtail=empty,dir=back,weight=10];
|
||||||
c23:p -> c19:p [dir=back,arrowtail=empty,style=dashed];
|
// HttpResponseBase implements HttpResponse
|
||||||
//HttpResponseBase implements HttpServletResponse
|
c23 -> c19 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c25:p -> c19:p [dir=back,arrowtail=empty,style=dashed];
|
// HttpResponseBase implements HttpServletResponse
|
||||||
//HttpResponseWrapper extends ResponseWrapper
|
c25 -> c19 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c22:p -> c20:p [dir=back,arrowtail=empty];
|
// HttpResponseWrapper extends ResponseWrapper
|
||||||
//HttpResponseWrapper implements HttpResponse
|
c22 -> c20 [arrowtail=empty,dir=back,weight=10];
|
||||||
c23:p -> c20:p [dir=back,arrowtail=empty,style=dashed];
|
// HttpResponseWrapper implements HttpResponse
|
||||||
//HttpResponseFacade extends ResponseFacade
|
c23 -> c20 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c26:p -> c21:p [dir=back,arrowtail=empty];
|
// HttpResponseFacade extends ResponseFacade
|
||||||
//HttpResponseFacade implements HttpServletResponse
|
c26 -> c21 [arrowtail=empty,dir=back,weight=10];
|
||||||
c25:p -> c21:p [dir=back,arrowtail=empty,style=dashed];
|
// HttpResponseFacade implements HttpServletResponse
|
||||||
//ResponseWrapper implements Response
|
c25 -> c21 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c28:p -> c22:p [dir=back,arrowtail=empty,style=dashed];
|
// ResponseWrapper implements Response
|
||||||
//HttpResponse implements Response
|
c28 -> c22 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c28:p -> c23:p [dir=back,arrowtail=empty,style=dashed];
|
// HttpResponse implements Response
|
||||||
//ResponseBase implements Response
|
c28 -> c23 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c28:p -> c24:p [dir=back,arrowtail=empty,style=dashed];
|
// ResponseBase implements Response
|
||||||
//ResponseBase implements ServletResponse
|
c28 -> c24 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c27:p -> c24:p [dir=back,arrowtail=empty,style=dashed];
|
// ResponseBase implements ServletResponse
|
||||||
//ResponseFacade implements ServletResponse
|
c27 -> c24 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
c27:p -> c26:p [dir=back,arrowtail=empty,style=dashed];
|
// ResponseFacade implements ServletResponse
|
||||||
|
c27 -> c26 [arrowtail=empty,style=dashed,dir=back,weight=9];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,19 +5,20 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Person
|
ranksep=0.5;
|
||||||
c30 [label=<<table title="Person" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor=".13 .9 1"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Person </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Person
|
||||||
// Employee
|
c30 [label=<<table title="Person" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor=".13 .9 1"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Person </td></tr></table></td></tr></table>>];
|
||||||
c31 [label=<<table title="Employee" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor=".13 .9 1"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Employee </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Employee
|
||||||
// Client
|
c31 [label=<<table title="Employee" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor=".13 .9 1"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Employee </td></tr></table></td></tr></table>>];
|
||||||
c32 [label=<<table title="Client" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor=".13 .9 1"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Client </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Client
|
||||||
//Employee extends Person
|
c32 [label=<<table title="Client" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor=".13 .9 1"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Client </td></tr></table></td></tr></table>>];
|
||||||
c30:p -> c31:p [dir=back,arrowtail=empty];
|
// Employee extends Person
|
||||||
//Client extends Person
|
c30 -> c31 [arrowtail=empty,dir=back,weight=10];
|
||||||
c30:p -> c32:p [dir=back,arrowtail=empty];
|
// Client extends Person
|
||||||
|
c30 -> c32 [arrowtail=empty,dir=back,weight=10];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,12 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// ActionQueue
|
ranksep=0.5;
|
||||||
c35 [label=<<table title="ActionQueue" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «container» </td></tr><tr><td align="center" balign="center"> ActionQueue </td></tr><tr><td align="right" balign="right"> {version = 3.2} </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> add(a : Action) </td></tr><tr><td align="left" balign="left"> add(a : Action, n : int) </td></tr><tr><td align="right" balign="right"> {version = 1.0} </td></tr><tr><td align="left" balign="left"> remove(n : int) </td></tr><tr><td align="left" balign="left"> «query» </td></tr><tr><td align="left" balign="left"> length() : int </td></tr><tr><td align="left" balign="left"> «helper functions» </td></tr><tr><td align="left" balign="left"> reorder() </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// ActionQueue
|
||||||
|
c35 [label=<<table title="ActionQueue" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «container» </td></tr><tr><td align="center" balign="center"> ActionQueue </td></tr><tr><td align="right" balign="right"> {version = 3.2} </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> add(a : Action) </td></tr><tr><td align="left" balign="left"> add(a : Action, n : int) </td></tr><tr><td align="right" balign="right"> {version = 1.0} </td></tr><tr><td align="left" balign="left"> remove(n : int) </td></tr><tr><td align="left" balign="left"> «query» </td></tr><tr><td align="left" balign="left"> length() : int </td></tr><tr><td align="left" balign="left"> «helper functions» </td></tr><tr><td align="left" balign="left"> reorder() </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,25 +5,26 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Serif",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="yellow"];
|
||||||
nodesep=0.25;
|
node [fontname="Serif",fontcolor="black",fontsize=14,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
bgcolor=".7 .9 1";
|
ranksep=0.5;
|
||||||
|
bgcolor=".7 .9 1";
|
||||||
// Pixel
|
|
||||||
c37 [label=<<table title="Pixel" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="#a0a0a0"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Pixel </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> - x : int </td></tr><tr><td align="left" balign="left"> - y : int </td></tr></table></td></tr></table>>, URL="null", fontname="arial", fontcolor="white", fontsize=14.0];
|
// Pixel
|
||||||
// Red
|
c37 [label=<<table title="Pixel" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="#a0a0a0"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Pixel </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> - x : int </td></tr><tr><td align="left" balign="left"> - y : int </td></tr></table></td></tr></table>>];
|
||||||
c38 [label=<<table title="Red" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="red"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Red </td></tr></table></td></tr></table>>, URL="null", fontname="Serif", fontcolor="black", fontsize=14.0];
|
// Red
|
||||||
// Green
|
c38 [label=<<table title="Red" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="red"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Red </td></tr></table></td></tr></table>>];
|
||||||
c39 [label=<<table title="Green" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="green"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Green </td></tr></table></td></tr></table>>, URL="null", fontname="Serif", fontcolor="black", fontsize=14.0];
|
// Green
|
||||||
// Blue
|
c39 [label=<<table title="Green" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="green"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Green </td></tr></table></td></tr></table>>];
|
||||||
c40 [label=<<table title="Blue" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p" bgcolor="blue"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Blue </td></tr></table></td></tr></table>>, URL="null", fontname="Serif", fontcolor="black", fontsize=14.0];
|
// Blue
|
||||||
// Pixel COMPOSED Red
|
c40 [label=<<table title="Blue" border="0" cellborder="1" cellspacing="0" cellpadding="2" bgcolor="blue"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Blue </td></tr></table></td></tr></table>>];
|
||||||
c37:p -> c38:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="yellow", arrowhead=none, arrowtail=diamond, dir=both];
|
// Pixel composed Red
|
||||||
// Pixel COMPOSED Green
|
c37 -> c38 [arrowhead=none,arrowtail=diamond,dir=back,weight=6];
|
||||||
c37:p -> c39:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="yellow", arrowhead=none, arrowtail=diamond, dir=both];
|
// Pixel composed Green
|
||||||
// Pixel COMPOSED Blue
|
c37 -> c39 [arrowhead=none,arrowtail=diamond,dir=back,weight=6];
|
||||||
c37:p -> c40:p [taillabel="", label="", headlabel="", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="yellow", arrowhead=none, arrowtail=diamond, dir=both];
|
// Pixel composed Blue
|
||||||
|
c37 -> c40 [arrowhead=none,arrowtail=diamond,dir=back,weight=6];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,12 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Junk
|
ranksep=0.5;
|
||||||
c43 [label=<<table title="Junk" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Junk </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> - value : int </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> + Junk(val : int) </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Junk
|
||||||
|
c43 [label=<<table title="Junk" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Junk </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> - value : int </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> + Junk(val : int) </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,16 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Person1
|
ranksep=0.5;
|
||||||
c45 [label=<<table title="Person1" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Person1 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> ~ address : String </td></tr><tr><td align="left" balign="left"> ~ name : String </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Person1
|
||||||
// Person2
|
c45 [label=<<table title="Person1" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Person1 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> ~ address : String </td></tr><tr><td align="left" balign="left"> ~ name : String </td></tr></table></td></tr></table>>];
|
||||||
c46 [label=<<table title="Person2" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Person2 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> ~ displayName() : String </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Person2
|
||||||
// Person3
|
c46 [label=<<table title="Person2" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Person2 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> ~ displayName() : String </td></tr></table></td></tr></table>>];
|
||||||
c47 [label=<<table title="Person3" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Person3 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> address : Address </td></tr><tr><td align="left" balign="left"> name : String </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> displayName() : String </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Person3
|
||||||
|
c47 [label=<<table title="Person3" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Person3 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> address : Address </td></tr><tr><td align="left" balign="left"> name : String </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> displayName() : String </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,14 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Base
|
ranksep=0.5;
|
||||||
c48 [label=<<table title="Base" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Base </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Base
|
||||||
// Test2<B extends a.b.Base>
|
c48 [label=<<table title="Base" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Base </td></tr></table></td></tr></table>>];
|
||||||
c49 [label=<<table title="Test2" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Test2<B extends Base> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Test2<B extends a.b.Base>
|
||||||
|
c49 [label=<<table title="Test2" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Test2<B extends Base> </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,21 +5,22 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// a.b.c.UMLOptions
|
ranksep=0.5;
|
||||||
c50 [label=<<table title="a.b.c.UMLOptions" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> UMLOptions </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// a.b.c.UMLOptions
|
||||||
// a.b.c.UserGroup
|
c50 [label=<<table title="a.b.c.UMLOptions" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> UMLOptions </td></tr></table></td></tr></table>>];
|
||||||
c51 [label=<<table title="a.b.c.UserGroup" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> UserGroup </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// a.b.c.UserGroup
|
||||||
// a.b.c.User
|
c51 [label=<<table title="a.b.c.UserGroup" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> UserGroup </td></tr></table></td></tr></table>>];
|
||||||
c52 [label=<<table title="a.b.c.User" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> User </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// a.b.c.User
|
||||||
// a.b.c.Password
|
c52 [label=<<table title="a.b.c.User" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> User </td></tr></table></td></tr></table>>];
|
||||||
c53 [label=<<table title="a.b.c.Password" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Password </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// a.b.c.Password
|
||||||
// a.b.c.UserGroup ASSOC a.b.c.User
|
c53 [label=<<table title="a.b.c.Password" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Password </td></tr></table></td></tr></table>>];
|
||||||
c51:p -> c52:p [taillabel="*", label="", headlabel="*\n\n+user ", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// a.b.c.UserGroup assoc a.b.c.User
|
||||||
// a.b.c.User NAVASSOC a.b.c.Password
|
c51 -> c52 [arrowhead=none,weight=2,taillabel="*", headlabel="*\n\n+user "];
|
||||||
c52:p -> c53:p [taillabel="1\n\n+owner\r", label="", headlabel="*\n\n+key", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=open];
|
// a.b.c.User navassoc a.b.c.Password
|
||||||
|
c52 -> c53 [arrowhead=open,weight=1,taillabel="1\n\n+owner\r", headlabel="*\n\n+key"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,49 +5,50 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Asset
|
ranksep=0.5;
|
||||||
c55 [label=<<table title="Asset" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Asset </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Asset
|
||||||
// InterestBearingItem
|
c55 [label=<<table title="Asset" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Asset </td></tr></table></td></tr></table>>];
|
||||||
c56 [label=<<table title="InterestBearingItem" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InterestBearingItem </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// InterestBearingItem
|
||||||
// InsurableItem
|
c56 [label=<<table title="InterestBearingItem" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InterestBearingItem </td></tr></table></td></tr></table>>];
|
||||||
c57 [label=<<table title="InsurableItem" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InsurableItem </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// InsurableItem
|
||||||
// BankAccount
|
c57 [label=<<table title="InsurableItem" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> InsurableItem </td></tr></table></td></tr></table>>];
|
||||||
c58 [label=<<table title="BankAccount" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> BankAccount </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// BankAccount
|
||||||
// RealEstate
|
c58 [label=<<table title="BankAccount" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> BankAccount </td></tr></table></td></tr></table>>];
|
||||||
c59 [label=<<table title="RealEstate" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> RealEstate </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// RealEstate
|
||||||
// Security
|
c59 [label=<<table title="RealEstate" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> RealEstate </td></tr></table></td></tr></table>>];
|
||||||
c60 [label=<<table title="Security" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Security </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Security
|
||||||
// Stock
|
c60 [label=<<table title="Security" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Security </td></tr></table></td></tr></table>>];
|
||||||
c61 [label=<<table title="Stock" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Stock </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Stock
|
||||||
// Bond
|
c61 [label=<<table title="Stock" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Stock </td></tr></table></td></tr></table>>];
|
||||||
c62 [label=<<table title="Bond" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Bond </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Bond
|
||||||
// CheckingAccount
|
c62 [label=<<table title="Bond" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Bond </td></tr></table></td></tr></table>>];
|
||||||
c63 [label=<<table title="CheckingAccount" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> CheckingAccount </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// CheckingAccount
|
||||||
// SavingsAccount
|
c63 [label=<<table title="CheckingAccount" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> CheckingAccount </td></tr></table></td></tr></table>>];
|
||||||
c64 [label=<<table title="SavingsAccount" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SavingsAccount </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// SavingsAccount
|
||||||
//BankAccount extends Asset
|
c64 [label=<<table title="SavingsAccount" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> SavingsAccount </td></tr></table></td></tr></table>>];
|
||||||
c55:p -> c58:p [dir=back,arrowtail=empty];
|
// BankAccount extends Asset
|
||||||
//BankAccount extends InsurableItem
|
c55 -> c58 [arrowtail=empty,dir=back,weight=10];
|
||||||
c57:p -> c58:p [dir=back,arrowtail=empty];
|
// BankAccount extends InsurableItem
|
||||||
//BankAccount extends InterestBearingItem
|
c57 -> c58 [arrowtail=empty,dir=back,weight=10];
|
||||||
c56:p -> c58:p [dir=back,arrowtail=empty];
|
// BankAccount extends InterestBearingItem
|
||||||
//RealEstate extends Asset
|
c56 -> c58 [arrowtail=empty,dir=back,weight=10];
|
||||||
c55:p -> c59:p [dir=back,arrowtail=empty];
|
// RealEstate extends Asset
|
||||||
//RealEstate extends InsurableItem
|
c55 -> c59 [arrowtail=empty,dir=back,weight=10];
|
||||||
c57:p -> c59:p [dir=back,arrowtail=empty];
|
// RealEstate extends InsurableItem
|
||||||
//Security extends Asset
|
c57 -> c59 [arrowtail=empty,dir=back,weight=10];
|
||||||
c55:p -> c60:p [dir=back,arrowtail=empty];
|
// Security extends Asset
|
||||||
//Stock extends Security
|
c55 -> c60 [arrowtail=empty,dir=back,weight=10];
|
||||||
c60:p -> c61:p [dir=back,arrowtail=empty];
|
// Stock extends Security
|
||||||
//Bond extends Security
|
c60 -> c61 [arrowtail=empty,dir=back,weight=10];
|
||||||
c60:p -> c62:p [dir=back,arrowtail=empty];
|
// Bond extends Security
|
||||||
//CheckingAccount extends BankAccount
|
c60 -> c62 [arrowtail=empty,dir=back,weight=10];
|
||||||
c58:p -> c63:p [dir=back,arrowtail=empty];
|
// CheckingAccount extends BankAccount
|
||||||
//SavingsAccount extends BankAccount
|
c58 -> c63 [arrowtail=empty,dir=back,weight=10];
|
||||||
c58:p -> c64:p [dir=back,arrowtail=empty];
|
// SavingsAccount extends BankAccount
|
||||||
|
c58 -> c64 [arrowtail=empty,dir=back,weight=10];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,14 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Java5
|
ranksep=0.5;
|
||||||
c78 [label=<<table title="Java5" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Java5 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> ~ state : Java5.States </td></tr><tr><td align="left" balign="left"> - specifiedPackages : Set<String> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> + printAll(args : String[]) </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Java5
|
||||||
// Java5.States
|
c78 [label=<<table title="Java5" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Java5 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> ~ state : Java5.States </td></tr><tr><td align="left" balign="left"> - specifiedPackages : Set<String> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> + printAll(args : String[]) </td></tr></table></td></tr></table>>];
|
||||||
c79 [label=<<table title="Java5.States" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «enumeration» </td></tr><tr><td align="center" balign="center"> States </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> start </td></tr><tr><td align="left" balign="left"> dash </td></tr><tr><td align="left" balign="left"> colon </td></tr><tr><td align="left" balign="left"> space </td></tr><tr><td align="left" balign="left"> open </td></tr><tr><td align="left" balign="left"> w </td></tr><tr><td align="left" balign="left"> close </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Java5.States
|
||||||
|
c79 [label=<<table title="Java5.States" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «enumeration» </td></tr><tr><td align="center" balign="center"> States </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> start </td></tr><tr><td align="left" balign="left"> dash </td></tr><tr><td align="left" balign="left"> colon </td></tr><tr><td align="left" balign="left"> space </td></tr><tr><td align="left" balign="left"> open </td></tr><tr><td align="left" balign="left"> w </td></tr><tr><td align="left" balign="left"> close </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,33 +5,34 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// School
|
ranksep=0.5;
|
||||||
c103 [label=<<table title="School" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> School </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr><tr><td align="left" balign="left"> address : String </td></tr><tr><td align="left" balign="left"> phone : Number </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> addStudent() </td></tr><tr><td align="left" balign="left"> removeStudent() </td></tr><tr><td align="left" balign="left"> getStudent() </td></tr><tr><td align="left" balign="left"> getAllStudents() </td></tr><tr><td align="left" balign="left"> addDepartment() </td></tr><tr><td align="left" balign="left"> removeDepartment() </td></tr><tr><td align="left" balign="left"> getDepartment() </td></tr><tr><td align="left" balign="left"> getAllDepartments() </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// School
|
||||||
// Department
|
c103 [label=<<table title="School" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> School </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr><tr><td align="left" balign="left"> address : String </td></tr><tr><td align="left" balign="left"> phone : Number </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> addStudent() </td></tr><tr><td align="left" balign="left"> removeStudent() </td></tr><tr><td align="left" balign="left"> getStudent() </td></tr><tr><td align="left" balign="left"> getAllStudents() </td></tr><tr><td align="left" balign="left"> addDepartment() </td></tr><tr><td align="left" balign="left"> removeDepartment() </td></tr><tr><td align="left" balign="left"> getDepartment() </td></tr><tr><td align="left" balign="left"> getAllDepartments() </td></tr></table></td></tr></table>>];
|
||||||
c104 [label=<<table title="Department" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Department </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> addInstructor() </td></tr><tr><td align="left" balign="left"> removeInstructor() </td></tr><tr><td align="left" balign="left"> getInstructor() </td></tr><tr><td align="left" balign="left"> getAllInstructors() </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Department
|
||||||
// Student
|
c104 [label=<<table title="Department" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Department </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> addInstructor() </td></tr><tr><td align="left" balign="left"> removeInstructor() </td></tr><tr><td align="left" balign="left"> getInstructor() </td></tr><tr><td align="left" balign="left"> getAllInstructors() </td></tr></table></td></tr></table>>];
|
||||||
c105 [label=<<table title="Student" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Student </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr><tr><td align="left" balign="left"> studentID : Number </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Student
|
||||||
// Course
|
c105 [label=<<table title="Student" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Student </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr><tr><td align="left" balign="left"> studentID : Number </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c106 [label=<<table title="Course" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Course </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr><tr><td align="left" balign="left"> courseID : Number </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Course
|
||||||
// Instructor
|
c106 [label=<<table title="Course" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Course </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr><tr><td align="left" balign="left"> courseID : Number </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c107 [label=<<table title="Instructor" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Instructor </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Instructor
|
||||||
// School HAS Student
|
c107 [label=<<table title="Instructor" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Instructor </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> name : Name </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr></table>>];
|
||||||
c103:p -> c105:p [taillabel="1..*", label="Member", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=ediamond, dir=both];
|
// School has Student
|
||||||
// School COMPOSED Department
|
c103 -> c105 [arrowhead=none,arrowtail=ediamond,dir=back,weight=4,taillabel="1..*", label="Member", headlabel="*"];
|
||||||
c103:p -> c104:p [taillabel="1..*", label="Has", headlabel="1..*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=diamond, dir=both];
|
// School composed Department
|
||||||
// Department ASSOC Course
|
c103 -> c104 [arrowhead=none,arrowtail=diamond,dir=back,weight=6,taillabel="1..*", label="Has", headlabel="1..*"];
|
||||||
c104:p -> c106:p [taillabel="1..*", label="", headlabel="1..*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Department assoc Course
|
||||||
// Department ASSOC Instructor
|
c104 -> c106 [arrowhead=none,weight=2,taillabel="1..*", headlabel="1..*"];
|
||||||
c104:p -> c107:p [taillabel="0..*", label="", headlabel="0..1 chairperson", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Department assoc Instructor
|
||||||
// Department HAS Instructor
|
c104 -> c107 [arrowhead=none,weight=2,taillabel="0..*", headlabel="0..1 chairperson"];
|
||||||
c104:p -> c107:p [taillabel="1..*", label="AssignedTo", headlabel="1..*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none, arrowtail=ediamond, dir=both];
|
// Department has Instructor
|
||||||
// Student ASSOC Course
|
c104 -> c107 [arrowhead=none,arrowtail=ediamond,dir=back,weight=4,taillabel="1..*", label="AssignedTo", headlabel="1..*"];
|
||||||
c105:p -> c106:p [taillabel="*", label="Attends", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Student assoc Course
|
||||||
// Instructor ASSOC Course
|
c105 -> c106 [arrowhead=none,weight=2,taillabel="*", label="Attends", headlabel="*"];
|
||||||
c107:p -> c106:p [taillabel="1..*", label="Teaches", headlabel="*", fontname="Helvetica", fontcolor="black", fontsize=10.0, color="black", arrowhead=none];
|
// Instructor assoc Course
|
||||||
|
c107 -> c106 [arrowhead=none,weight=2,taillabel="1..*", label="Teaches", headlabel="*"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,14 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Java5
|
ranksep=0.5;
|
||||||
c109 [label=<<table title="Java5" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Java5 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> ~ state : Java5.States </td></tr><tr><td align="left" balign="left"> + specifiedPackages : Set<String> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> + printAll(args : String[]) </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Java5
|
||||||
// Java5.States
|
c109 [label=<<table title="Java5" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Java5 </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> ~ state : Java5.States </td></tr><tr><td align="left" balign="left"> + specifiedPackages : Set<String> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> + printAll(args : String[]) </td></tr></table></td></tr></table>>];
|
||||||
c110 [label=<<table title="Java5.States" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «enumeration» </td></tr><tr><td align="center" balign="center"> States </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> start </td></tr><tr><td align="left" balign="left"> dash </td></tr><tr><td align="left" balign="left"> colon </td></tr><tr><td align="left" balign="left"> space </td></tr><tr><td align="left" balign="left"> open </td></tr><tr><td align="left" balign="left"> w </td></tr><tr><td align="left" balign="left"> close </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Java5.States
|
||||||
|
c110 [label=<<table title="Java5.States" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> «enumeration» </td></tr><tr><td align="center" balign="center"> States </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> start </td></tr><tr><td align="left" balign="left"> dash </td></tr><tr><td align="left" balign="left"> colon </td></tr><tr><td align="left" balign="left"> space </td></tr><tr><td align="left" balign="left"> open </td></tr><tr><td align="left" balign="left"> w </td></tr><tr><td align="left" balign="left"> close </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,12 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
digraph G {
|
digraph G {
|
||||||
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
|
graph [fontnames="svg"]
|
||||||
node [fontname="Helvetica",fontsize=10,shape=plaintext];
|
edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10,color="black"];
|
||||||
nodesep=0.25;
|
node [fontname="Helvetica",fontcolor="black",fontsize=10,shape=plaintext,margin=0,width=0,height=0];
|
||||||
ranksep=0.5;
|
nodesep=0.25;
|
||||||
// Toolbar
|
ranksep=0.5;
|
||||||
c120 [label=<<table title="Toolbar" border="0" cellborder="1" cellspacing="0" cellpadding="2" port="p"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Toolbar </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> # currentSelection : Tool </td></tr><tr><td align="left" balign="left"> # toolCount : Integer </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> + pickItem(i : Integer) </td></tr><tr><td align="left" balign="left"> + addTool(t : Tool) </td></tr><tr><td align="left" balign="left"> + removeTool(i : Integer) </td></tr><tr><td align="left" balign="left"> + getTool() : Tool </td></tr><tr><td align="left" balign="left"> # checkOrphans() </td></tr><tr><td align="left" balign="left"> - compact() </td></tr></table></td></tr></table>>, URL="null", fontname="Helvetica", fontcolor="black", fontsize=10.0];
|
// Toolbar
|
||||||
|
c120 [label=<<table title="Toolbar" border="0" cellborder="1" cellspacing="0" cellpadding="2"><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="center" balign="center"> Toolbar </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> # currentSelection : Tool </td></tr><tr><td align="left" balign="left"> # toolCount : Integer </td></tr></table></td></tr><tr><td><table border="0" cellspacing="0" cellpadding="1"><tr><td align="left" balign="left"> + pickItem(i : Integer) </td></tr><tr><td align="left" balign="left"> + addTool(t : Tool) </td></tr><tr><td align="left" balign="left"> + removeTool(i : Integer) </td></tr><tr><td align="left" balign="left"> + getTool() : Tool </td></tr><tr><td align="left" balign="left"> # checkOrphans() </td></tr><tr><td align="left" balign="left"> - compact() </td></tr></table></td></tr></table>>];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue