mirror of https://github.com/dspinellis/UMLGraph
170 lines
3.7 KiB
XML
170 lines
3.7 KiB
XML
<?xml version="1.0" ?>
|
|
<!-- $Id$ -->
|
|
<notes>
|
|
Vadim Nasardinov noted that an advantage of UMLGraph over many
|
|
GUI-oriented UML drawing tools is the ability
|
|
to generate different views of a diagram
|
|
from the same source description.
|
|
The following two diagrams were generated from the same source;
|
|
a Makefile illustrates a way to organize this process.
|
|
<h2>Class Overview</h2>
|
|
<img src="Root-small.png" alt="Class overview" />
|
|
|
|
<h2>Detailed Class View</h2>
|
|
<img src="Root.png" alt="Detailed class view" />
|
|
|
|
<h2>Java Description</h2>
|
|
<fmtcode ext="java">
|
|
// Author: Vadim Nasardinov
|
|
// Version: $Id$
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* @assoc "1..1" - "0..n" Adapter
|
|
* @assoc "" - "0..n" ObjectType
|
|
* @assoc "" - "0..n" ObjectMap
|
|
* @assoc "" - "0..n" Table
|
|
* @assoc "" - "0..n" DataOperation
|
|
**/
|
|
class Root {
|
|
private Map m_adapters;
|
|
private List m_types;
|
|
private List m_maps;
|
|
private List m_tables;
|
|
private List m_ops;
|
|
|
|
public Adapter getAdapter(Class klass) {}
|
|
}
|
|
|
|
class Adapter {
|
|
public Root getRoot();
|
|
}
|
|
|
|
abstract class Element {
|
|
Root getRoot() {}
|
|
}
|
|
|
|
class ObjectType extends Element {}
|
|
|
|
/**
|
|
* @has "1..1" - "1..1" ObjectType
|
|
**/
|
|
class ObjectMap extends Element {
|
|
private ObjectType m_type;
|
|
}
|
|
|
|
class Table extends Element {}
|
|
|
|
class DataOperation extends Element {}
|
|
</fmtcode>
|
|
<h2>Makefile</h2>
|
|
<fmtcode ext="mak">
|
|
# Author: Vadim Nasardinov (vadimn@redhat.com)
|
|
# Since: 2004-05-26
|
|
# Version: $Id$
|
|
|
|
# Requires: graphviz
|
|
# Requires: transfig
|
|
# Requires: libxslt
|
|
# Requires: javac
|
|
# Requires: javadoc
|
|
# Requires: JAVA_HOME/lib/tools.jar
|
|
|
|
.PHONY : clean all build jar dot png debug
|
|
|
|
BUILD=build
|
|
|
|
jar_dir:=$(BUILD)/jars
|
|
diagrams := notes/diagrams
|
|
|
|
java_files := $(shell find $(diagrams) -name *.java)
|
|
dot_files := $(subst .java,.dot,$(java_files))
|
|
dot_files := $(foreach dot, $(dot_files), $(BUILD)/$(dot))
|
|
dot_files += $(subst .dot,-small.dot,$(dot_files))
|
|
|
|
png_files := $(subst .dot,.png,$(dot_files))
|
|
|
|
fig_files := $(shell find $(diagrams) -name *.fig)
|
|
|
|
png_files += $(subst .fig,.png,$(foreach fig, $(fig_files), $(BUILD)/$(fig)))
|
|
|
|
|
|
premade_src_png := $(shell find $(diagrams) -name *.png)
|
|
png_files += $(foreach png, $(premade_src_png), $(BUILD)/$(png))
|
|
|
|
xml_files:=$(shell find notes -name *.xml)
|
|
html_files:=$(subst notes/,$(BUILD)/notes/,$(xml_files))
|
|
html_files:=$(subst .xml,.html,$(html_files))
|
|
stylesheet:= notes/notes.xsl
|
|
|
|
javac_dest:=$(BUILD)/classes
|
|
|
|
classpath:=
|
|
javac=javac -classpath $(JAVA_HOME)/lib/tools.jar -d $(javac_dest)
|
|
|
|
timestamp:=$(BUILD)/.timestamp
|
|
|
|
uml_graph:=$(jar_dir)/UmlGraph.jar
|
|
|
|
jd:=javadoc
|
|
jd_flags := -docletpath $(uml_graph) -doclet gr.spinellis.umlgraph.doclet.UmlGraph -private
|
|
jd_flags += -nodefontname luxisr -nodefontabstractname luxisri
|
|
jd_flags += -edgefontname luxisr
|
|
jd_flags += -nodefontsize 8 -edgefontsize 8
|
|
jd_flags += -nodefillcolor LemonChiffon
|
|
detailed_flags := -attributes -operations -types
|
|
|
|
all: doc
|
|
|
|
clean:
|
|
rm -rf $(BUILD)
|
|
|
|
jar: $(uml_graph)
|
|
|
|
build: $(timestamp)
|
|
|
|
$(timestamp): src/UmlGraph.java
|
|
mkdir -p $(javac_dest)
|
|
$(javac) $?
|
|
touch $(timestamp)
|
|
|
|
$(uml_graph): $(timestamp)
|
|
mkdir -p $(jar_dir)
|
|
jar cf $(uml_graph) -C $(BUILD)/classes .
|
|
jar i $(uml_graph)
|
|
|
|
|
|
build/%.dot : %.java $(uml_graph)
|
|
mkdir -p $(dir $@)
|
|
$(jd) $(jd_flags) $(detailed_flags) -output $@ $<
|
|
|
|
build/%-small.dot : %.java $(uml_graph)
|
|
mkdir -p $(dir $@)
|
|
$(jd) $(jd_flags) -output $@ $<
|
|
|
|
%.png : %.dot $(uml_graph)
|
|
dot -Nheight=0.2 -Elabelfontcolor=DarkSlateBlue -Elabelfontsize=8 -Tpng -o $@ $<
|
|
|
|
build/%.png : %.fig
|
|
mkdir -p $(dir $@)
|
|
fig2dev -L png -S 4 $< $@
|
|
|
|
png: $(png_files)
|
|
|
|
build/%.png : %.png
|
|
mkdir -p $(dir $@)
|
|
cp $< $@
|
|
|
|
build/%.html: %.xml $(stylesheet)
|
|
mkdir -p $(dir $@)
|
|
xsltproc -o $@ $(stylesheet) $<
|
|
|
|
doc: $(html_files) $(png_files)
|
|
|
|
debug:
|
|
@echo $(dot_files)
|
|
</fmtcode>
|
|
</notes>
|