hutch-xamplr 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES.txt +14 -0
- data/README.rdoc +24 -4
- data/Rakefile +3 -3
- data/VERSION.yml +2 -2
- data/examples/employees/final/xampl-gen.rb +38 -0
- data/examples/employees/final/xml/ddd-final.xml +86 -0
- data/examples/employees/first/xampl-gen.rb +38 -0
- data/examples/employees/first/xml/ddd-first.xml +48 -0
- data/examples/employees/twist/twist.graphml +333 -0
- data/examples/employees/twist/xampl-gen.rb +38 -0
- data/examples/employees/twist/xml/twist.xml +90 -0
- data/examples/employees/xamplr-twist.xml +2 -0
- data/examples/employees/yuml-diagrams/ddd-final.png +0 -0
- data/examples/employees/yuml-diagrams/ddd-final.yuml +8 -0
- data/examples/employees/yuml-diagrams/ddd-first.png +0 -0
- data/examples/employees/yuml-diagrams/ddd-first.yuml +7 -0
- data/examples/employees/yuml-diagrams/final-yed.png +0 -0
- data/examples/employees/yuml-diagrams/first-yed.png +0 -0
- data/examples/employees/yuml-diagrams/twist.png +0 -0
- data/examples/employees/yuml-diagrams/twist.yuml +12 -0
- data/examples/employees/yuml-diagrams/xamplr-final-no-mixins.png +0 -0
- data/examples/employees/yuml-diagrams/xamplr-final-simplified.png +0 -0
- data/examples/employees/yuml-diagrams/xamplr-final-with-mixins.png +0 -0
- data/examples/employees/yuml-diagrams/yuml-simplified.txt +19 -0
- data/examples/employees/yuml-diagrams/yuml-with-mixins.txt +53 -0
- data/examples/employees/yuml-diagrams/yuml.txt +27 -0
- data/examples/random-people-shared-addresses/xampl-gen.rb +2 -0
- data/examples/random-people/xampl-gen.rb +2 -0
- data/examples/read-testing/xampl-gen.rb +2 -0
- data/examples/tokyo-cabinet-experimental/xampl-gen.rb +2 -0
- data/lib/xamplr-generator.rb +0 -1
- data/lib/xamplr.rb +1 -1
- data/lib/xamplr/graphml-out.rb +0 -12
- data/lib/xamplr/persisters/tokyo-cabinet.rb +12 -2
- data/lib/xamplr/xampl-generator.rb +4 -0
- data/lib/xamplr/yuml-out.rb +136 -0
- metadata +30 -4
data/CHANGES.txt
CHANGED
@@ -1,4 +1,18 @@
|
|
1
1
|
|
2
|
+
2009-05-12
|
3
|
+
-- confirmed to work with tokyocabinet-1.4.20 and tokyocabinet-ruby-1.23
|
4
|
+
-- the begginings of a new employee example from DDD book
|
5
|
+
-- enhancements and cleanup of the graphml generation (nice UML diagrams)
|
6
|
+
-- added a new yuml generation capability (very nice UML diagrams)
|
7
|
+
-- make xamplr-pp a prerequisite, rather than hutch-xamplr-pp
|
8
|
+
|
9
|
+
|
10
|
+
2009-05-11
|
11
|
+
-- lots of undocumented changes
|
12
|
+
-- when defining the mentions attributes, use 'mentioned_class'
|
13
|
+
rather than simply 'class'. Using just 'class' can cause some
|
14
|
+
wierd side-effects when querying.
|
15
|
+
|
2
16
|
2009-04-16 (version 1.0.2)
|
3
17
|
|
4
18
|
-- if tag starts with a number, prefix it with an 'x' (e.g. 0abc --> x0abc).
|
data/README.rdoc
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
xamplr is a set of software tools that supports development of ruby applications.
|
4
4
|
|
5
|
-
Features:
|
5
|
+
== Features:
|
6
|
+
|
6
7
|
- supports Domain Driven Design in Ruby
|
7
8
|
- persistence ignornace
|
8
9
|
- clusters, entities, 'regular' objects, and repositories (corresponding approximately to DDD's aggregates, entities, value objects, and repositories)
|
@@ -12,15 +13,34 @@ Features:
|
|
12
13
|
- fast development, fast execution
|
13
14
|
- has been in use in commercial software since 2004, a Java version has been in use since 1998.
|
14
15
|
|
15
|
-
Anti-Features:
|
16
|
+
== Anti-Features:
|
17
|
+
|
16
18
|
- absymal lack of documentation. If you are brave and willing to wade through (old) blog entries, you might try looking at:
|
17
19
|
|
18
20
|
http://recursive.ca/hutch/category/software/tools-i-use/xampl/
|
19
21
|
|
20
|
-
|
22
|
+
== Installation:
|
23
|
+
|
24
|
+
The stable release is hosted on rubyforge as a gem, so:
|
25
|
+
|
26
|
+
[sudo] gem install xamplr
|
27
|
+
|
28
|
+
The most recent release is hosted on github, also as a gem, so:
|
29
|
+
|
30
|
+
gem sources -a http://gems.github.com
|
31
|
+
[sudo] gem install hutch-xamplr
|
32
|
+
|
33
|
+
The most recent code is in the repository, so clone the github project and either
|
34
|
+
use it directly (with a little fooling about with load paths), or build it as a gem
|
35
|
+
and install locally.
|
36
|
+
|
37
|
+
== License:
|
38
|
+
|
39
|
+
For the moment it is AGPLv3 (see COPYING). An alternative license
|
21
40
|
may be negotiated, contact me. In the near future this license will be
|
22
41
|
relaxed.
|
23
42
|
|
24
|
-
|
43
|
+
Copyright Info:
|
25
44
|
|
26
45
|
Copyright (c) 2009 Bob Hutchison. See LICENSE and COPYING for details.
|
46
|
+
|
data/Rakefile
CHANGED
@@ -11,8 +11,8 @@ begin
|
|
11
11
|
gem.authors = ["Bob Hutchison"]
|
12
12
|
gem.rubyforge_project = 'xampl'
|
13
13
|
|
14
|
-
gem.add_dependency('
|
15
|
-
gem.add_dependency('libxml-ruby',
|
14
|
+
gem.add_dependency('xamplr-pp', '>=1.0.0')
|
15
|
+
gem.add_dependency('libxml-ruby', '>=1.1.3')
|
16
16
|
|
17
17
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
18
18
|
end
|
@@ -73,7 +73,7 @@ begin
|
|
73
73
|
)
|
74
74
|
|
75
75
|
host = "#{config['username']}@rubyforge.org"
|
76
|
-
remote_dir = "/var/www/gforge-projects/xampl
|
76
|
+
remote_dir = "/var/www/gforge-projects/xampl"
|
77
77
|
local_dir = 'rdoc'
|
78
78
|
|
79
79
|
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
data/VERSION.yml
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby -w -I..
|
2
|
+
|
3
|
+
if $0 == __FILE__ then
|
4
|
+
|
5
|
+
class File
|
6
|
+
def File.sjoin(*args)
|
7
|
+
File.join(args.select{ | o | o })
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
$LOAD_PATH.unshift('../../lib/')
|
12
|
+
|
13
|
+
require 'xamplr-generator'
|
14
|
+
|
15
|
+
include XamplGenerator
|
16
|
+
include Xampl
|
17
|
+
|
18
|
+
Xampl.transaction("setup", :in_memory) do
|
19
|
+
directory = File.sjoin(".", "xampl_generated_code")
|
20
|
+
|
21
|
+
options = Xampl.make(Options) do |options|
|
22
|
+
options.new_index_attribute("pid").persisted = true
|
23
|
+
options.new_index_attribute("id")
|
24
|
+
|
25
|
+
options.resolve("http://example.com/employees", "Employees", "emp")
|
26
|
+
end
|
27
|
+
|
28
|
+
filenames = Dir.glob("./xml/**/*.xml")
|
29
|
+
|
30
|
+
generator = Generator.new
|
31
|
+
generator.go(:options => options,
|
32
|
+
:filenames => filenames,
|
33
|
+
:directory => directory)
|
34
|
+
|
35
|
+
puts generator.print_elements("./generated-elements.xml")
|
36
|
+
exit!
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<!--
|
2
|
+
[RetirementPlan]^[DefinedContribution],
|
3
|
+
[RetirementPlan]^[DefinedBenefit],
|
4
|
+
[Payroll]^[HourlyPayroll],
|
5
|
+
[Payroll]^[SalariedPayroll],
|
6
|
+
[EmployeeType]->*[RetirementPlan],
|
7
|
+
[EmployeeType]->*[Payroll],
|
8
|
+
[Employee]*->[EmployeeType],
|
9
|
+
[Department]-*[Employee]
|
10
|
+
-->
|
11
|
+
<company pid=''
|
12
|
+
xmlns="http://example.com/employees">
|
13
|
+
|
14
|
+
<hourly-payroll pid='singleton'>
|
15
|
+
<payrole/>
|
16
|
+
</hourly-payroll>
|
17
|
+
<salaried-payroll pid='singleton'>
|
18
|
+
<payrole/>
|
19
|
+
</salaried-payroll>
|
20
|
+
|
21
|
+
<defined-contribution pid="singleton">
|
22
|
+
<retirement-plan/>
|
23
|
+
</defined-contribution>
|
24
|
+
<defined-benefit pid="singleton">
|
25
|
+
<retirement-plan/>
|
26
|
+
</defined-benefit>
|
27
|
+
|
28
|
+
<employee-type pid=''
|
29
|
+
title='janitor'>
|
30
|
+
<hourly-payroll pid='singleton'/>
|
31
|
+
<defined-contribution pid="singleton"/>
|
32
|
+
</employee-type>
|
33
|
+
<employee-type pid=''
|
34
|
+
title='receptionist'>
|
35
|
+
<hourly-payroll pid='singleton'/>
|
36
|
+
<defined-contribution pid="singleton"/>
|
37
|
+
</employee-type>
|
38
|
+
<employee-type pid=''
|
39
|
+
title='office-admin'>
|
40
|
+
<hourly-payroll pid='singleton'/>
|
41
|
+
<defined-benefit pid="singleton"/>
|
42
|
+
</employee-type>
|
43
|
+
<employee-type pid=''
|
44
|
+
title='engineer'>
|
45
|
+
<salaried-payroll pid='singleton'/>
|
46
|
+
<defined-benefit pid="singleton"/>
|
47
|
+
</employee-type>
|
48
|
+
<employee-type pid=''
|
49
|
+
title='manager'>
|
50
|
+
<salaried-payroll pid='singleton'/>
|
51
|
+
<defined-benefit pid="singleton"/>
|
52
|
+
</employee-type>
|
53
|
+
|
54
|
+
|
55
|
+
<department pid=''
|
56
|
+
name='widget design'>
|
57
|
+
<employee pid=''
|
58
|
+
name='tom'>
|
59
|
+
<employee-type pid=''
|
60
|
+
title='janitor'/>
|
61
|
+
</employee>
|
62
|
+
<employee pid=''
|
63
|
+
name='mary'
|
64
|
+
title='receptionist'>
|
65
|
+
<employee-type pid=''
|
66
|
+
title='receptionist'/>
|
67
|
+
</employee>
|
68
|
+
<employee pid=''
|
69
|
+
name='bob'
|
70
|
+
title='office-admin'>
|
71
|
+
<employee-type pid=''
|
72
|
+
title='office-admin'/>
|
73
|
+
</employee>
|
74
|
+
|
75
|
+
<employee pid=''
|
76
|
+
name='jack'>
|
77
|
+
<employee-type pid=''
|
78
|
+
title='engineer'/>
|
79
|
+
</employee>
|
80
|
+
<employee pid=''
|
81
|
+
name='jill'>
|
82
|
+
<employee-type pid=''
|
83
|
+
title='manager'/>
|
84
|
+
</employee>
|
85
|
+
</department>
|
86
|
+
</company>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby -w -I..
|
2
|
+
|
3
|
+
if $0 == __FILE__ then
|
4
|
+
|
5
|
+
class File
|
6
|
+
def File.sjoin(*args)
|
7
|
+
File.join(args.select{ | o | o })
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
$LOAD_PATH.unshift('../../lib/')
|
12
|
+
|
13
|
+
require 'xamplr-generator'
|
14
|
+
|
15
|
+
include XamplGenerator
|
16
|
+
include Xampl
|
17
|
+
|
18
|
+
Xampl.transaction("setup", :in_memory) do
|
19
|
+
directory = File.sjoin(".", "xampl_generated_code")
|
20
|
+
|
21
|
+
options = Xampl.make(Options) do |options|
|
22
|
+
options.new_index_attribute("pid").persisted = true
|
23
|
+
options.new_index_attribute("id")
|
24
|
+
|
25
|
+
options.resolve("http://example.com/employees", "Employees", "emp")
|
26
|
+
end
|
27
|
+
|
28
|
+
filenames = Dir.glob("./xml/**/*.xml")
|
29
|
+
|
30
|
+
generator = Generator.new
|
31
|
+
generator.go(:options => options,
|
32
|
+
:filenames => filenames,
|
33
|
+
:directory => directory)
|
34
|
+
|
35
|
+
puts generator.print_elements("./generated-elements.xml")
|
36
|
+
exit!
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
<!--
|
2
|
+
[RetirementPlan]^[DefinedContribution],
|
3
|
+
[RetirementPlan]^[DefinedBenefit],
|
4
|
+
[Employee]^[HourlyEmployee],
|
5
|
+
[Employee]^[SalariedEmployee],
|
6
|
+
[HourlyEmployee]->[DefinedContribution],
|
7
|
+
[SalariedEmployee]->[DefinedBenefit],
|
8
|
+
[Department]-*[Employee]
|
9
|
+
-->
|
10
|
+
<company pid=''
|
11
|
+
xmlns="http://example.com/employees">
|
12
|
+
|
13
|
+
<hourly-employee>
|
14
|
+
<defined-contribution pid='defined-contribution'>
|
15
|
+
<retirement-plan/>
|
16
|
+
</defined-contribution>
|
17
|
+
</hourly-employee>
|
18
|
+
|
19
|
+
<salaried-employee>
|
20
|
+
<defined-benefit pid='defined-benefit'>
|
21
|
+
<retirement-plan/>
|
22
|
+
</defined-benefit>
|
23
|
+
</salaried-employee>
|
24
|
+
|
25
|
+
<department pid=''
|
26
|
+
name='widget design'>
|
27
|
+
<hourly-employee>
|
28
|
+
<employee pid=''
|
29
|
+
name='tom'
|
30
|
+
title='janitor'/>
|
31
|
+
<employee pid=''
|
32
|
+
name='mary'
|
33
|
+
title='receptionist'/>
|
34
|
+
<employee pid=''
|
35
|
+
name='bob'
|
36
|
+
title='office-admin'/>
|
37
|
+
</hourly-employee>
|
38
|
+
|
39
|
+
<salaried-employee>
|
40
|
+
<employee pid=''
|
41
|
+
name='jack'
|
42
|
+
title='engineer'/>
|
43
|
+
<employee pid=''
|
44
|
+
name='jill'
|
45
|
+
title='manager'/>
|
46
|
+
</salaried-employee>
|
47
|
+
</department>
|
48
|
+
</company>
|
@@ -0,0 +1,333 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<graphml xmlns="http://graphml.graphdrawing.org/xmlns/graphml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns/graphml http://www.yworks.com/xml/schema/graphml/1.0/ygraphml.xsd">
|
3
|
+
<key for="node" id="d0" yfiles.type="nodegraphics"/>
|
4
|
+
<key attr.name="description" attr.type="string" for="node" id="d1"/>
|
5
|
+
<key for="edge" id="d2" yfiles.type="edgegraphics"/>
|
6
|
+
<key attr.name="description" attr.type="string" for="edge" id="d3"/>
|
7
|
+
<key for="graphml" id="d4" yfiles.type="resources"/>
|
8
|
+
<graph edgedefault="directed" id="G" parse.edges="12" parse.nodes="11" parse.order="free">
|
9
|
+
<node id="n0">
|
10
|
+
<data key="d0">
|
11
|
+
<y:UMLClassNode>
|
12
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="260.27392578125" y="502.689453125"/>
|
13
|
+
<y:Fill color="#99CCFF" transparent="false"/>
|
14
|
+
<y:BorderStyle color="#000000" type="line" width="2.0"/>
|
15
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="172.7080078125" x="28.3720703125" y="26.1328125">Employees::HourlyPayroll
|
16
|
+
</y:NodeLabel>
|
17
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
|
18
|
+
<y:AttributeLabel></y:AttributeLabel>
|
19
|
+
<y:MethodLabel></y:MethodLabel>
|
20
|
+
</y:UML>
|
21
|
+
</y:UMLClassNode>
|
22
|
+
</data>
|
23
|
+
<data key="d1">UMLClass</data>
|
24
|
+
</node>
|
25
|
+
<node id="n1">
|
26
|
+
<data key="d0">
|
27
|
+
<y:UMLClassNode>
|
28
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="-14.72607421875" y="502.689453125"/>
|
29
|
+
<y:Fill color="#CCFFCC" transparent="false"/>
|
30
|
+
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
31
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="131.3974609375" x="49.02734375" y="26.1328125">Employees::Payrole
|
32
|
+
</y:NodeLabel>
|
33
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="empty" use3DEffect="false">
|
34
|
+
<y:AttributeLabel></y:AttributeLabel>
|
35
|
+
<y:MethodLabel></y:MethodLabel>
|
36
|
+
</y:UML>
|
37
|
+
</y:UMLClassNode>
|
38
|
+
</data>
|
39
|
+
<data key="d1">UMLClass</data>
|
40
|
+
</node>
|
41
|
+
<node id="n2">
|
42
|
+
<data key="d0">
|
43
|
+
<y:UMLClassNode>
|
44
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="260.27392578125" y="227.689453125"/>
|
45
|
+
<y:Fill color="#FFCC99" transparent="false"/>
|
46
|
+
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
47
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="131.3974609375" x="49.02734375" y="26.1328125">Employees::Payrole
|
48
|
+
</y:NodeLabel>
|
49
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="mixin" use3DEffect="false">
|
50
|
+
<y:AttributeLabel></y:AttributeLabel>
|
51
|
+
<y:MethodLabel></y:MethodLabel>
|
52
|
+
</y:UML>
|
53
|
+
</y:UMLClassNode>
|
54
|
+
</data>
|
55
|
+
<data key="d1">UMLClass</data>
|
56
|
+
</node>
|
57
|
+
<node id="n3">
|
58
|
+
<data key="d0">
|
59
|
+
<y:UMLClassNode>
|
60
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="-14.72607421875" y="227.689453125"/>
|
61
|
+
<y:Fill color="#99CCFF" transparent="false"/>
|
62
|
+
<y:BorderStyle color="#000000" type="line" width="2.0"/>
|
63
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="181.3154296875" x="24.068359375" y="26.1328125">Employees::SalariedPayroll
|
64
|
+
</y:NodeLabel>
|
65
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
|
66
|
+
<y:AttributeLabel></y:AttributeLabel>
|
67
|
+
<y:MethodLabel></y:MethodLabel>
|
68
|
+
</y:UML>
|
69
|
+
</y:UMLClassNode>
|
70
|
+
</data>
|
71
|
+
<data key="d1">UMLClass</data>
|
72
|
+
</node>
|
73
|
+
<node id="n4">
|
74
|
+
<data key="d0">
|
75
|
+
<y:UMLClassNode>
|
76
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="1085.27392578125" y="227.689453125"/>
|
77
|
+
<y:Fill color="#99CCFF" transparent="false"/>
|
78
|
+
<y:BorderStyle color="#000000" type="line" width="2.0"/>
|
79
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="219.4521484375" x="5.0" y="26.1328125">Employees::DefinedContribution
|
80
|
+
</y:NodeLabel>
|
81
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
|
82
|
+
<y:AttributeLabel></y:AttributeLabel>
|
83
|
+
<y:MethodLabel></y:MethodLabel>
|
84
|
+
</y:UML>
|
85
|
+
</y:UMLClassNode>
|
86
|
+
</data>
|
87
|
+
<data key="d1">UMLClass</data>
|
88
|
+
</node>
|
89
|
+
<node id="n5">
|
90
|
+
<data key="d0">
|
91
|
+
<y:UMLClassNode>
|
92
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="1085.27392578125" y="502.689453125"/>
|
93
|
+
<y:Fill color="#CCFFCC" transparent="false"/>
|
94
|
+
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
95
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="184.16552734375" x="22.643310546875" y="26.1328125">Employees::RetirementPlan
|
96
|
+
</y:NodeLabel>
|
97
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="empty" use3DEffect="false">
|
98
|
+
<y:AttributeLabel></y:AttributeLabel>
|
99
|
+
<y:MethodLabel></y:MethodLabel>
|
100
|
+
</y:UML>
|
101
|
+
</y:UMLClassNode>
|
102
|
+
</data>
|
103
|
+
<data key="d1">UMLClass</data>
|
104
|
+
</node>
|
105
|
+
<node id="n6">
|
106
|
+
<data key="d0">
|
107
|
+
<y:UMLClassNode>
|
108
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="810.27392578125" y="227.689453125"/>
|
109
|
+
<y:Fill color="#FFCC99" transparent="false"/>
|
110
|
+
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
111
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="184.16552734375" x="22.643310546875" y="26.1328125">Employees::RetirementPlan
|
112
|
+
</y:NodeLabel>
|
113
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="mixin" use3DEffect="false">
|
114
|
+
<y:AttributeLabel></y:AttributeLabel>
|
115
|
+
<y:MethodLabel></y:MethodLabel>
|
116
|
+
</y:UML>
|
117
|
+
</y:UMLClassNode>
|
118
|
+
</data>
|
119
|
+
<data key="d1">UMLClass</data>
|
120
|
+
</node>
|
121
|
+
<node id="n7">
|
122
|
+
<data key="d0">
|
123
|
+
<y:UMLClassNode>
|
124
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="810.27392578125" y="502.689453125"/>
|
125
|
+
<y:Fill color="#99CCFF" transparent="false"/>
|
126
|
+
<y:BorderStyle color="#000000" type="line" width="2.0"/>
|
127
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="181.302734375" x="24.07470703125" y="26.1328125">Employees::DefinedBenefit
|
128
|
+
</y:NodeLabel>
|
129
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
|
130
|
+
<y:AttributeLabel></y:AttributeLabel>
|
131
|
+
<y:MethodLabel></y:MethodLabel>
|
132
|
+
</y:UML>
|
133
|
+
</y:UMLClassNode>
|
134
|
+
</data>
|
135
|
+
<data key="d1">UMLClass</data>
|
136
|
+
</node>
|
137
|
+
<node id="n8">
|
138
|
+
<data key="d0">
|
139
|
+
<y:UMLClassNode>
|
140
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="535.27392578125" y="227.689453125"/>
|
141
|
+
<y:Fill color="#99CCFF" transparent="false"/>
|
142
|
+
<y:BorderStyle color="#000000" type="line" width="2.0"/>
|
143
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="179.296875" x="25.07763671875" y="26.1328125">Employees::EmployeeType
|
144
|
+
</y:NodeLabel>
|
145
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
|
146
|
+
<y:AttributeLabel></y:AttributeLabel>
|
147
|
+
<y:MethodLabel></y:MethodLabel>
|
148
|
+
</y:UML>
|
149
|
+
</y:UMLClassNode>
|
150
|
+
</data>
|
151
|
+
<data key="d1">UMLClass</data>
|
152
|
+
</node>
|
153
|
+
<node id="n9">
|
154
|
+
<data key="d0">
|
155
|
+
<y:UMLClassNode>
|
156
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="535.27392578125" y="-22.310546875"/>
|
157
|
+
<y:Fill color="#99CCFF" transparent="false"/>
|
158
|
+
<y:BorderStyle color="#000000" type="line" width="2.0"/>
|
159
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="161.5361328125" x="33.9580078125" y="26.1328125">Employees::Department
|
160
|
+
</y:NodeLabel>
|
161
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
|
162
|
+
<y:AttributeLabel></y:AttributeLabel>
|
163
|
+
<y:MethodLabel></y:MethodLabel>
|
164
|
+
</y:UML>
|
165
|
+
</y:UMLClassNode>
|
166
|
+
</data>
|
167
|
+
<data key="d1">UMLClass</data>
|
168
|
+
</node>
|
169
|
+
<node id="n10">
|
170
|
+
<data key="d0">
|
171
|
+
<y:UMLClassNode>
|
172
|
+
<y:Geometry height="44.62109375" width="229.4521484375" x="535.27392578125" y="52.689453125"/>
|
173
|
+
<y:Fill color="#99CCFF" transparent="false"/>
|
174
|
+
<y:BorderStyle color="#000000" type="line" width="2.0"/>
|
175
|
+
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="146.517578125" x="41.46728515625" y="26.1328125">Employees::Employee
|
176
|
+
</y:NodeLabel>
|
177
|
+
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
|
178
|
+
<y:AttributeLabel></y:AttributeLabel>
|
179
|
+
<y:MethodLabel></y:MethodLabel>
|
180
|
+
</y:UML>
|
181
|
+
</y:UMLClassNode>
|
182
|
+
</data>
|
183
|
+
<data key="d1">UMLClass</data>
|
184
|
+
</node>
|
185
|
+
<edge id="e0" source="n0" target="n1">
|
186
|
+
<data key="d2">
|
187
|
+
<y:PolyLineEdge>
|
188
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
189
|
+
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
190
|
+
<y:Arrows source="none" target="short"/>
|
191
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-24.7935791015625" y="2.0"></y:EdgeLabel>
|
192
|
+
<y:BendStyle smoothed="false"/>
|
193
|
+
</y:PolyLineEdge>
|
194
|
+
</data>
|
195
|
+
<data key="d3">UMLuses</data>
|
196
|
+
</edge>
|
197
|
+
<edge id="e1" source="n0" target="n2">
|
198
|
+
<data key="d2">
|
199
|
+
<y:PolyLineEdge>
|
200
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
201
|
+
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
202
|
+
<y:Arrows source="none" target="white_delta"/>
|
203
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="-117.1763916015625"></y:EdgeLabel>
|
204
|
+
<y:BendStyle smoothed="false"/>
|
205
|
+
</y:PolyLineEdge>
|
206
|
+
</data>
|
207
|
+
<data key="d3">UMLinherits</data>
|
208
|
+
</edge>
|
209
|
+
<edge id="e2" source="n3" target="n1">
|
210
|
+
<data key="d2">
|
211
|
+
<y:PolyLineEdge>
|
212
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
213
|
+
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
214
|
+
<y:Arrows source="none" target="short"/>
|
215
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="113.1763916015625"></y:EdgeLabel>
|
216
|
+
<y:BendStyle smoothed="false"/>
|
217
|
+
</y:PolyLineEdge>
|
218
|
+
</data>
|
219
|
+
<data key="d3">UMLuses</data>
|
220
|
+
</edge>
|
221
|
+
<edge id="e3" source="n3" target="n2">
|
222
|
+
<data key="d2">
|
223
|
+
<y:PolyLineEdge>
|
224
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
225
|
+
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
226
|
+
<y:Arrows source="none" target="white_delta"/>
|
227
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="20.7935791015625" y="2.0"></y:EdgeLabel>
|
228
|
+
<y:BendStyle smoothed="false"/>
|
229
|
+
</y:PolyLineEdge>
|
230
|
+
</data>
|
231
|
+
<data key="d3">UMLinherits</data>
|
232
|
+
</edge>
|
233
|
+
<edge id="e4" source="n4" target="n5">
|
234
|
+
<data key="d2">
|
235
|
+
<y:PolyLineEdge>
|
236
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
237
|
+
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
238
|
+
<y:Arrows source="none" target="short"/>
|
239
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="113.1763916015625"></y:EdgeLabel>
|
240
|
+
<y:BendStyle smoothed="false"/>
|
241
|
+
</y:PolyLineEdge>
|
242
|
+
</data>
|
243
|
+
<data key="d3">UMLuses</data>
|
244
|
+
</edge>
|
245
|
+
<edge id="e5" source="n4" target="n6">
|
246
|
+
<data key="d2">
|
247
|
+
<y:PolyLineEdge>
|
248
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
249
|
+
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
250
|
+
<y:Arrows source="none" target="white_delta"/>
|
251
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-24.7935791015625" y="2.0"></y:EdgeLabel>
|
252
|
+
<y:BendStyle smoothed="false"/>
|
253
|
+
</y:PolyLineEdge>
|
254
|
+
</data>
|
255
|
+
<data key="d3">UMLinherits</data>
|
256
|
+
</edge>
|
257
|
+
<edge id="e6" source="n7" target="n5">
|
258
|
+
<data key="d2">
|
259
|
+
<y:PolyLineEdge>
|
260
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
261
|
+
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
262
|
+
<y:Arrows source="none" target="short"/>
|
263
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="20.7935791015625" y="2.0"></y:EdgeLabel>
|
264
|
+
<y:BendStyle smoothed="false"/>
|
265
|
+
</y:PolyLineEdge>
|
266
|
+
</data>
|
267
|
+
<data key="d3">UMLuses</data>
|
268
|
+
</edge>
|
269
|
+
<edge id="e7" source="n7" target="n6">
|
270
|
+
<data key="d2">
|
271
|
+
<y:PolyLineEdge>
|
272
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
273
|
+
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
274
|
+
<y:Arrows source="none" target="white_delta"/>
|
275
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="-117.1763916015625"></y:EdgeLabel>
|
276
|
+
<y:BendStyle smoothed="false"/>
|
277
|
+
</y:PolyLineEdge>
|
278
|
+
</data>
|
279
|
+
<data key="d3">UMLinherits</data>
|
280
|
+
</edge>
|
281
|
+
<edge id="e8" source="n9" target="n10">
|
282
|
+
<data key="d2">
|
283
|
+
<y:PolyLineEdge>
|
284
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
285
|
+
<y:LineStyle color="#000000" type="line" width="2.0"/>
|
286
|
+
<y:Arrows source="none" target="short"/>
|
287
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="13.19775390625"></y:EdgeLabel>
|
288
|
+
<y:BendStyle smoothed="false"/>
|
289
|
+
</y:PolyLineEdge>
|
290
|
+
</data>
|
291
|
+
<data key="d3">UMLuses</data>
|
292
|
+
</edge>
|
293
|
+
<edge id="e9" source="n10" target="n8">
|
294
|
+
<data key="d2">
|
295
|
+
<y:PolyLineEdge>
|
296
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
297
|
+
<y:LineStyle color="#000000" type="line" width="2.0"/>
|
298
|
+
<y:Arrows source="none" target="short"/>
|
299
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="63.155029296875"></y:EdgeLabel>
|
300
|
+
<y:BendStyle smoothed="false"/>
|
301
|
+
</y:PolyLineEdge>
|
302
|
+
</data>
|
303
|
+
<data key="d3">UMLuses</data>
|
304
|
+
</edge>
|
305
|
+
<edge id="e10" source="n8" target="n6">
|
306
|
+
<data key="d2">
|
307
|
+
<y:PolyLineEdge>
|
308
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
309
|
+
<y:LineStyle color="#000000" type="line" width="2.0"/>
|
310
|
+
<y:Arrows source="none" target="short"/>
|
311
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="20.7935791015625" y="2.0"></y:EdgeLabel>
|
312
|
+
<y:BendStyle smoothed="false"/>
|
313
|
+
</y:PolyLineEdge>
|
314
|
+
</data>
|
315
|
+
<data key="d3">UMLuses</data>
|
316
|
+
</edge>
|
317
|
+
<edge id="e11" source="n8" target="n2">
|
318
|
+
<data key="d2">
|
319
|
+
<y:PolyLineEdge>
|
320
|
+
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
321
|
+
<y:LineStyle color="#000000" type="line" width="2.0"/>
|
322
|
+
<y:Arrows source="none" target="short"/>
|
323
|
+
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-24.7935791015625" y="2.0"></y:EdgeLabel>
|
324
|
+
<y:BendStyle smoothed="false"/>
|
325
|
+
</y:PolyLineEdge>
|
326
|
+
</data>
|
327
|
+
<data key="d3">UMLuses</data>
|
328
|
+
</edge>
|
329
|
+
</graph>
|
330
|
+
<data key="d4">
|
331
|
+
<y:Resources/>
|
332
|
+
</data>
|
333
|
+
</graphml>
|