diff options
author | Christian W. Damus | 2014-01-20 23:00:52 +0000 |
---|---|---|
committer | Christian W. Damus | 2014-01-21 20:15:22 +0000 |
commit | 420f24ed767922df86bf5a2ef7321b90e9584210 (patch) | |
tree | b4198c68b6b09d0aaaaeb078bc2b3681dcf8c199 | |
parent | aa458bf567ee6786a2d8bf681bcb86573e7e227a (diff) | |
download | org.eclipse.uml2-420f24ed767922df86bf5a2ef7321b90e9584210.tar.gz org.eclipse.uml2-420f24ed767922df86bf5a2ef7321b90e9584210.tar.xz org.eclipse.uml2-420f24ed767922df86bf5a2ef7321b90e9584210.zip |
[382342] Make Getting Started Documentation more helpful
https://bugs.eclipse.org/bugs/show_bug.cgi?id=382342
Implement example plug-ins with complete source and models for the getting-started tutorials on the wiki.
23 files changed, 6233 insertions, 0 deletions
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/.classpath b/examples/org.eclipse.uml2.examples.gettingstarted/.classpath new file mode 100644 index 000000000..64c5e31b7 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/.project b/examples/org.eclipse.uml2.examples.gettingstarted/.project new file mode 100644 index 000000000..df9303cd2 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.uml2.examples.gettingstarted</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.uml2.examples.gettingstarted/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..66c27085a --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +#Wed Nov 08 08:52:48 EST 2006 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/GettingStartedWithUML2.launch b/examples/org.eclipse.uml2.examples.gettingstarted/GettingStartedWithUML2.launch new file mode 100644 index 000000000..369fe5501 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/GettingStartedWithUML2.launch @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.uml2.examples.gettingstarted.GettingStartedWithUML2"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="${project_loc:/org.eclipse.uml2.examples.gettingstarted}"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uml2.examples.gettingstarted"/> +</launchConfiguration> diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/META-INF/MANIFEST.MF b/examples/org.eclipse.uml2.examples.gettingstarted/META-INF/MANIFEST.MF new file mode 100644 index 000000000..202f59a4c --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.uml2.examples.gettingstarted +Bundle-Version: 5.0.0.qualifier +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Require-Bundle: org.eclipse.uml2.uml, + org.eclipse.uml2.uml.resources diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/build.properties b/examples/org.eclipse.uml2.examples.gettingstarted/build.properties new file mode 100644 index 000000000..a9fa4ddba --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/build.properties @@ -0,0 +1,14 @@ +# Copyright (c) 2014 CEA and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Christian W. Damus (CEA) - initial API and implementation +# +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.properties diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.graffle b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.graffle new file mode 100644 index 000000000..fe1b83f8b --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.graffle @@ -0,0 +1,3359 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>ApplicationVersion</key> + <array> + <string>com.omnigroup.OmniGraffle.MacAppStore</string> + <string>139.18</string> + </array> + <key>AutoAdjust</key> + <true/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {733, 576}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>BaseZoom</key> + <integer>0</integer> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>36</real> + <key>CreationDate</key> + <string>2014-01-20 15:22:54 +0000</string> + <key>Creator</key> + <string>Christian W. Damus</string> + <key>DisplayScale</key> + <string>1 0/72 in = 1.0000 in</string> + <key>GraphDocumentVersion</key> + <integer>8</integer> + <key>GraphicsList</key> + <array> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{493, 72}, {100.49527740478516, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>34</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 \'abenumeration\'bb +\b \ +OrderStatus}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{493, 100}, {100.49527740478516, 42}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>35</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 Pending\ +BackOrder\ +Complete}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>34</integer> + <integer>35</integer> + <array/> + </array> + <key>ID</key> + <integer>33</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{36.003494657576084, 213.62804011195203}, {84.091156005859375, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>118</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>116</integer> + <key>Offset</key> + <real>40</real> + <key>Position</key> + <real>0.8898048996925354</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + customers}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{19.84220639616251, 215.60183271774531}, {16, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>117</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>116</integer> + <key>Offset</key> + <real>-10.206866264343262</real> + <key>Position</key> + <real>0.89926862716674805</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 *}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>53</integer> + <key>Info</key> + <integer>1</integer> + </dict> + <key>ID</key> + <integer>116</integer> + <key>OrthogonalBarAutomatic</key> + <true/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>-1</real> + <key>Points</key> + <array> + <string>{95, 91.999990463256836}</string> + <string>{38.049072660505772, 243.61050415039062}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>StickArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>FilledDiamond</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>45</integer> + <key>Info</key> + <integer>11</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{118.1586616282938, 235.26979313098175}, {100.49527509265215, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>115</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>111</integer> + <key>Offset</key> + <real>8.6179580688476562</real> + <key>Position</key> + <real>0.33617675304412842</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + customer}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{121.52156607691438, 252.67219351125448}, {30.500008046627045, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>114</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>111</integer> + <key>Offset</key> + <real>-8.8688383102416992</real> + <key>Position</key> + <real>0.12520366907119751</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 1}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{207.70938139384299, 235.46926250596638}, {100.49527509265215, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>113</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>111</integer> + <key>Offset</key> + <real>8.6575708389282227</real> + <key>Position</key> + <real>0.93427544832229614</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + orders}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{240.66028552406357, 253.1997877906328}, {16, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>112</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>111</integer> + <key>Offset</key> + <real>-9.0977115631103516</real> + <key>Position</key> + <real>0.87250030040740967</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 *}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>49</integer> + <key>Info</key> + <integer>16</integer> + </dict> + <key>ID</key> + <integer>111</integer> + <key>Points</key> + <array> + <string>{118.04907048493691, 250.75333831098322}</string> + <string>{267.77453517913818, 251.1530749797821}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>54</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{115.43220916390419, 127.81516378188473}, {30.500008046627045, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>110</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>107</integer> + <key>Offset</key> + <real>13.182218551635742</real> + <key>Position</key> + <real>0.0870494544506073</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 0..1}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{168.80171439675919, 208.16214799880981}, {100.49527509265215, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>109</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>107</integer> + <key>Offset</key> + <real>8.6575708389282227</real> + <key>Position</key> + <real>0.81409287452697754</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + shippedOrders}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{242.10720315651693, 225.91743040084839}, {16, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>108</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>107</integer> + <key>Offset</key> + <real>-9.0977115631103516</real> + <key>Position</key> + <real>0.93259161710739136</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 *}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>49</integer> + <key>Info</key> + <integer>18</integer> + </dict> + <key>ID</key> + <integer>107</integer> + <key>OrthogonalBarAutomatic</key> + <true/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>-1</real> + <key>Points</key> + <array> + <string>{117.49999463558197, 112}</string> + <string>{267.77453517913818, 223.81971883773804}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>StickArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>45</integer> + <key>Info</key> + <integer>9</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{160.43220648169518, 127.75877319755557}, {30.500008046627045, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>106</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>103</integer> + <key>Offset</key> + <real>13.182218551635742</real> + <key>Position</key> + <real>0.11993391066789627</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 0..1}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{164.49342825810396, 180.82884073257446}, {100.49527509265215, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>105</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>103</integer> + <key>Offset</key> + <real>8.6575708389282227</real> + <key>Position</key> + <real>0.72052490711212158</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + pendingOrders}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{239.31361881026777, 198.58412313461304}, {16, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>104</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>103</integer> + <key>Offset</key> + <real>-9.0977115631103516</real> + <key>Position</key> + <real>0.89217525720596313</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 *}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>49</integer> + </dict> + <key>ID</key> + <integer>103</integer> + <key>OrthogonalBarAutomatic</key> + <true/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>-1</real> + <key>Points</key> + <array> + <string>{162.49999195337296, 112}</string> + <string>{267.77453517913818, 196.48641157150269}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>StickArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>45</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{234.16145972907543, 153.57876680917315}, {58.885189056396484, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>101</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>98</integer> + <key>Offset</key> + <real>-24.837148666381836</real> + <key>Position</key> + <real>0.88550984859466553</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + orders}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{291.50634364783764, 149.02141673911598}, {16, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>99</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>98</integer> + <key>Offset</key> + <real>11.065140724182129</real> + <key>Position</key> + <real>0.86204993724822998</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 *}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>49</integer> + </dict> + <key>ID</key> + <integer>98</integer> + <key>OrthogonalBarAutomatic</key> + <true/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>-1</real> + <key>Points</key> + <array> + <string>{185, 92.000006357828966}</string> + <string>{288.44120292365551, 182.81973838806152}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>StickArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>FilledDiamond</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>45</integer> + <key>Info</key> + <integer>5</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{282.33458232879639, 278.1104066509842}, {58.885189056396484, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>97</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>93</integer> + <key>Offset</key> + <real>-17.997358322143555</real> + <key>Position</key> + <real>0.25149482488632202</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + order}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{282.58546161651611, 323.03310961604387}, {58.885189056396484, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>96</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>93</integer> + <key>Offset</key> + <real>-17.746479034423828</real> + <key>Position</key> + <real>0.80829405784606934</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + items}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{328.33879566192627, 278.72137491628177}, {17, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>95</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>93</integer> + <key>Offset</key> + <real>7.0642604827880859</real> + <key>Position</key> + <real>0.25906753540039062</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 1}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{332.83967590332031, 327.37015283767687}, {16, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>94</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>93</integer> + <key>Offset</key> + <real>11.065140724182129</real> + <key>Position</key> + <real>0.86204993724822998</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 *}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>74</integer> + </dict> + <key>ID</key> + <integer>93</integer> + <key>Points</key> + <array> + <string>{329.77453517913818, 264.81973838806152}</string> + <string>{329.77453517913818, 345.4999999882524}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledDiamond</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>49</integer> + <key>Info</key> + <integer>13</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{323.09316419296056, 121.00176048278809}, {98.533048417629743, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>92</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>89</integer> + <key>Offset</key> + <real>11.998239517211914</real> + <key>Position</key> + <real>0.67153030633926392</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + previousOrder}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{350.66158884763718, 148.63110248855082}, {37.420150756835938, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>90</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>89</integer> + <key>Offset</key> + <real>18.930458068847656</real> + <key>Position</key> + <real>0.86204993724822998</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 0..1}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>49</integer> + </dict> + <key>ID</key> + <integer>89</integer> + <key>OrthogonalBarAutomatic</key> + <true/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>8.1627330780029297</real> + <key>Points</key> + <array> + <string>{391.77453517913818, 196.4864054620266}</string> + <string>{420, 172}</string> + <string>{390.55751408139872, 140}</string> + <string>{350.44120615720749, 182.81973838806152}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>StickArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>49</integer> + <key>Info</key> + <integer>6</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{455.03025684753391, 190.62238558152168}, {48.901283264160156, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>88</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>85</integer> + <key>Offset</key> + <real>12.482394218444824</real> + <key>Position</key> + <real>0.70044249296188354</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + billTo}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{499.23289730696695, 213.15992368325908}, {16, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>86</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>85</integer> + <key>Offset</key> + <real>-10.070422172546387</real> + <key>Position</key> + <real>0.92195957899093628</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 1}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>57</integer> + <key>Info</key> + <integer>12</integer> + </dict> + <key>ID</key> + <integer>85</integer> + <key>Points</key> + <array> + <string>{391.77453517913818, 210.15307742357254}</string> + <string>{517, 210.08412170410156}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>StickArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledDiamond</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>49</integer> + <key>Info</key> + <integer>7</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{450.22681799056664, 217.72158099143414}, {58.885189056396484, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>84</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>16</integer> + <key>Offset</key> + <real>12.482394218444824</real> + <key>Position</key> + <real>0.70221322774887085</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 + shipTo}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{500.09332289563446, 240.18319961830576}, {16, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>82</integer> + <key>Line</key> + <dict> + <key>ID</key> + <integer>16</integer> + <key>Offset</key> + <real>-10.070422172546387</real> + <key>Position</key> + <real>0.92861652374267578</real> + <key>RotationType</key> + <integer>0</integer> + </dict> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 1}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>57</integer> + <key>Info</key> + <integer>10</integer> + </dict> + <key>ID</key> + <integer>16</integer> + <key>Points</key> + <array> + <string>{391.77453517913818, 237.48640912771225}</string> + <string>{517, 237.08411204814911}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>StickArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledDiamond</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>49</integer> + <key>Info</key> + <integer>9</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>70</integer> + </dict> + <key>ID</key> + <integer>81</integer> + <key>OrthogonalBarAutomatic</key> + <true/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>-1</real> + <key>Points</key> + <array> + <string>{638.00000310353607, 346.58412170410156}</string> + <string>{638.00000310353607, 393.08412170410156}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>UMLInheritance</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>65</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>57</integer> + <key>Info</key> + <integer>8</integer> + </dict> + <key>ID</key> + <integer>80</integer> + <key>OrthogonalBarAutomatic</key> + <false/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>0.0</real> + <key>Points</key> + <array> + <string>{630.07766372896083, 306.2443101588741}</string> + <string>{570, 250.58412170410156}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>UMLInheritance</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>66</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>57</integer> + <key>Info</key> + <integer>8</integer> + </dict> + <key>ID</key> + <integer>27</integer> + <key>OrthogonalBarAutomatic</key> + <false/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>0.0</real> + <key>Points</key> + <array> + <string>{496.62048817816253, 306.28182344838785}</string> + <string>{570, 250.58412170410156}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>UMLInheritance</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>62</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{120, 395.63946533203125}, {75, 29}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>79</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict/> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 SKU}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{120, 340.63946533203125}, {75, 29}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>78</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict/> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 Date}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{30, 395.63946533203125}, {75, 29}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>77</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict/> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 String}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{30, 340.63946533203125}, {75, 29}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>11</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict/> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 int}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{267.77453517913818, 346}, {124, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>74</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 Item}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{267.77453517913818, 360}, {124, 84}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>75</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 productName : String\ +quantity : int\ +USPrice : int\ +comment : String\ +shipDate : Date\ +partNum : SKU}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{267.77453517913818, 444}, {124, 12}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>76</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>74</integer> + <integer>75</integer> + <integer>76</integer> + <array/> + </array> + <key>ID</key> + <integer>73</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{585, 393.58412170410156}, {106, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>70</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 GlobalLocation}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{585, 407.58412170410156}, {106, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>71</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 countryCode : int}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{585, 421.58412170410156}, {106, 12}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>72</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>70</integer> + <integer>71</integer> + <integer>72</integer> + <array/> + </array> + <key>ID</key> + <integer>69</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{585, 306.58412170410156}, {106, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>66</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 GlobalAddress}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{585, 320.58412170410156}, {106, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>67</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 location : String}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{585, 334.58412170410156}, {106, 12}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>68</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>66</integer> + <integer>67</integer> + <integer>68</integer> + <array/> + </array> + <key>GroupConnect</key> + <string>YES</string> + <key>ID</key> + <integer>65</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{434, 306.58412170410156}, {106, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>62</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 USAddress}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{434, 320.58412170410156}, {106, 56}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>63</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 street : String\ +city : String\ +state : String\ +zip : int}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{434, 376.58412170410156}, {106, 12}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>64</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>62</integer> + <integer>63</integer> + <integer>64</integer> + <array/> + </array> + <key>ID</key> + <integer>61</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{517, 196.58412170410156}, {106, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>58</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\i\b\fs24 \cf0 Address}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{517, 210.58412170410156}, {106, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>59</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 name : String\ +country : String}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{517, 238.58412170410156}, {106, 12}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>60</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>58</integer> + <integer>59</integer> + <integer>60</integer> + <array/> + </array> + <key>GroupConnect</key> + <string>YES</string> + <key>ID</key> + <integer>57</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{11.549072265625, 243.61050415039062}, {106, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>54</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 Customer}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{11.549072265625, 257.61050415039062}, {106, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>55</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 customerID : int}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{11.549072265625, 271.61050415039062}, {106, 12}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>56</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>54</integer> + <integer>55</integer> + <integer>56</integer> + <array/> + </array> + <key>GroupConnect</key> + <string>YES</string> + <key>ID</key> + <integer>53</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567259, -0.59628480672836304}</string> + <string>{1.333333373069763, 1.5894572413799324e-07}</string> + <string>{1.1925696134567259, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{267.77453517913818, 182.81973838806152}, {124, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>50</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 PurchaseOrder}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{267.77453517913818, 196.81973838806152}, {124, 56}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>51</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 comment : String\ +orderDate : Date\ +status : OrderStatus\ +totalAmount : int}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{267.77453517913818, 252.81973838806152}, {124, 12}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>52</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>50</integer> + <integer>51</integer> + <integer>52</integer> + <array/> + </array> + <key>GroupConnect</key> + <string>YES</string> + <key>ID</key> + <integer>49</integer> + <key>Magnets</key> + <array> + <string>{-0.7396002417658698, -1.1094003915786743}</string> + <string>{-0.42163697454145854, -1.2649110555648804}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.42163710648196329, -1.2649110555648804}</string> + <string>{0.73960031615696309, -1.1094003915786743}</string> + <string>{1.1094003915786743, -0.73960025003154684}</string> + <string>{1.2649110555648804, -0.4216368426009538}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.2649110555648804, 0.42163714417925036}</string> + <string>{1.1094003915786743, 0.73960034921967122}</string> + <string>{0.73960021696883871, 1.1094003915786743}</string> + <string>{0.42163699339010208, 1.2649110555648804}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.42163733062650977, 1.2649109363555908}</string> + <string>{-0.73960021696883871, 1.1094003915786743}</string> + <string>{-1.1094003915786743, 0.73960034921967122}</string> + <string>{-1.2649110555648804, 0.42163676720637966}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.2649109363555908, -0.4216371798373757}</string> + <string>{-1.1094005107879639, -0.73960016419084695}</string> + </array> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{95, 72}, {90, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>46</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 Supplier}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{95, 86}, {90, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>47</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 name : String}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{95, 100}, {90, 12}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>48</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>46</integer> + <integer>47</integer> + <integer>48</integer> + <array/> + </array> + <key>GroupConnect</key> + <string>YES</string> + <key>ID</key> + <integer>45</integer> + <key>Magnets</key> + <array> + <string>{-0.59628479784302701, -1.1925696134567261}</string> + <string>{1.9868215517249155e-08, -1.3333333730697632}</string> + <string>{0.59628487781105122, -1.1925696134567261}</string> + <string>{1.1925696134567261, -0.59628480672836304}</string> + <string>{1.3333333730697632, 1.5894572413799324e-07}</string> + <string>{1.1925696134567261, 0.59628473564567486}</string> + <string>{0.59628465308492196, 1.1925697326660156}</string> + <string>{0, 1.3333333730697632}</string> + <string>{-0.5962849488937394, 1.1925696134567261}</string> + <string>{-1.1925697326660156, 0.5962844398368361}</string> + <string>{-1.3333333730697632, -6.3578289655197295e-07}</string> + <string>{-1.1925696134567261, -0.59628480672836304}</string> + </array> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>GuidesLocked</key> + <string>NO</string> + <key>GuidesVisible</key> + <string>YES</string> + <key>HPages</key> + <integer>1</integer> + <key>ImageCounter</key> + <integer>1</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>Layer 1</string> + <key>Print</key> + <string>YES</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>LinksVisible</key> + <string>NO</string> + <key>MagnetsVisible</key> + <string>NO</string> + <key>MasterSheets</key> + <array/> + <key>ModificationDate</key> + <string>2014-01-20 17:15:49 +0000</string> + <key>Modifier</key> + <string>Christian W. Damus</string> + <key>NotesVisible</key> + <string>NO</string> + <key>Orientation</key> + <integer>1</integer> + <key>OriginVisible</key> + <string>NO</string> + <key>PageBreaks</key> + <string>YES</string> + <key>PrintInfo</key> + <dict> + <key>NSBottomMargin</key> + <array> + <string>float</string> + <string>41</string> + </array> + <key>NSHorizonalPagination</key> + <array> + <string>coded</string> + <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string> + </array> + <key>NSLeftMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSPaperSize</key> + <array> + <string>size</string> + <string>{612, 792}</string> + </array> + <key>NSPrintReverseOrientation</key> + <array> + <string>int</string> + <string>0</string> + </array> + <key>NSRightMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSTopMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + </dict> + <key>PrintOnePage</key> + <false/> + <key>ReadOnly</key> + <string>NO</string> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>Canvas 1</string> + <key>SmartAlignmentGuidesActive</key> + <string>YES</string> + <key>SmartDistanceGuidesActive</key> + <string>YES</string> + <key>UniqueID</key> + <integer>1</integer> + <key>UseEntirePage</key> + <false/> + <key>VPages</key> + <integer>1</integer> + <key>WindowInfo</key> + <dict> + <key>CurrentSheet</key> + <integer>0</integer> + <key>ExpandedCanvases</key> + <array> + <dict> + <key>name</key> + <string>Canvas 1</string> + </dict> + </array> + <key>Frame</key> + <string>{{840, 525}, {1043, 872}}</string> + <key>ListView</key> + <true/> + <key>OutlineWidth</key> + <integer>142</integer> + <key>RightSidebar</key> + <false/> + <key>ShowRuler</key> + <true/> + <key>Sidebar</key> + <true/> + <key>SidebarWidth</key> + <integer>120</integer> + <key>VisibleRegion</key> + <string>{{-88, -78}, {908, 733}}</string> + <key>Zoom</key> + <real>1</real> + <key>ZoomValues</key> + <array> + <array> + <string>Canvas 1</string> + <real>1</real> + <real>1</real> + </array> + </array> + </dict> +</dict> +</plist> diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.png b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.png Binary files differnew file mode 100644 index 000000000..0c19dfdf2 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.png diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.uml b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.uml new file mode 100644 index 000000000..da21537ee --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.uml @@ -0,0 +1,199 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_stid4YH4EeOZq68N3n_w7g" name="epo2"> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IIH4EeOZq68N3n_w7g" name="int"/> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IYH4EeOZq68N3n_w7g" name="String"/> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IoH4EeOZq68N3n_w7g" name="Date"/> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6I4H4EeOZq68N3n_w7g" name="SKU"/> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_stk6JIH4EeOZq68N3n_w7g" name="OrderStatus"> + <ownedLiteral xmi:id="_stk6JYH4EeOZq68N3n_w7g" name="Pending"/> + <ownedLiteral xmi:id="_stk6JoH4EeOZq68N3n_w7g" name="BackOrder"/> + <ownedLiteral xmi:id="_stk6J4H4EeOZq68N3n_w7g" name="Complete"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stk6KIH4EeOZq68N3n_w7g" name="Supplier"> + <ownedAttribute xmi:id="_stk6KYH4EeOZq68N3n_w7g" name="name" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stk6KoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stk6K4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stk6LIH4EeOZq68N3n_w7g" name="orders" type="_stlhQIH4EeOZq68N3n_w7g" aggregation="composite" association="_stmIaIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stk6LYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stk6LoH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhMIH4EeOZq68N3n_w7g" name="pendingOrders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmIbIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhMYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhMoH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhM4H4EeOZq68N3n_w7g" name="shippedOrders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmIcIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhNIH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhNYH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhNoH4EeOZq68N3n_w7g" name="customers" type="_stlhOYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvU4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhN4H4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhOIH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stlhOYH4EeOZq68N3n_w7g" name="Customer"> + <ownedAttribute xmi:id="_stlhOoH4EeOZq68N3n_w7g" name="customerID" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhO4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhPIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhPYH4EeOZq68N3n_w7g" name="orders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvV4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhPoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhP4H4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stlhQIH4EeOZq68N3n_w7g" name="PurchaseOrder"> + <ownedAttribute xmi:id="_stlhQYH4EeOZq68N3n_w7g" name="comment" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhQoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhQ4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhRIH4EeOZq68N3n_w7g" name="orderDate" type="_stk6IoH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhRYH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhRoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhR4H4EeOZq68N3n_w7g" name="status" type="_stk6JIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhSIH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhSYH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhSoH4EeOZq68N3n_w7g" name="totalAmount" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhS4H4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhTIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhTYH4EeOZq68N3n_w7g" name="customer" type="_stlhOYH4EeOZq68N3n_w7g" association="_stmvV4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhToH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhT4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhUIH4EeOZq68N3n_w7g" name="previousOrder" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvWIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhUYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhUoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhU4H4EeOZq68N3n_w7g" name="items" type="_stlhXIH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvXIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhVIH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhVYH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhVoH4EeOZq68N3n_w7g" name="billTo" type="_stmISYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvXYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhV4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhWIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhWYH4EeOZq68N3n_w7g" name="shipTo" type="_stmISYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvYYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhWoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhW4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stlhXIH4EeOZq68N3n_w7g" name="Item"> + <ownedAttribute xmi:id="_stlhXYH4EeOZq68N3n_w7g" name="productName" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhXoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhX4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhYIH4EeOZq68N3n_w7g" name="quantity" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhYYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhYoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhY4H4EeOZq68N3n_w7g" name="usPrice" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhZIH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhZYH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhZoH4EeOZq68N3n_w7g" name="comment" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhZ4H4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhaIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIQIH4EeOZq68N3n_w7g" name="shipDate" type="_stk6IoH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIQYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIQoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIQ4H4EeOZq68N3n_w7g" name="partNum" type="_stk6I4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIRIH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIRYH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIRoH4EeOZq68N3n_w7g" name="order" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvXIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIR4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmISIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stmISYH4EeOZq68N3n_w7g" name="Address" isAbstract="true"> + <ownedAttribute xmi:id="_stmISoH4EeOZq68N3n_w7g" name="name" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIS4H4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmITIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmITYH4EeOZq68N3n_w7g" name="country" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIToH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIT4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stmIUIH4EeOZq68N3n_w7g" name="USAddress"> + <generalization xmi:id="_stmIUYH4EeOZq68N3n_w7g" general="_stmISYH4EeOZq68N3n_w7g"/> + <ownedAttribute xmi:id="_stmIUoH4EeOZq68N3n_w7g" name="street" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIU4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIVIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIVYH4EeOZq68N3n_w7g" name="city" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIVoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIV4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIWIH4EeOZq68N3n_w7g" name="state" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIWYH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIWoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIW4H4EeOZq68N3n_w7g" name="zip" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIXIH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIXYH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stmIXoH4EeOZq68N3n_w7g" name="GlobalAddress"> + <generalization xmi:id="_stmIX4H4EeOZq68N3n_w7g" general="_stmISYH4EeOZq68N3n_w7g"/> + <generalization xmi:id="_stmIYIH4EeOZq68N3n_w7g" general="_stmIZIH4EeOZq68N3n_w7g"/> + <ownedAttribute xmi:id="_stmIYYH4EeOZq68N3n_w7g" name="location" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIYoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIY4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stmIZIH4EeOZq68N3n_w7g" name="GlobalLocation"> + <ownedAttribute xmi:id="_stmIZYH4EeOZq68N3n_w7g" name="countryCode" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIZoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIZ4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmIaIH4EeOZq68N3n_w7g" memberEnd="_stk6LIH4EeOZq68N3n_w7g _stmIaYH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmIaYH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIaIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIaoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIa4H4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmIbIH4EeOZq68N3n_w7g" memberEnd="_stlhMIH4EeOZq68N3n_w7g _stmIbYH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmIbYH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIbIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIboH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIb4H4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmIcIH4EeOZq68N3n_w7g" memberEnd="_stlhM4H4EeOZq68N3n_w7g _stmvUIH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvUIH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIcIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvUYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvUoH4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvU4H4EeOZq68N3n_w7g" memberEnd="_stlhNoH4EeOZq68N3n_w7g _stmvVIH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvVIH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmvU4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvVYH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvVoH4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvV4H4EeOZq68N3n_w7g" memberEnd="_stlhPYH4EeOZq68N3n_w7g _stlhTYH4EeOZq68N3n_w7g"/> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvWIH4EeOZq68N3n_w7g" memberEnd="_stlhUIH4EeOZq68N3n_w7g _stmvWYH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvWYH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvWIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvWoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvW4H4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvXIH4EeOZq68N3n_w7g" memberEnd="_stlhU4H4EeOZq68N3n_w7g _stmIRoH4EeOZq68N3n_w7g"/> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvXYH4EeOZq68N3n_w7g" memberEnd="_stlhVoH4EeOZq68N3n_w7g _stmvXoH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvXoH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvXYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvX4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvYIH4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvYYH4EeOZq68N3n_w7g" memberEnd="_stlhWYH4EeOZq68N3n_w7g _stmvYoH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvYoH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvYYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvY4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvZIH4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> +</uml:Model> diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/plugin.properties b/examples/org.eclipse.uml2.examples.gettingstarted/plugin.properties new file mode 100644 index 000000000..fa4aec2ee --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/plugin.properties @@ -0,0 +1,14 @@ +# Copyright (c) 2014 CEA and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Christian W. Damus (CEA) - initial API and implementation +# + +# NLS_MESSAGEFORMAT_VAR + +pluginName = Getting Started with UML2 Example Project +providerName = Eclipse Modeling Project diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java b/examples/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java new file mode 100644 index 000000000..2651640c0 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java @@ -0,0 +1,420 @@ +/* + * Copyright (c) 2014 CEA and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christian W. Damus (CEA) - Initial API and implementation + * + */ +package org.eclipse.uml2.examples.gettingstarted; + +import java.io.File; +import java.io.IOException; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.uml2.common.util.UML2Util; +import org.eclipse.uml2.uml.AggregationKind; +import org.eclipse.uml2.uml.Association; +import org.eclipse.uml2.uml.Classifier; +import org.eclipse.uml2.uml.Enumeration; +import org.eclipse.uml2.uml.EnumerationLiteral; +import org.eclipse.uml2.uml.Generalization; +import org.eclipse.uml2.uml.LiteralUnlimitedNatural; +import org.eclipse.uml2.uml.Model; +import org.eclipse.uml2.uml.PrimitiveType; +import org.eclipse.uml2.uml.Property; +import org.eclipse.uml2.uml.Type; +import org.eclipse.uml2.uml.UMLFactory; +import org.eclipse.uml2.uml.resource.UMLResource; +import org.eclipse.uml2.uml.resources.util.UMLResourcesUtil; + +/** + * A Java program that may be run stand-alone (with the required EMF and UML2 + * bundle JARs on the classpath) to create the example model illustrated in the + * <em>Getting Started with UML2</em> article on the Wiki. + * + * @see http://wiki.eclipse.org/MDT/UML2/Getting_Started_with_UML2 + */ +public class GettingStartedWithUML2 { + + public static boolean DEBUG = true; + + private static File outputDir; + + /** + * The main program. It expects one argument, which is the local filesystem + * path of a directory in which to create the <tt>ExtendedPO2.uml</tt> file. + * + * @param the + * program arguments, which must consist of a single filesystem + * path + */ + public static void main(String[] args) + throws Exception { + + if (!processArgs(args)) { + System.exit(1); + } + + banner("Creating root model package and primitive types."); + + // Create the root package (a model). + Model epo2Model = createModel("epo2"); + + // Create primitive types to be used as types of attributes in our + // classes. + PrimitiveType intPrimitiveType = createPrimitiveType(epo2Model, "int"); + PrimitiveType stringPrimitiveType = createPrimitiveType(epo2Model, + "String"); + PrimitiveType datePrimitiveType = createPrimitiveType(epo2Model, "Date"); + PrimitiveType skuPrimitiveType = createPrimitiveType(epo2Model, "SKU"); + + // Create enumerations to be used as types of attributes in our classes. + Enumeration orderStatusEnumeration = createEnumeration(epo2Model, + "OrderStatus"); + createEnumerationLiteral(orderStatusEnumeration, "Pending"); + createEnumerationLiteral(orderStatusEnumeration, "BackOrder"); + createEnumerationLiteral(orderStatusEnumeration, "Complete"); + + banner("Creating model classes."); + + // Create the classes. + org.eclipse.uml2.uml.Class supplierClass = createClass(epo2Model, + "Supplier", false); + org.eclipse.uml2.uml.Class customerClass = createClass(epo2Model, + "Customer", false); + org.eclipse.uml2.uml.Class purchaseOrderClass = createClass(epo2Model, + "PurchaseOrder", false); + org.eclipse.uml2.uml.Class itemClass = createClass(epo2Model, "Item", + false); + org.eclipse.uml2.uml.Class addressClass = createClass(epo2Model, + "Address", true); + org.eclipse.uml2.uml.Class usAddressClass = createClass(epo2Model, + "USAddress", false); + org.eclipse.uml2.uml.Class globalAddressClass = createClass(epo2Model, + "GlobalAddress", false); + org.eclipse.uml2.uml.Class globalLocationClass = createClass(epo2Model, + "GlobalLocation", false); + + // Create generalization relationships amongst our classes. + createGeneralization(usAddressClass, addressClass); + createGeneralization(globalAddressClass, addressClass); + createGeneralization(globalAddressClass, globalLocationClass); + + banner("Creating attributes of model classes."); + + // Create attributes in our classes. + createAttribute(supplierClass, "name", stringPrimitiveType, 0, 1); + createAttribute(customerClass, "customerID", intPrimitiveType, 1, 1); + createAttribute(purchaseOrderClass, "comment", stringPrimitiveType, 0, + 1); + createAttribute(purchaseOrderClass, "orderDate", datePrimitiveType, 1, + 1); + createAttribute(purchaseOrderClass, "status", orderStatusEnumeration, + 1, 1); + createAttribute(purchaseOrderClass, "totalAmount", intPrimitiveType, 0, + 1); + createAttribute(itemClass, "productName", stringPrimitiveType, 0, 1); + createAttribute(itemClass, "quantity", intPrimitiveType, 0, 1); + createAttribute(itemClass, "usPrice", intPrimitiveType, 0, 1); + createAttribute(itemClass, "comment", stringPrimitiveType, 0, 1); + createAttribute(itemClass, "shipDate", datePrimitiveType, 0, 1); + createAttribute(itemClass, "partNum", skuPrimitiveType, 1, 1); + createAttribute(addressClass, "name", stringPrimitiveType, 0, 1); + createAttribute(addressClass, "country", stringPrimitiveType, 0, 1); + createAttribute(usAddressClass, "street", stringPrimitiveType, 1, 1); + createAttribute(usAddressClass, "city", stringPrimitiveType, 1, 1); + createAttribute(usAddressClass, "state", stringPrimitiveType, 1, 1); + createAttribute(usAddressClass, "zip", stringPrimitiveType, 1, 1); + createAttribute(globalAddressClass, "location", stringPrimitiveType, 1, + 1); + createAttribute(globalLocationClass, "countryCode", intPrimitiveType, + 1, 1); + + banner("Creating associations between model classes."); + + // Create associations between our classes. + createAssociation(supplierClass, true, + AggregationKind.COMPOSITE_LITERAL, "orders", 0, + LiteralUnlimitedNatural.UNLIMITED, purchaseOrderClass, false, + AggregationKind.NONE_LITERAL, "", 1, 1); + createAssociation(supplierClass, true, AggregationKind.NONE_LITERAL, + "pendingOrders", 0, LiteralUnlimitedNatural.UNLIMITED, + purchaseOrderClass, false, AggregationKind.NONE_LITERAL, "", 0, 1); + createAssociation(supplierClass, true, AggregationKind.NONE_LITERAL, + "shippedOrders", 0, LiteralUnlimitedNatural.UNLIMITED, + purchaseOrderClass, false, AggregationKind.NONE_LITERAL, "", 0, 1); + createAssociation(supplierClass, true, + AggregationKind.COMPOSITE_LITERAL, "customers", 0, + LiteralUnlimitedNatural.UNLIMITED, customerClass, false, + AggregationKind.NONE_LITERAL, "", 1, 1); + createAssociation(customerClass, true, AggregationKind.NONE_LITERAL, + "orders", 0, LiteralUnlimitedNatural.UNLIMITED, purchaseOrderClass, + true, AggregationKind.NONE_LITERAL, "customer", 1, 1); + createAssociation(purchaseOrderClass, true, + AggregationKind.NONE_LITERAL, "previousOrder", 0, 1, + purchaseOrderClass, false, AggregationKind.NONE_LITERAL, "", 0, 1); + createAssociation(purchaseOrderClass, true, + AggregationKind.COMPOSITE_LITERAL, "items", 0, + LiteralUnlimitedNatural.UNLIMITED, itemClass, true, + AggregationKind.NONE_LITERAL, "order", 1, 1); + createAssociation(purchaseOrderClass, true, + AggregationKind.COMPOSITE_LITERAL, "billTo", 1, 1, addressClass, + false, AggregationKind.NONE_LITERAL, "", 1, 1); + createAssociation(purchaseOrderClass, true, + AggregationKind.COMPOSITE_LITERAL, "shipTo", 1, 1, addressClass, + false, AggregationKind.NONE_LITERAL, "", 1, 1); + + // Save our model to a file in the user-specified output directory + URI outputURI = URI.createFileURI(outputDir.getAbsolutePath()) + .appendSegment("ExtendedPO2") + .appendFileExtension(UMLResource.FILE_EXTENSION); + banner("Saving the model to %s.", outputURI.toFileString()); + save(epo2Model, outputURI); + } + + // + // Model-building utilities + // + + protected static Model createModel(String name) { + Model model = UMLFactory.eINSTANCE.createModel(); + model.setName(name); + + out("Model '%s' created.", model.getQualifiedName()); + + return model; + } + + protected static org.eclipse.uml2.uml.Package createPackage( + org.eclipse.uml2.uml.Package nestingPackage, String name) { + + org.eclipse.uml2.uml.Package package_ = nestingPackage + .createNestedPackage(name); + + out("Package '%s' created.", package_.getQualifiedName()); + + return package_; + } + + protected static PrimitiveType createPrimitiveType( + org.eclipse.uml2.uml.Package package_, String name) { + + PrimitiveType primitiveType = package_.createOwnedPrimitiveType(name); + + out("Primitive type '%s' created.", primitiveType.getQualifiedName()); + + return primitiveType; + } + + protected static Enumeration createEnumeration( + org.eclipse.uml2.uml.Package package_, String name) { + + Enumeration enumeration = package_.createOwnedEnumeration(name); + + out("Enumeration '%s' created.", enumeration.getQualifiedName()); + + return enumeration; + } + + protected static EnumerationLiteral createEnumerationLiteral( + Enumeration enumeration, String name) { + + EnumerationLiteral enumerationLiteral = enumeration + .createOwnedLiteral(name); + + out("Enumeration literal '%s' created.", + enumerationLiteral.getQualifiedName()); + + return enumerationLiteral; + } + + protected static org.eclipse.uml2.uml.Class createClass( + org.eclipse.uml2.uml.Package package_, String name, + boolean isAbstract) { + + org.eclipse.uml2.uml.Class class_ = package_.createOwnedClass(name, + isAbstract); + + out("Class '%s' created.", class_.getQualifiedName()); + + return class_; + } + + protected static Generalization createGeneralization( + Classifier specificClassifier, Classifier generalClassifier) { + + Generalization generalization = specificClassifier + .createGeneralization(generalClassifier); + + out("Generalization %s --|> %s created.", + specificClassifier.getQualifiedName(), + generalClassifier.getQualifiedName()); + + return generalization; + } + + protected static Property createAttribute( + org.eclipse.uml2.uml.Class class_, String name, Type type, + int lowerBound, int upperBound) { + + Property attribute = class_.createOwnedAttribute(name, type, + lowerBound, upperBound); + + out("Attribute '%s' : %s [%s..%s] created.", // + attribute.getQualifiedName(), // attribute name + type.getQualifiedName(), // type name + lowerBound, // no special case for multiplicity lower bound + (upperBound == LiteralUnlimitedNatural.UNLIMITED) + ? "*" // special case for unlimited bound + : upperBound); + + return attribute; + } + + protected static Association createAssociation(Type type1, + boolean end1IsNavigable, AggregationKind end1Aggregation, + String end1Name, int end1LowerBound, int end1UpperBound, + Type type2, boolean end2IsNavigable, + AggregationKind end2Aggregation, String end2Name, + int end2LowerBound, int end2UpperBound) { + + Association association = type1.createAssociation(end1IsNavigable, + end1Aggregation, end1Name, end1LowerBound, end1UpperBound, type2, + end2IsNavigable, end2Aggregation, end2Name, end2LowerBound, + end2UpperBound); + + out("Association %s [%s..%s] %s-%s %s [%s..%s] created.", // + UML2Util.isEmpty(end1Name) + // compute a placeholder for the name + ? String.format("{%s}", type1.getQualifiedName()) // + // user-specified name + : String.format("'%s::%s'", type1.getQualifiedName(), end1Name), // + end1LowerBound, // no special case for this + (end1UpperBound == LiteralUnlimitedNatural.UNLIMITED) + ? "*" // special case for unlimited upper bound + : end1UpperBound, // finite upper bound + end2IsNavigable + ? "<" // indicate navigability + : "-", // not navigable + end1IsNavigable + ? ">" // indicate navigability + : "-", // not navigable + UML2Util.isEmpty(end2Name) + // compute a placeholder for the name + ? String.format("{%s}", type2.getQualifiedName()) // + // user-specified name + : String.format("'%s::%s'", type2.getQualifiedName(), end2Name), // + end2LowerBound, // no special case for this + (end2UpperBound == LiteralUnlimitedNatural.UNLIMITED) + ? "*" // special case for unlimited upper bound + : end2UpperBound); + + return association; + } + + // + // Program control + // + + private static boolean processArgs(String[] args) + throws IOException { + + if (args.length != 1) { + err("Expected 1 argument."); + err("Usage: java -jar ... %s <dir>", + GettingStartedWithUML2.class.getSimpleName()); + err("where"); + err("<dir> - path to output folder in which to save the UML model"); + return false; + } + + outputDir = new File(args[0]).getCanonicalFile(); + if (!outputDir.exists()) { + err("No such directory: %s", outputDir.getAbsolutePath()); + return false; + } + + if (!outputDir.isDirectory()) { + err("Not a directory: %s", outputDir.getAbsolutePath()); + return false; + } + + if (!outputDir.canWrite()) { + err("Cannot create a file in directory: %s", + outputDir.getAbsolutePath()); + return false; + } + + return true; + } + + protected static void save(org.eclipse.uml2.uml.Package package_, URI uri) { + // Create a resource-set to contain the resource(s) that we are saving + ResourceSet resourceSet = new ResourceSetImpl(); + + // Initialize registrations of resource factories, library models, + // profiles, Ecore metadata, and other dependencies required for + // serializing and working with UML resources. This is only necessary in + // applications that are not hosted in the Eclipse platform run-time, in + // which case these registrations are discovered automatically from + // Eclipse extension points. + UMLResourcesUtil.init(resourceSet); + + // Create the output resource and add our model package to it. + Resource resource = resourceSet.createResource(uri); + resource.getContents().add(package_); + + // And save + try { + resource.save(null); // no save options needed + out("Done."); + } catch (IOException ioe) { + err(ioe.getMessage()); + } + } + + // + // Logging utilities + // + + protected static void banner(String format, Object... args) { + System.out.println(); + hrule(); + + System.out.printf(format, args); + if (!format.endsWith("%n")) { + System.out.println(); + } + + hrule(); + System.out.println(); + } + + protected static void hrule() { + System.out.println("------------------------------------"); + } + + protected static void out(String format, Object... args) { + if (DEBUG) { + System.out.printf(format, args); + if (!format.endsWith("%n")) { + System.out.println(); + } + } + } + + protected static void err(String format, Object... args) { + System.err.printf(format, args); + if (!format.endsWith("%n")) { + System.err.println(); + } + } +} diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/.classpath b/examples/org.eclipse.uml2.examples.introtoprofiles/.classpath new file mode 100644 index 000000000..64c5e31b7 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/.project b/examples/org.eclipse.uml2.examples.introtoprofiles/.project new file mode 100644 index 000000000..2740b23fb --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.uml2.examples.introtoprofiles</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.uml2.examples.introtoprofiles/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..66c27085a --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +#Wed Nov 08 08:52:48 EST 2006 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/ExtendedPO2.uml b/examples/org.eclipse.uml2.examples.introtoprofiles/ExtendedPO2.uml new file mode 100644 index 000000000..da21537ee --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/ExtendedPO2.uml @@ -0,0 +1,199 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_stid4YH4EeOZq68N3n_w7g" name="epo2"> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IIH4EeOZq68N3n_w7g" name="int"/> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IYH4EeOZq68N3n_w7g" name="String"/> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IoH4EeOZq68N3n_w7g" name="Date"/> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6I4H4EeOZq68N3n_w7g" name="SKU"/> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_stk6JIH4EeOZq68N3n_w7g" name="OrderStatus"> + <ownedLiteral xmi:id="_stk6JYH4EeOZq68N3n_w7g" name="Pending"/> + <ownedLiteral xmi:id="_stk6JoH4EeOZq68N3n_w7g" name="BackOrder"/> + <ownedLiteral xmi:id="_stk6J4H4EeOZq68N3n_w7g" name="Complete"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stk6KIH4EeOZq68N3n_w7g" name="Supplier"> + <ownedAttribute xmi:id="_stk6KYH4EeOZq68N3n_w7g" name="name" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stk6KoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stk6K4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stk6LIH4EeOZq68N3n_w7g" name="orders" type="_stlhQIH4EeOZq68N3n_w7g" aggregation="composite" association="_stmIaIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stk6LYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stk6LoH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhMIH4EeOZq68N3n_w7g" name="pendingOrders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmIbIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhMYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhMoH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhM4H4EeOZq68N3n_w7g" name="shippedOrders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmIcIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhNIH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhNYH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhNoH4EeOZq68N3n_w7g" name="customers" type="_stlhOYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvU4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhN4H4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhOIH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stlhOYH4EeOZq68N3n_w7g" name="Customer"> + <ownedAttribute xmi:id="_stlhOoH4EeOZq68N3n_w7g" name="customerID" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhO4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhPIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhPYH4EeOZq68N3n_w7g" name="orders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvV4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhPoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhP4H4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stlhQIH4EeOZq68N3n_w7g" name="PurchaseOrder"> + <ownedAttribute xmi:id="_stlhQYH4EeOZq68N3n_w7g" name="comment" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhQoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhQ4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhRIH4EeOZq68N3n_w7g" name="orderDate" type="_stk6IoH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhRYH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhRoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhR4H4EeOZq68N3n_w7g" name="status" type="_stk6JIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhSIH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhSYH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhSoH4EeOZq68N3n_w7g" name="totalAmount" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhS4H4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhTIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhTYH4EeOZq68N3n_w7g" name="customer" type="_stlhOYH4EeOZq68N3n_w7g" association="_stmvV4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhToH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhT4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhUIH4EeOZq68N3n_w7g" name="previousOrder" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvWIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhUYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhUoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhU4H4EeOZq68N3n_w7g" name="items" type="_stlhXIH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvXIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhVIH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhVYH4EeOZq68N3n_w7g" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhVoH4EeOZq68N3n_w7g" name="billTo" type="_stmISYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvXYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhV4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhWIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhWYH4EeOZq68N3n_w7g" name="shipTo" type="_stmISYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvYYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhWoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhW4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stlhXIH4EeOZq68N3n_w7g" name="Item"> + <ownedAttribute xmi:id="_stlhXYH4EeOZq68N3n_w7g" name="productName" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhXoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhX4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhYIH4EeOZq68N3n_w7g" name="quantity" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhYYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhYoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhY4H4EeOZq68N3n_w7g" name="usPrice" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhZIH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhZYH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stlhZoH4EeOZq68N3n_w7g" name="comment" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhZ4H4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhaIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIQIH4EeOZq68N3n_w7g" name="shipDate" type="_stk6IoH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIQYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIQoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIQ4H4EeOZq68N3n_w7g" name="partNum" type="_stk6I4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIRIH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIRYH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIRoH4EeOZq68N3n_w7g" name="order" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvXIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIR4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmISIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stmISYH4EeOZq68N3n_w7g" name="Address" isAbstract="true"> + <ownedAttribute xmi:id="_stmISoH4EeOZq68N3n_w7g" name="name" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIS4H4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmITIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmITYH4EeOZq68N3n_w7g" name="country" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIToH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIT4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stmIUIH4EeOZq68N3n_w7g" name="USAddress"> + <generalization xmi:id="_stmIUYH4EeOZq68N3n_w7g" general="_stmISYH4EeOZq68N3n_w7g"/> + <ownedAttribute xmi:id="_stmIUoH4EeOZq68N3n_w7g" name="street" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIU4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIVIH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIVYH4EeOZq68N3n_w7g" name="city" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIVoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIV4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIWIH4EeOZq68N3n_w7g" name="state" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIWYH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIWoH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_stmIW4H4EeOZq68N3n_w7g" name="zip" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIXIH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIXYH4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stmIXoH4EeOZq68N3n_w7g" name="GlobalAddress"> + <generalization xmi:id="_stmIX4H4EeOZq68N3n_w7g" general="_stmISYH4EeOZq68N3n_w7g"/> + <generalization xmi:id="_stmIYIH4EeOZq68N3n_w7g" general="_stmIZIH4EeOZq68N3n_w7g"/> + <ownedAttribute xmi:id="_stmIYYH4EeOZq68N3n_w7g" name="location" type="_stk6IYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIYoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIY4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_stmIZIH4EeOZq68N3n_w7g" name="GlobalLocation"> + <ownedAttribute xmi:id="_stmIZYH4EeOZq68N3n_w7g" name="countryCode" type="_stk6IIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIZoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIZ4H4EeOZq68N3n_w7g" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmIaIH4EeOZq68N3n_w7g" memberEnd="_stk6LIH4EeOZq68N3n_w7g _stmIaYH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmIaYH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIaIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIaoH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIa4H4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmIbIH4EeOZq68N3n_w7g" memberEnd="_stlhMIH4EeOZq68N3n_w7g _stmIbYH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmIbYH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIbIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIboH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIb4H4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmIcIH4EeOZq68N3n_w7g" memberEnd="_stlhM4H4EeOZq68N3n_w7g _stmvUIH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvUIH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIcIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvUYH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvUoH4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvU4H4EeOZq68N3n_w7g" memberEnd="_stlhNoH4EeOZq68N3n_w7g _stmvVIH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvVIH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmvU4H4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvVYH4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvVoH4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvV4H4EeOZq68N3n_w7g" memberEnd="_stlhPYH4EeOZq68N3n_w7g _stlhTYH4EeOZq68N3n_w7g"/> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvWIH4EeOZq68N3n_w7g" memberEnd="_stlhUIH4EeOZq68N3n_w7g _stmvWYH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvWYH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvWIH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvWoH4EeOZq68N3n_w7g"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvW4H4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvXIH4EeOZq68N3n_w7g" memberEnd="_stlhU4H4EeOZq68N3n_w7g _stmIRoH4EeOZq68N3n_w7g"/> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvXYH4EeOZq68N3n_w7g" memberEnd="_stlhVoH4EeOZq68N3n_w7g _stmvXoH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvXoH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvXYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvX4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvYIH4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_stmvYYH4EeOZq68N3n_w7g" memberEnd="_stlhWYH4EeOZq68N3n_w7g _stmvYoH4EeOZq68N3n_w7g"> + <ownedEnd xmi:id="_stmvYoH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvYYH4EeOZq68N3n_w7g"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvY4H4EeOZq68N3n_w7g" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvZIH4EeOZq68N3n_w7g" value="1"/> + </ownedEnd> + </packagedElement> +</uml:Model> diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/IntroductionToUMLProfiles.launch b/examples/org.eclipse.uml2.examples.introtoprofiles/IntroductionToUMLProfiles.launch new file mode 100644 index 000000000..ed34d78c9 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/IntroductionToUMLProfiles.launch @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.uml2.examples.introtoprofiles.IntroductionToUMLProfiles"/> +<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="${project_loc:/org.eclipse.uml2.examples.introtoprofiles}"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uml2.examples.introtoprofiles"/> +</launchConfiguration> diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/META-INF/MANIFEST.MF b/examples/org.eclipse.uml2.examples.introtoprofiles/META-INF/MANIFEST.MF new file mode 100644 index 000000000..fd8497176 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.uml2.examples.introtoprofiles +Bundle-Version: 5.0.0.qualifier +Bundle-Vendor: %providerName +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-Localization: plugin +Require-Bundle: org.eclipse.uml2.uml, + org.eclipse.uml2.uml.resources diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/build.properties b/examples/org.eclipse.uml2.examples.introtoprofiles/build.properties new file mode 100644 index 000000000..a9fa4ddba --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/build.properties @@ -0,0 +1,14 @@ +# Copyright (c) 2014 CEA and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Christian W. Damus (CEA) - initial API and implementation +# +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.properties diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/plugin.properties b/examples/org.eclipse.uml2.examples.introtoprofiles/plugin.properties new file mode 100644 index 000000000..5bea4f07b --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/plugin.properties @@ -0,0 +1,14 @@ +# Copyright (c) 2014 CEA and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Christian W. Damus (CEA) - initial API and implementation +# + +# NLS_MESSAGEFORMAT_VAR + +pluginName = Introduction to UML Profiles Example Project +providerName = Eclipse Modeling Project diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.graffle b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.graffle new file mode 100644 index 000000000..fc12c4319 --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.graffle @@ -0,0 +1,1090 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>ApplicationVersion</key> + <array> + <string>com.omnigroup.OmniGraffle.MacAppStore</string> + <string>139.18</string> + </array> + <key>AutoAdjust</key> + <true/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {733, 576}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>BaseZoom</key> + <integer>0</integer> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>36</real> + <key>CreationDate</key> + <string>2014-01-20 15:22:54 +0000</string> + <key>Creator</key> + <string>Christian W. Damus</string> + <key>DisplayScale</key> + <string>1 0/72 in = 1.0000 in</string> + <key>GraphDocumentVersion</key> + <integer>8</integer> + <key>GraphicsList</key> + <array> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>10</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>135</integer> + <key>OrthogonalBarAutomatic</key> + <false/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>24</real> + <key>Points</key> + <array> + <string>{370.87620268213163, 342.33507913166756}</string> + <string>{276, 428}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>HeadScale</key> + <real>1.5000001192092896</real> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>132</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>10</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>134</integer> + <key>OrthogonalBarAutomatic</key> + <false/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>38</real> + <key>Points</key> + <array> + <string>{157.22412184048872, 328.32141989750818}</string> + <string>{276, 428}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>HeadScale</key> + <real>1.5000001192092896</real> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>128</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>28</integer> + <key>Info</key> + <integer>1</integer> + </dict> + <key>ID</key> + <integer>133</integer> + <key>OrthogonalBarAutomatic</key> + <true/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>14.865490913391113</real> + <key>Points</key> + <array> + <string>{356.64520555737698, 271.73098227066612}</string> + <string>{261.5, 211}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>UMLInheritance</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>130</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>28</integer> + </dict> + <key>ID</key> + <integer>27</integer> + <key>OrthogonalBarAutomatic</key> + <true/> + <key>OrthogonalBarPoint</key> + <string>{0, 0}</string> + <key>OrthogonalBarPosition</key> + <real>14.861750602722168</real> + <key>Points</key> + <array> + <string>{170.00992477597092, 271.72350125488657}</string> + <string>{261.5, 211}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>UMLInheritance</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>126</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{277.5, 272}, {203, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>130</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 \'abstereotype\'bb +\b \ +EReference}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{277.5, 300}, {203, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>131</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 referenceName : String [0..1]\ +isResolveProxies : Boolean = true}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{277.5, 328}, {203, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>132</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 }</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>130</integer> + <integer>131</integer> + <integer>132</integer> + <array/> + </array> + <key>ID</key> + <integer>129</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{47, 272}, {203, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>126</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 \'abstereotype\'bb +\b \ +EAttribute}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{47, 300}, {203, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>127</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 attributeName : String [0..1]}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{47, 314}, {203, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>128</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 }</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>126</integer> + <integer>127</integer> + <integer>128</integer> + <array/> + </array> + <key>ID</key> + <integer>125</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{580, 71}, {122, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>123</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 \'abenumeration\'bb +\b \ +FeatureKind}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{580, 99}, {122, 98}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>124</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 Unspecified\ +Simple\ +Attribute\ +Element\ +AttributeWildcard\ +ElementWildcard\ +Group}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>123</integer> + <integer>124</integer> + <array/> + </array> + <key>ID</key> + <integer>122</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{421, 71}, {135, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>34</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 \'abenumeration\'bb +\b \ +VisibilityKind}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{421, 99}, {135, 84}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>35</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 Unspecified\ +None\ +ReadOnly\ +ReadWrite\ +ReadOnlyUnsettable\ +ReadWriteUnsettable}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>34</integer> + <integer>35</integer> + <array/> + </array> + <key>ID</key> + <integer>33</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{40, 490}, {145, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>120</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict/> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 String\ + +\b0 (from PrimitiveTypes)}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{40, 428}, {145, 36}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>119</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict/> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs24 \cf0 Boolean\ + +\b0 (from PrimitiveTypes)}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Class</key> + <string>TableGroup</string> + <key>Graphics</key> + <array> + <dict> + <key>Bounds</key> + <string>{{160, 71}, {203, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>42</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 \'abstereotype\'bb +\b \ +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\i \cf0 EStructuralFeature}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{160, 99}, {203, 98}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>43</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 isTransient : Boolean [0..1]\ +isUnsettable : Boolean [0..1]\ +isVolatile : Boolean [0..1]\ +visibility : VisibilityKind [0..1]\ +xmlName : String [0..1]\ +xmlNamespace : String [0..1]\ +xmlFeatureKind : FeatureKind [0..1]}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + <dict> + <key>Bounds</key> + <string>{{160, 197}, {203, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>44</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>GradientCenter</key> + <string>{-0.29411799999999999, -0.264706}</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\fs24 \cf0 }</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + <key>TextPlacement</key> + <integer>0</integer> + </dict> + </array> + <key>GridH</key> + <array> + <integer>42</integer> + <integer>43</integer> + <integer>44</integer> + <array/> + </array> + <key>GroupConnect</key> + <string>YES</string> + <key>ID</key> + <integer>28</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + </dict> + <dict> + <key>Bounds</key> + <string>{{231, 428}, {90, 52}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>10</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict/> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 \'abmetaclass\'bb +\b \ +Property\ + +\b0 (from UML)}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>GuidesLocked</key> + <string>NO</string> + <key>GuidesVisible</key> + <string>YES</string> + <key>HPages</key> + <integer>1</integer> + <key>ImageCounter</key> + <integer>1</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>Layer 1</string> + <key>Print</key> + <string>YES</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>LinksVisible</key> + <string>NO</string> + <key>MagnetsVisible</key> + <string>NO</string> + <key>MasterSheets</key> + <array/> + <key>ModificationDate</key> + <string>2014-01-20 22:02:49 +0000</string> + <key>Modifier</key> + <string>Christian W. Damus</string> + <key>NotesVisible</key> + <string>NO</string> + <key>Orientation</key> + <integer>1</integer> + <key>OriginVisible</key> + <string>NO</string> + <key>PageBreaks</key> + <string>YES</string> + <key>PrintInfo</key> + <dict> + <key>NSBottomMargin</key> + <array> + <string>float</string> + <string>41</string> + </array> + <key>NSHorizonalPagination</key> + <array> + <string>coded</string> + <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string> + </array> + <key>NSLeftMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSPaperSize</key> + <array> + <string>size</string> + <string>{612, 792}</string> + </array> + <key>NSPrintReverseOrientation</key> + <array> + <string>int</string> + <string>0</string> + </array> + <key>NSRightMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSTopMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + </dict> + <key>PrintOnePage</key> + <false/> + <key>ReadOnly</key> + <string>NO</string> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>Canvas 1</string> + <key>SmartAlignmentGuidesActive</key> + <string>YES</string> + <key>SmartDistanceGuidesActive</key> + <string>YES</string> + <key>UniqueID</key> + <integer>1</integer> + <key>UseEntirePage</key> + <false/> + <key>VPages</key> + <integer>1</integer> + <key>WindowInfo</key> + <dict> + <key>CurrentSheet</key> + <integer>0</integer> + <key>ExpandedCanvases</key> + <array> + <dict> + <key>name</key> + <string>Canvas 1</string> + </dict> + </array> + <key>Frame</key> + <string>{{1021, 77}, {1043, 872}}</string> + <key>ListView</key> + <true/> + <key>OutlineWidth</key> + <integer>142</integer> + <key>RightSidebar</key> + <false/> + <key>ShowRuler</key> + <true/> + <key>Sidebar</key> + <true/> + <key>SidebarWidth</key> + <integer>120</integer> + <key>VisibleRegion</key> + <string>{{-88, -78}, {908, 733}}</string> + <key>Zoom</key> + <real>1</real> + <key>ZoomValues</key> + <array> + <array> + <string>Canvas 1</string> + <real>1</real> + <real>1</real> + </array> + </array> + </dict> +</dict> +</plist> diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.png b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.png Binary files differnew file mode 100644 index 000000000..d8507881d --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.png diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.profile.uml b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.profile.uml new file mode 100644 index 000000000..d2056bd1d --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.profile.uml @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Profile xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_SHb-oIIcEeOAOd2oyrcqGg" name="ecore" URI="http://www.eclipse.org/schema/UML2/examples/ecore" metaclassReference="_SHclvIIcEeOAOd2oyrcqGg"> + <eAnnotations xmi:id="_SHb-oYIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <contents xmi:type="ecore:EPackage" xmi:id="_SHb-ooIcEeOAOd2oyrcqGg" name="ecore" nsURI="http://www.eclipse.org/schema/UML2/examples/ecore" nsPrefix="ecore"> + <eClassifiers xmi:type="ecore:EEnum" xmi:id="_SHb-o4IcEeOAOd2oyrcqGg" name="VisibilityKind"> + <eAnnotations xmi:id="_SHb-pIIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHclvYIcEeOAOd2oyrcqGg"/> + <eLiterals xmi:id="_SHb-pYIcEeOAOd2oyrcqGg" name="Unspecified"/> + <eLiterals xmi:id="_SHb-poIcEeOAOd2oyrcqGg" name="None" value="1"/> + <eLiterals xmi:id="_SHb-p4IcEeOAOd2oyrcqGg" name="ReadOnly" value="2"/> + <eLiterals xmi:id="_SHb-qIIcEeOAOd2oyrcqGg" name="ReadWrite" value="3"/> + <eLiterals xmi:id="_SHb-qYIcEeOAOd2oyrcqGg" name="ReadOnlyUnsettable" value="4"/> + <eLiterals xmi:id="_SHb-qoIcEeOAOd2oyrcqGg" name="ReadWriteUnsettable" value="5"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EEnum" xmi:id="_SHb-q4IcEeOAOd2oyrcqGg" name="FeatureKind"> + <eAnnotations xmi:id="_SHb-rIIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHclxIIcEeOAOd2oyrcqGg"/> + <eLiterals xmi:id="_SHb-rYIcEeOAOd2oyrcqGg" name="Unspecified"/> + <eLiterals xmi:id="_SHb-roIcEeOAOd2oyrcqGg" name="Simple" value="1"/> + <eLiterals xmi:id="_SHb-r4IcEeOAOd2oyrcqGg" name="Attribute" value="2"/> + <eLiterals xmi:id="_SHb-sIIcEeOAOd2oyrcqGg" name="Element" value="3"/> + <eLiterals xmi:id="_SHb-sYIcEeOAOd2oyrcqGg" name="AttributeWildcard" value="4"/> + <eLiterals xmi:id="_SHb-soIcEeOAOd2oyrcqGg" name="ElementWildcard" value="5"/> + <eLiterals xmi:id="_SHb-s4IcEeOAOd2oyrcqGg" name="Group" value="6"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_SHb-tIIcEeOAOd2oyrcqGg" name="EStructuralFeature" abstract="true"> + <eAnnotations xmi:id="_SHb-tYIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHclzIIcEeOAOd2oyrcqGg"/> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-toIcEeOAOd2oyrcqGg" name="isTransient" ordered="false"> + <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-uIIcEeOAOd2oyrcqGg" name="isUnsettable" ordered="false"> + <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-uoIcEeOAOd2oyrcqGg" name="isVolatile" ordered="false"> + <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-vIIcEeOAOd2oyrcqGg" name="visibility" ordered="false" eType="_SHb-o4IcEeOAOd2oyrcqGg" defaultValueLiteral="Unspecified"/> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-voIcEeOAOd2oyrcqGg" name="xmlName" ordered="false"> + <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-wIIcEeOAOd2oyrcqGg" name="xmlNamespace" ordered="false"> + <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-woIcEeOAOd2oyrcqGg" name="xmlFeatureKind" ordered="false" eType="_SHb-q4IcEeOAOd2oyrcqGg" defaultValueLiteral="Unspecified"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_SHb-xIIcEeOAOd2oyrcqGg" name="EAttribute" eSuperTypes="_SHb-tIIcEeOAOd2oyrcqGg"> + <eAnnotations xmi:id="_SHb-xYIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHcl5IIcEeOAOd2oyrcqGg"/> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-xoIcEeOAOd2oyrcqGg" name="attributeName" ordered="false"> + <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SHb-yIIcEeOAOd2oyrcqGg" name="base_Property" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_SHclsYIcEeOAOd2oyrcqGg" name="EReference" eSuperTypes="_SHb-tIIcEeOAOd2oyrcqGg"> + <eAnnotations xmi:id="_SHclsoIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHcl6oIcEeOAOd2oyrcqGg"/> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHcls4IcEeOAOd2oyrcqGg" name="referenceName" ordered="false"> + <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHcltYIcEeOAOd2oyrcqGg" name="isResolveProxies" ordered="false" defaultValueLiteral="true"> + <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SHclt4IcEeOAOd2oyrcqGg" name="base_Property" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/> + </eStructuralFeatures> + </eClassifiers> + </contents> + </eAnnotations> + <elementImport xmi:id="_SHcluoIcEeOAOd2oyrcqGg"> + <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </elementImport> + <elementImport xmi:id="_SHclu4IcEeOAOd2oyrcqGg"> + <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </elementImport> + <elementImport xmi:id="_SHclvIIcEeOAOd2oyrcqGg"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/> + </elementImport> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_SHclvYIcEeOAOd2oyrcqGg" name="VisibilityKind"> + <ownedLiteral xmi:id="_SHclvoIcEeOAOd2oyrcqGg" name="Unspecified"/> + <ownedLiteral xmi:id="_SHclv4IcEeOAOd2oyrcqGg" name="None"/> + <ownedLiteral xmi:id="_SHclwIIcEeOAOd2oyrcqGg" name="ReadOnly"/> + <ownedLiteral xmi:id="_SHclwYIcEeOAOd2oyrcqGg" name="ReadWrite"/> + <ownedLiteral xmi:id="_SHclwoIcEeOAOd2oyrcqGg" name="ReadOnlyUnsettable"/> + <ownedLiteral xmi:id="_SHclw4IcEeOAOd2oyrcqGg" name="ReadWriteUnsettable"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_SHclxIIcEeOAOd2oyrcqGg" name="FeatureKind"> + <ownedLiteral xmi:id="_SHclxYIcEeOAOd2oyrcqGg" name="Unspecified"/> + <ownedLiteral xmi:id="_SHclxoIcEeOAOd2oyrcqGg" name="Simple"/> + <ownedLiteral xmi:id="_SHclx4IcEeOAOd2oyrcqGg" name="Attribute"/> + <ownedLiteral xmi:id="_SHclyIIcEeOAOd2oyrcqGg" name="Element"/> + <ownedLiteral xmi:id="_SHclyYIcEeOAOd2oyrcqGg" name="AttributeWildcard"/> + <ownedLiteral xmi:id="_SHclyoIcEeOAOd2oyrcqGg" name="ElementWildcard"/> + <ownedLiteral xmi:id="_SHcly4IcEeOAOd2oyrcqGg" name="Group"/> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_SHclzIIcEeOAOd2oyrcqGg" name="EStructuralFeature" isAbstract="true"> + <ownedAttribute xmi:id="_SHclzYIcEeOAOd2oyrcqGg" name="isTransient"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHclzoIcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHclz4IcEeOAOd2oyrcqGg" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl0IIcEeOAOd2oyrcqGg" name="isUnsettable"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl0YIcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl0oIcEeOAOd2oyrcqGg" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl04IcEeOAOd2oyrcqGg" name="isVolatile"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl1IIcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl1YIcEeOAOd2oyrcqGg" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl1oIcEeOAOd2oyrcqGg" name="visibility" type="_SHclvYIcEeOAOd2oyrcqGg"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl14IcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl2IIcEeOAOd2oyrcqGg" value="1"/> + <defaultValue xmi:type="uml:InstanceValue" xmi:id="_SHcl2YIcEeOAOd2oyrcqGg" instance="_SHclvoIcEeOAOd2oyrcqGg"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl2oIcEeOAOd2oyrcqGg" name="xmlName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl24IcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl3IIcEeOAOd2oyrcqGg" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl3YIcEeOAOd2oyrcqGg" name="xmlNamespace"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl3oIcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl34IcEeOAOd2oyrcqGg" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl4IIcEeOAOd2oyrcqGg" name="xmlFeatureKind" type="_SHclxIIcEeOAOd2oyrcqGg"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl4YIcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl4oIcEeOAOd2oyrcqGg" value="1"/> + <defaultValue xmi:type="uml:InstanceValue" xmi:id="_SHcl44IcEeOAOd2oyrcqGg" instance="_SHclxYIcEeOAOd2oyrcqGg"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_SHcl5IIcEeOAOd2oyrcqGg" name="EAttribute"> + <generalization xmi:id="_SHcl5YIcEeOAOd2oyrcqGg" general="_SHclzIIcEeOAOd2oyrcqGg"/> + <ownedAttribute xmi:id="_SHcl5oIcEeOAOd2oyrcqGg" name="attributeName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl54IcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl6IIcEeOAOd2oyrcqGg" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl6YIcEeOAOd2oyrcqGg" name="base_Property" association="_SHdMwIIcEeOAOd2oyrcqGg"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_SHcl6oIcEeOAOd2oyrcqGg" name="EReference"> + <generalization xmi:id="_SHcl64IcEeOAOd2oyrcqGg" general="_SHclzIIcEeOAOd2oyrcqGg"/> + <ownedAttribute xmi:id="_SHcl7IIcEeOAOd2oyrcqGg" name="referenceName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl7YIcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl7oIcEeOAOd2oyrcqGg" value="1"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl74IcEeOAOd2oyrcqGg" name="isResolveProxies"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl8IIcEeOAOd2oyrcqGg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl8YIcEeOAOd2oyrcqGg" value="1"/> + <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_SHcl8oIcEeOAOd2oyrcqGg" value="true"/> + </ownedAttribute> + <ownedAttribute xmi:id="_SHcl84IcEeOAOd2oyrcqGg" name="base_Property" association="_SHdMwoIcEeOAOd2oyrcqGg"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_SHdMwIIcEeOAOd2oyrcqGg" name="Property_EAttribute" memberEnd="_SHdMwYIcEeOAOd2oyrcqGg _SHcl6YIcEeOAOd2oyrcqGg"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_SHdMwYIcEeOAOd2oyrcqGg" name="extension_EAttribute" type="_SHcl5IIcEeOAOd2oyrcqGg" aggregation="composite" association="_SHdMwIIcEeOAOd2oyrcqGg"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_SHdMwoIcEeOAOd2oyrcqGg" name="Property_EReference" memberEnd="_SHdMw4IcEeOAOd2oyrcqGg _SHcl84IcEeOAOd2oyrcqGg"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_SHdMw4IcEeOAOd2oyrcqGg" name="extension_EReference" type="_SHcl6oIcEeOAOd2oyrcqGg" aggregation="composite" association="_SHdMwoIcEeOAOd2oyrcqGg"/> + </packagedElement> +</uml:Profile> diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java b/examples/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java new file mode 100644 index 000000000..fdd0b826b --- /dev/null +++ b/examples/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java @@ -0,0 +1,616 @@ +/* + * Copyright (c) 2014 CEA and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Christian W. Damus (CEA) - Initial API and implementation + * + */ +package org.eclipse.uml2.examples.introtoprofiles; + +import java.io.File; +import java.io.IOException; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.common.util.WrappedException; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.uml2.uml.Classifier; +import org.eclipse.uml2.uml.Enumeration; +import org.eclipse.uml2.uml.EnumerationLiteral; +import org.eclipse.uml2.uml.Extension; +import org.eclipse.uml2.uml.Generalization; +import org.eclipse.uml2.uml.InstanceValue; +import org.eclipse.uml2.uml.LiteralBoolean; +import org.eclipse.uml2.uml.LiteralString; +import org.eclipse.uml2.uml.LiteralUnlimitedNatural; +import org.eclipse.uml2.uml.Model; +import org.eclipse.uml2.uml.NamedElement; +import org.eclipse.uml2.uml.PrimitiveType; +import org.eclipse.uml2.uml.Profile; +import org.eclipse.uml2.uml.Property; +import org.eclipse.uml2.uml.Stereotype; +import org.eclipse.uml2.uml.Type; +import org.eclipse.uml2.uml.UMLFactory; +import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.resource.UMLResource; +import org.eclipse.uml2.uml.resources.util.UMLResourcesUtil; + + +/** + * A Java program that may be run stand-alone (with the required EMF and UML2 + * bundle JARs on the classpath) to create the example profile illustrated in + * the <em>Introduction to UML Profiles</em> article on the Wiki. + * + * @see http://wiki.eclipse.org/MDT/UML2/Introduction_to_UML2_Profiles + */ +public class IntroductionToUMLProfiles { + + public static boolean DEBUG = true; + + private static File outputDir; + + private static final ResourceSet RESOURCE_SET; + + static { + // Create a resource-set to contain the resource(s) that we load and + // save + RESOURCE_SET = new ResourceSetImpl(); + + // Initialize registrations of resource factories, library models, + // profiles, Ecore metadata, and other dependencies required for + // serializing and working with UML resources. This is only necessary in + // applications that are not hosted in the Eclipse platform run-time, in + // which case these registrations are discovered automatically from + // Eclipse extension points. + UMLResourcesUtil.init(RESOURCE_SET); + + } + + /** + * The main program. It expects one argument, which is the local filesystem + * path of a directory in which to create the <tt>Ecore.profile.uml</tt> + * file. + * + * @param the + * program arguments, which must consist of a single filesystem + * path + */ + public static void main(String[] args) + throws Exception { + + if (!processArgs(args)) { + System.exit(1); + } + + banner("Creating root profile package and importing primitive types."); + + // Create the root profile package. + Profile ecoreProfile = createProfile("ecore", + "http://www.eclipse.org/schema/UML2/examples/ecore"); + + // Import UML standard primitive types to be used as types of attributes + // in our stereotypes. + PrimitiveType booleanPrimitiveType = importPrimitiveType(ecoreProfile, + "Boolean"); + PrimitiveType stringPrimitiveType = importPrimitiveType(ecoreProfile, + "String"); + + banner("Creating profile enumeration types."); + + // Create enumerations to be used as types of attributes in our + // stereotypes. + Enumeration visibilityKindEnumeration = createEnumeration(ecoreProfile, + "VisibilityKind"); + Enumeration featureKindEnumeration = createEnumeration(ecoreProfile, + "FeatureKind"); + createEnumerationLiteral(visibilityKindEnumeration, "Unspecified"); + createEnumerationLiteral(visibilityKindEnumeration, "None"); + createEnumerationLiteral(visibilityKindEnumeration, "ReadOnly"); + createEnumerationLiteral(visibilityKindEnumeration, "ReadWrite"); + createEnumerationLiteral(visibilityKindEnumeration, + "ReadOnlyUnsettable"); + createEnumerationLiteral(visibilityKindEnumeration, + "ReadWriteUnsettable"); + createEnumerationLiteral(featureKindEnumeration, "Unspecified"); + createEnumerationLiteral(featureKindEnumeration, "Simple"); + createEnumerationLiteral(featureKindEnumeration, "Attribute"); + createEnumerationLiteral(featureKindEnumeration, "Element"); + createEnumerationLiteral(featureKindEnumeration, "AttributeWildcard"); + createEnumerationLiteral(featureKindEnumeration, "ElementWildcard"); + createEnumerationLiteral(featureKindEnumeration, "Group"); + + banner("Creating stereotypes."); + + // Create the stereotypes. + Stereotype eStructuralFeatureStereotype = createStereotype( + ecoreProfile, "EStructuralFeature", true); + Stereotype eAttributeStereotype = createStereotype(ecoreProfile, + "EAttribute", false); + Stereotype eReferenceStereotype = createStereotype(ecoreProfile, + "EReference", false); + + // Create generalization relationships amongst our stereotypes. + createGeneralization(eAttributeStereotype, eStructuralFeatureStereotype); + createGeneralization(eReferenceStereotype, eStructuralFeatureStereotype); + + banner("Creating attributes (\"tagged values\") of the stereotypes."); + + // Create attributes in our stereotypes. + Property isTransientProperty = createAttribute( + eStructuralFeatureStereotype, "isTransient", booleanPrimitiveType, + 0, 1, null); + Property isUnsettableProperty = createAttribute( + eStructuralFeatureStereotype, "isUnsettable", booleanPrimitiveType, + 0, 1, null); + Property isVolatileProperty = createAttribute( + eStructuralFeatureStereotype, "isVolatile", booleanPrimitiveType, + 0, 1, null); + Property visibilityProperty = createAttribute( + eStructuralFeatureStereotype, "visibility", + visibilityKindEnumeration, 0, 1, "Unspecified"); + Property xmlNameProperty = createAttribute( + eStructuralFeatureStereotype, "xmlName", stringPrimitiveType, 0, 1, + null); + Property xmlNamespaceProperty = createAttribute( + eStructuralFeatureStereotype, "xmlNamespace", stringPrimitiveType, + 0, 1, null); + Property xmlFeatureKindProperty = createAttribute( + eStructuralFeatureStereotype, "xmlFeatureKind", + featureKindEnumeration, 0, 1, "Unspecified"); + Property attributeNameProperty = createAttribute(eAttributeStereotype, + "attributeName", stringPrimitiveType, 0, 1, null); + Property referenceNameProperty = createAttribute(eReferenceStereotype, + "referenceName", stringPrimitiveType, 0, 1, null); + Property isResolveProxiesProperty = createAttribute( + eReferenceStereotype, "isResolveProxies", booleanPrimitiveType, 0, + 1, true); + + banner("Creating metaclass extensions for the stereotypes."); + + // Reference metaclasses from UML that we will extend with our + // stereotypes. + org.eclipse.uml2.uml.Class propertyMetaclass = referenceMetaclass( + ecoreProfile, UMLPackage.Literals.PROPERTY.getName()); + + // Create metaclass extensions for our stereotypes. + createExtension(propertyMetaclass, eAttributeStereotype, false); + createExtension(propertyMetaclass, eReferenceStereotype, false); + + banner("Defining the profile (creating the Ecore metamodel)."); + + // Create the Ecore definition of the profile to prepare for use. + defineProfile(ecoreProfile); + + // Save our profile to a file in the user-specified output directory + URI outputURI = URI.createFileURI(outputDir.getAbsolutePath()) + .appendSegment("Ecore") + .appendFileExtension(UMLResource.PROFILE_FILE_EXTENSION); + banner("Saving the profile to %s.", outputURI.toFileString()); + save(ecoreProfile, outputURI); + + banner("Applying the profile to an example model."); + + // Load a model to which to apply the profile + Model epo2Model = (Model) load(URI.createURI(args[0]) + .appendSegment("ExtendedPO2") + .appendFileExtension(UMLResource.FILE_EXTENSION)); + + // Apply the profile to the model + applyProfile(epo2Model, ecoreProfile); + + banner("Applying stereotypes to elements in the model."); + + // Apply stereotypes to some model elements + org.eclipse.uml2.uml.Class supplierClass = (org.eclipse.uml2.uml.Class) epo2Model + .getOwnedType("Supplier"); + Property pendingOrdersProperty = supplierClass.getOwnedAttribute( + "pendingOrders", null); + applyStereotype(pendingOrdersProperty, eReferenceStereotype); + Property shippedOrdersProperty = supplierClass.getOwnedAttribute( + "shippedOrders", null); + applyStereotype(shippedOrdersProperty, eReferenceStereotype); + org.eclipse.uml2.uml.Class customerClass = (org.eclipse.uml2.uml.Class) epo2Model + .getOwnedType("Customer"); + Property ordersProperty = customerClass.getOwnedAttribute("orders", + null); + applyStereotype(ordersProperty, eReferenceStereotype); + org.eclipse.uml2.uml.Class purchaseOrderClass = (org.eclipse.uml2.uml.Class) epo2Model + .getOwnedType("PurchaseOrder"); + Property customerProperty = purchaseOrderClass.getOwnedAttribute( + "customer", null); + applyStereotype(customerProperty, eReferenceStereotype); + Property previousOrderProperty = purchaseOrderClass.getOwnedAttribute( + "previousOrder", null); + applyStereotype(previousOrderProperty, eReferenceStereotype); + Property totalAmountProperty = purchaseOrderClass.getOwnedAttribute( + "totalAmount", null); + // This is not a reference property + applyStereotype(totalAmountProperty, eAttributeStereotype); + + banner("Inspecting stereotype attribute values (\"tagged values\") in the model."); + + // Inspect some stereotype property values + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isVolatileProperty); + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isTransientProperty); + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + visibilityProperty); + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + referenceNameProperty); + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isResolveProxiesProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + isUnsettableProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlNameProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlNamespaceProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlFeatureKindProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + attributeNameProperty); + + banner("Setting stereotype attribute values in the model."); + + // Set new values for the stereotype properties + setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isVolatileProperty, true); + setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isTransientProperty, true); + setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + visibilityProperty, "ReadWrite"); + setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + referenceNameProperty, "pending"); + setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isResolveProxiesProperty, false); + setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + isUnsettableProperty, true); + setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlNameProperty, "total"); + setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlNamespaceProperty, + "http://www.eclipse.org/schema/UML2/examples/ecore/xml"); + setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlFeatureKindProperty, "Element"); + setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + attributeNameProperty, "total"); + + banner("Reading new stereotype attribute values in the model."); + + // Inspect the stereotype property values again + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isVolatileProperty); + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isTransientProperty); + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + visibilityProperty); + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + referenceNameProperty); + getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype, + isResolveProxiesProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + isUnsettableProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlNameProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlNamespaceProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + xmlFeatureKindProperty); + getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype, + attributeNameProperty); + } + + // + // Profile- and model-building utilities + // + + protected static Profile createProfile(String name, String nsURI) { + Profile profile = UMLFactory.eINSTANCE.createProfile(); + profile.setName(name); + profile.setURI(nsURI); + + out("Profile '%s' created.", profile.getQualifiedName()); + + return profile; + } + + protected static PrimitiveType importPrimitiveType( + org.eclipse.uml2.uml.Package package_, String name) { + + org.eclipse.uml2.uml.Package umlLibrary = (org.eclipse.uml2.uml.Package) load(URI + .createURI(UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI)); + + PrimitiveType primitiveType = (PrimitiveType) umlLibrary + .getOwnedType(name); + + package_.createElementImport(primitiveType); + + out("Primitive type '%s' imported.", primitiveType.getQualifiedName()); + + return primitiveType; + } + + protected static Enumeration createEnumeration( + org.eclipse.uml2.uml.Package package_, String name) { + + Enumeration enumeration = package_.createOwnedEnumeration(name); + + out("Enumeration '%s' created.", enumeration.getQualifiedName()); + + return enumeration; + } + + protected static EnumerationLiteral createEnumerationLiteral( + Enumeration enumeration, String name) { + + EnumerationLiteral enumerationLiteral = enumeration + .createOwnedLiteral(name); + + out("Enumeration literal '%s' created.", + enumerationLiteral.getQualifiedName()); + + return enumerationLiteral; + } + + protected static Stereotype createStereotype(Profile profile, String name, + boolean isAbstract) { + + Stereotype stereotype = profile.createOwnedStereotype(name, isAbstract); + + out("Stereotype '%s' created.", stereotype.getQualifiedName()); + + return stereotype; + } + + protected static Generalization createGeneralization( + Classifier specificClassifier, Classifier generalClassifier) { + + Generalization generalization = specificClassifier + .createGeneralization(generalClassifier); + + out("Generalization %s --|> %s created.", + specificClassifier.getQualifiedName(), + generalClassifier.getQualifiedName()); + + return generalization; + } + + protected static Property createAttribute( + org.eclipse.uml2.uml.Class class_, String name, Type type, + int lowerBound, int upperBound, Object defaultValue) { + + Property attribute = class_.createOwnedAttribute(name, type, + lowerBound, upperBound); + + if (defaultValue instanceof Boolean) { + LiteralBoolean literal = (LiteralBoolean) attribute + .createDefaultValue(null, null, + UMLPackage.Literals.LITERAL_BOOLEAN); + literal.setValue(((Boolean) defaultValue).booleanValue()); + } else if (defaultValue instanceof String) { + if (type instanceof Enumeration) { + InstanceValue value = (InstanceValue) attribute + .createDefaultValue(null, null, + UMLPackage.Literals.INSTANCE_VALUE); + value.setInstance(((Enumeration) type) + .getOwnedLiteral((String) defaultValue)); + } else { + LiteralString literal = (LiteralString) attribute + .createDefaultValue(null, null, + UMLPackage.Literals.LITERAL_STRING); + literal.setValue((String) defaultValue); + } + } + + out("Attribute '%s' : %s [%s..%s]%s created.", // + attribute.getQualifiedName(), // attribute name + type.getQualifiedName(), // type name + lowerBound, // no special case for multiplicity lower bound + (upperBound == LiteralUnlimitedNatural.UNLIMITED) + ? "*" // special case for unlimited bound + : upperBound, // finite upper bound + (defaultValue == null) + ? "" // no default value (use type's intrinsic default) + : String.format(" = %s", defaultValue)); + + return attribute; + } + + protected static org.eclipse.uml2.uml.Class referenceMetaclass( + Profile profile, String name) { + + Model umlMetamodel = (Model) load(URI + .createURI(UMLResource.UML_METAMODEL_URI)); + + org.eclipse.uml2.uml.Class metaclass = (org.eclipse.uml2.uml.Class) umlMetamodel + .getOwnedType(name); + + profile.createMetaclassReference(metaclass); + + out("Metaclass '%s' referenced.", metaclass.getQualifiedName()); + + return metaclass; + } + + protected static Extension createExtension( + org.eclipse.uml2.uml.Class metaclass, Stereotype stereotype, + boolean required) { + + Extension extension = stereotype.createExtension(metaclass, required); + + out("%sxtension '%s' created.", // + required + ? "Required e" // it's a required extension + : "E", // an optional extension + extension.getQualifiedName()); + + return extension; + } + + protected static void defineProfile(Profile profile) { + profile.define(); + + out("Profile '%s' defined.", profile.getQualifiedName()); + } + + protected static void applyProfile(org.eclipse.uml2.uml.Package package_, + Profile profile) { + + package_.applyProfile(profile); + + out("Profile '%s' applied to package '%s'.", + profile.getQualifiedName(), package_.getQualifiedName()); + } + + protected static void applyStereotype(NamedElement namedElement, + Stereotype stereotype) { + + namedElement.applyStereotype(stereotype); + + out("Stereotype '%s' applied to element '%s'.", + stereotype.getQualifiedName(), namedElement.getQualifiedName()); + } + + protected static Object getStereotypePropertyValue( + NamedElement namedElement, Stereotype stereotype, Property property) { + + Object value = namedElement.getValue(stereotype, property.getName()); + + out("Value of stereotype property '%s' on element '%s' is %s.", + property.getQualifiedName(), namedElement.getQualifiedName(), value); + + return value; + } + + protected static void setStereotypePropertyValue(NamedElement namedElement, + Stereotype stereotype, Property property, Object value) { + + Object valueToSet = value; + + if ((value instanceof String) + && (property.getType() instanceof Enumeration)) { + // Get the corresponding enumeration literal + valueToSet = ((Enumeration) property.getType()) + .getOwnedLiteral((String) value); + } + + namedElement.setValue(stereotype, property.getName(), valueToSet); + + out("Value of stereotype property '%s' on element '%s' set to %s.", + property.getQualifiedName(), namedElement.getQualifiedName(), value); + } + + // + // Program control + // + + private static boolean processArgs(String[] args) + throws IOException { + + if (args.length != 1) { + err("Expected 1 argument."); + err("Usage: java -jar ... %s <dir>", + IntroductionToUMLProfiles.class.getSimpleName()); + err("where"); + err("<dir> - path to output folder in which to save the UML profile"); + return false; + } + + outputDir = new File(args[0]).getCanonicalFile(); + if (!outputDir.exists()) { + err("No such directory: %s", outputDir.getAbsolutePath()); + return false; + } + + if (!outputDir.isDirectory()) { + err("Not a directory: %s", outputDir.getAbsolutePath()); + return false; + } + + if (!outputDir.canWrite()) { + err("Cannot create a file in directory: %s", + outputDir.getAbsolutePath()); + return false; + } + + return true; + } + + protected static void save(org.eclipse.uml2.uml.Package package_, URI uri) { + // Create the resource to be saved and add the package to it + Resource resource = RESOURCE_SET.createResource(uri); + resource.getContents().add(package_); + + // And save. + try { + resource.save(null); + out("Done."); + } catch (IOException ioe) { + err(ioe.getMessage()); + } + } + + protected static org.eclipse.uml2.uml.Package load(URI uri) { + org.eclipse.uml2.uml.Package package_ = null; + + try { + // Load the requested resource + Resource resource = RESOURCE_SET.getResource(uri, true); + + // Get the first (should be only) package from it + package_ = (org.eclipse.uml2.uml.Package) EcoreUtil + .getObjectByType(resource.getContents(), + UMLPackage.Literals.PACKAGE); + } catch (WrappedException we) { + err(we.getMessage()); + System.exit(1); + } + + return package_; + } + + // + // Logging utilities + // + + protected static void banner(String format, Object... args) { + System.out.println(); + hrule(); + + System.out.printf(format, args); + if (!format.endsWith("%n")) { + System.out.println(); + } + + hrule(); + System.out.println(); + } + + protected static void hrule() { + System.out.println("------------------------------------"); + } + + protected static void out(String format, Object... args) { + if (DEBUG) { + System.out.printf(format, args); + if (!format.endsWith("%n")) { + System.out.println(); + } + } + } + + protected static void err(String format, Object... args) { + System.err.printf(format, args); + if (!format.endsWith("%n")) { + System.err.println(); + } + } +} |