summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Fischer <[email protected]>2014-11-15 01:04:32 +0100
committerAndi Fischer <[email protected]>2014-11-15 01:04:32 +0100
commit75347e205b28f426d47135b943599a9c79a9fcfd (patch)
tree055969bd86c26f349bc207a5f3b502f0a935520b
parent437fb9eccd559ce581d3cf2713009ddbf40961b9 (diff)
parent3c664e107d0e05389b267499810fea67d5444555 (diff)
Merging with master.
-rw-r--r--CMakeLists.txt3
-rw-r--r--doc/screenshots.xmi857
-rw-r--r--lib/cppparser/lexer.cpp1
-rw-r--r--lib/cppparser/macro.h34
-rw-r--r--tools/CMakeLists.txt19
-rw-r--r--tools/po2xmi.cpp42
-rw-r--r--tools/shared.cpp313
-rw-r--r--tools/shared.h43
-rw-r--r--tools/xmi2pot.cpp82
-rw-r--r--umbrello/clipboard/umlclipboard.cpp2
-rw-r--r--umbrello/clipboard/umldragdata.cpp53
-rw-r--r--umbrello/clipboard/umldragdata.h5
-rw-r--r--umbrello/codegenerators/as/aswriter.h6
-rw-r--r--umbrello/codegenerators/codeblockwithcomments.cpp1
-rw-r--r--umbrello/codegenerators/codegenobjectwithtextblocks.cpp46
-rw-r--r--umbrello/codegenerators/codeoperation.h2
-rw-r--r--umbrello/codegenerators/csharp/csharpwriter.cpp3
-rw-r--r--umbrello/codegenerators/java/javacodeclassfield.cpp1
-rw-r--r--umbrello/codegenerators/java/javawriter.cpp1
-rw-r--r--umbrello/codegenerators/js/jswriter.h3
-rw-r--r--umbrello/codegenerators/perl/perlwriter.h7
-rw-r--r--umbrello/codegenerators/php/php5writer.h3
-rw-r--r--umbrello/codegenerators/php/phpwriter.h3
-rw-r--r--umbrello/codegenerators/sql/sqlwriter.cpp1
-rw-r--r--umbrello/codegenerators/vala/valawriter.cpp3
-rw-r--r--umbrello/codeimport/kdevcppparser/cpptree2uml.cpp6
-rw-r--r--umbrello/codeimport/kdevcppparser/cpptree2uml.h1
-rw-r--r--umbrello/debug/debug_utils.cpp60
-rw-r--r--umbrello/debug/debug_utils.h2
-rw-r--r--umbrello/import_rose.cpp11
-rw-r--r--umbrello/uml.cpp4
-rw-r--r--umbrello/widgets/classifierwidget.cpp4
-rw-r--r--umbrello/widgets/floatingdashlinewidget.cpp3
-rw-r--r--umbrello/widgets/floatingdashlinewidget.h6
-rw-r--r--umbrello/widgets/messagewidget.cpp6
-rw-r--r--umbrello/widgets/objectwidget.cpp2
-rw-r--r--umbrello/widgets/packagewidget.cpp3
37 files changed, 1546 insertions, 96 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 45fa7dc..1b3f526 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
project(umbrello)
set(VERSION_MAJOR "2")
-set(VERSION_MINOR "14")
+set(VERSION_MINOR "15")
set(VERSION_PATCH "99")
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
@@ -111,6 +111,7 @@ include_directories(
if(LIBXSLT_FOUND AND LIBXML2_FOUND)
add_subdirectory(umbrello)
add_subdirectory(doc)
+add_subdirectory(tools)
endif(LIBXSLT_FOUND AND LIBXML2_FOUND)
# for automatic unit tests
diff --git a/doc/screenshots.xmi b/doc/screenshots.xmi
new file mode 100644
index 0000000..1134b37
--- /dev/null
+++ b/doc/screenshots.xmi
@@ -0,0 +1,857 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMI verified="false" xmi.version="1.2" timestamp="2014-11-06T13:34:15" xmlns:UML="http://schema.omg.org/spec/UML/1.3">
+ <XMI.header>
+ <XMI.documentation>
+ <XMI.exporter>umbrello uml modeller http://umbrello.kde.org</XMI.exporter>
+ <XMI.exporterVersion>1.6.9</XMI.exporterVersion>
+ <XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
+ </XMI.documentation>
+ <XMI.metamodel xmi.version="1.3" href="UML.xml" xmi.name="UML"/>
+ </XMI.header>
+ <XMI.content>
+ <UML:Model isSpecification="false" isAbstract="false" isLeaf="false" xmi.id="m1" isRoot="false" name="UML-Modell">
+ <UML:Namespace.ownedElement>
+ <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="folder" name="folder"/>
+ <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="datatype" name="datatype"/>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Logical View" name="Logical View">
+ <UML:Namespace.ownedElement>
+ <UML:Package stereotype="folder" visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Datatypes" name="Datatypes">
+ <UML:Namespace.ownedElement>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="QZ5jXegw9qyP" name="int"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="JziKFBo7OPkz" name="char"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="YLyt9iHXHKHm" name="bool"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="zvh8ldV3cDNq" name="float"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="MBvkZei7xe04" name="double"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="KFbZasMZn1fX" name="short"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="e8YGLv4g50Oc" name="long"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="c6jZjid3xEdX" name="unsigned int"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="5x4qwhLapto9" name="unsigned short"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="nrpqpBSRGB0z" name="unsigned long"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="tb0pnbKqWPhS" name="string"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="yFqmcKvEV5AN" name="undef"/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="QjniIhPONaeL" name="Requests:Queue">
+ <UML:Classifier.feature>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="RZJhKesQk3qn" name="receive"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="AxibzvtOee4v" name="Header">
+ <UML:Classifier.feature>
+ <UML:Attribute visibility="private" isSpecification="false" xmi.id="cLvTHUVkZ4BM" type="QZ5jXegw9qyP" name="code"/>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="nepgzBEYJRhX" name="getCode">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="X47Lo0wuYv9k" type="QZ5jXegw9qyP"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="JPzCkp7M80pQ" name="setCode">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter visibility="private" isSpecification="false" xmi.id="VI82MKM7w9mw" type="QZ5jXegw9qyP" value="" name="c"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="3QH0wDM782i6" name="Request"/>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="fCwweCnhc4fY" name="Server"/>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="T4ZTpjTSvNOX" name="Body"/>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="JyScNA7eZ6qH" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="tvb2uPQNhWP2" type="3QH0wDM782i6" name="" aggregation="composite"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="oj7jttdCp5oC" type="AxibzvtOee4v" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="Dtrmzf1qZdqT" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="0EqhlDjZwrGn" type="3QH0wDM782i6" name="" aggregation="composite"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="itzYzlkCeZxb" type="T4ZTpjTSvNOX" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="FyQoZGFZT3FE" name="Incoming requests">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="GwlAn2yUtv0s" type="fCwweCnhc4fY" name="" aggregation="aggregate"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="0..*" xmi.id="fi3HIyrVuHJS" type="3QH0wDM782i6" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="E3ePM6RoJ4ls" name="WorkerManager">
+ <UML:Classifier.feature>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="cwf3Zhrqa4oV" name="LoadWorker">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="6nQepC7ul6tK" type="qRiTtOs5RVSn"/>
+ <UML:Parameter visibility="private" isSpecification="false" xmi.id="9fZWK9nu3Qyc" type="5YzzZNhAJcZZ" value="" name="job"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="qRiTtOs5RVSn" name="Worker">
+ <UML:Classifier.feature>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="nYVOVCoez8Ws" name="work"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="5YzzZNhAJcZZ" name="Transaction"/>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ijSdYPw9Myur" name="Queue">
+ <UML:Classifier.feature>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="WJUCvitzocUd" name="m_size"/>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="NWrYQuT7etkA" name="send">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter visibility="public" isSpecification="false" xmi.id="FUnOpArIY9hM" type="bJjbqHckLheW" value="" name="m"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="IfJcdBU9UyJP" name="receive"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="4KyXIGwvRJNA" name="Map">
+ <UML:Classifier.feature>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="8RGTKuC7z3Xx" name="operator[]">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter visibility="public" isSpecification="false" xmi.id="1" type="yFqmcKvEV5AN" value="" name="key"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="c6Dqx3h0OfXe" name="hasKey">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter visibility="public" isSpecification="false" xmi.id="1" type="yFqmcKvEV5AN" value="" name="key"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="tRZIivSqKiJe" name="Dispatcher"/>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="aWjZXEU9JfzG" name="SenderThread">
+ <UML:Classifier.feature>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="jeE5HjjBBHTt" name="run"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ZMDidgcnaKHD" name="ReceiverThread">
+ <UML:Classifier.feature>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="JNOnC6nEJxZA" name="run"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="3BjozMqWi3FJ" name="TCPServer">
+ <UML:Classifier.feature>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="jp6I7LVQitDs" name="m_port"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="x15FwePzn8nm" name="m_backlog"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="UbHAeWTMJXeQ" name="m_sender_count"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="s7qYy2Pv1SAx" name="m_receiver_count"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="6Xusegc8HtHu" name="m_name"/>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="NkEgGq66xvdt" name="start"/>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="x2mySxtYSnO6" name="shutdown"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="R1DjuUbGCpwS" name="SecurityServer">
+ <UML:Classifier.feature>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="f3ZayCRtCDpe" name="login">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter visibility="public" isSpecification="false" xmi.id="1" type="yFqmcKvEV5AN" value="" name="user"/>
+ <UML:Parameter visibility="public" isSpecification="false" xmi.id="2" type="yFqmcKvEV5AN" value="" name="password"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="8iAbTZhvYucQ" name="canExecute">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter visibility="public" isSpecification="false" xmi.id="1" type="yFqmcKvEV5AN" value="" name="session"/>
+ <UML:Parameter visibility="public" isSpecification="false" xmi.id="2" type="yFqmcKvEV5AN" value="" name="job"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="bJjbqHckLheW" name="Type"/>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Fi8r5MnrLXdG" name="string"/>
+ <UML:Class visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="6Wib4RZBTgw1" name="new_class"/>
+ </UML:Namespace.ownedElement>
+ <XMI.extension xmi.extender="umbrello">
+ <diagrams>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="25" showattribassocs="1" snapy="25" linewidth="0" showattsig="1" textcolor="#000000" isopen="1" showpackage="1" showpubliconly="0" showstereotype="1" name="Class Diagram" font="Sans Serif,9,-1,0,50,0,0,0,0,0" canvasheight="235,4063568115234" canvaswidth="537,0753479003906" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#d3d3d3" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffff00" zoom="104" xmi.id="uFddb9czKqlQ" documentation="" showscope="1" snapgrid="0" showatts="1" type="1">
+ <widgets>
+ <classwidget linecolor="none" usesdiagramfillcolor="0" linewidth="0" showoperations="1" textcolor="#000000" usesdiagramusefillcolor="0" showpubliconly="0" showpackage="1" x="457,5753479003906" showattsigs="601" showstereotype="1" y="66,365966796875" showattributes="1" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="LTHh2w0wHTIt" width="141" isinstance="0" usefillcolor="1" fillcolor="#ffff00" xmi.id="AxibzvtOee4v" showscope="1" height="68" showopsigs="601"/>
+ <classwidget linecolor="none" usesdiagramfillcolor="0" linewidth="0" showoperations="1" textcolor="#000000" usesdiagramusefillcolor="0" showpubliconly="0" showpackage="1" x="281,8846130371094" showattsigs="601" showstereotype="1" y="108,8461532592773" showattributes="1" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="yZUaBYVX0lC2" width="77" isinstance="0" usefillcolor="1" fillcolor="#ffff00" xmi.id="3QH0wDM782i6" showscope="1" height="33" showopsigs="601"/>
+ <classwidget linecolor="none" usesdiagramfillcolor="0" linewidth="0" showoperations="1" textcolor="#000000" usesdiagramusefillcolor="0" showpubliconly="0" showpackage="1" x="61,5" showattsigs="601" showstereotype="1" y="119,4230804443359" showattributes="1" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="I2dO2JU0swb4" width="64" isinstance="0" usefillcolor="1" fillcolor="#ffff00" xmi.id="fCwweCnhc4fY" showscope="1" height="33" showopsigs="601"/>
+ <classwidget linecolor="none" usesdiagramfillcolor="0" linewidth="0" showoperations="1" textcolor="#000000" usesdiagramusefillcolor="0" showpubliconly="0" showpackage="1" x="467,1247253417969" showattsigs="601" showstereotype="1" y="202,4063568115234" showattributes="1" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="Z9DBEshUuLqv" width="51" isinstance="0" usefillcolor="1" fillcolor="#ffff00" xmi.id="T4ZTpjTSvNOX" showscope="1" height="33" showopsigs="601"/>
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="3QH0wDM782i6" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="none" seqnum="" totalcounta="2" xmi.id="JyScNA7eZ6qH" widgetbid="AxibzvtOee4v" totalcountb="2" type="510" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="358,8846130371094" starty="130"/>
+ <endpoint endx="457,5753479003906" endy="130"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="3QH0wDM782i6" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" seqnum="" totalcounta="2" xmi.id="Dtrmzf1qZdqT" widgetbid="T4ZTpjTSvNOX" totalcountb="2" type="510" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="311,1111145019531" starty="141,8461532592773"/>
+ <endpoint endx="467,1247253417969" endy="229,2929229736328"/>
+ <point x="311,1111145019531" y="229,2929229736328"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="fCwweCnhc4fY" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="#ff0000" seqnum="" totalcounta="2" xmi.id="FyQoZGFZT3FE" widgetbid="3QH0wDM782i6" totalcountb="2" type="501" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="125,5" starty="138,9615325927734"/>
+ <endpoint endx="281,8846130371094" endy="138,9615325927734"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="144,3461608886719" showstereotype="1" y="0" text="Incoming requests" font="Sans Serif,9,-1,5,50,0,0,0,0,0" localid="8X1HCiepFYJ0" pretext="" role="703" width="114" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="jGFODRcPlblz" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="148,3365325927734" showstereotype="1" y="105,7692337036133" text="1" font="Sans Serif,9,-1,5,50,0,0,0,0,0" localid="VW1wZGAnDuxy" pretext="" role="701" width="15" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="utQnnQeS9fhP" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="228,7019195556641" showstereotype="1" y="106,6923065185547" text="0..*" font="Sans Serif,9,-1,5,50,0,0,0,0,0" localid="dWuVlBxHhxDE" pretext="" role="702" width="29" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="BM1MEwL8qjvb" height="17"/>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="25" showattribassocs="1" snapy="25" linewidth="0" showattsig="1" textcolor="#000000" isopen="1" showpackage="1" showpubliconly="0" showstereotype="1" name="State Diagram" font="Sans Serif,9,-1,0,50,0,0,0,0,0" canvasheight="332" canvaswidth="476,5" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#d3d3d3" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffff00" zoom="100" xmi.id="620uup3hgqXV" documentation="" showscope="1" snapgrid="0" showatts="1" type="5">
+ <widgets>
+ <statewidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="8" y="-38" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="q95NWknbmoVg" statename="State" statetype="0" width="20" isinstance="0" usefillcolor="1" fillcolor="#ffff00" xmi.id="s3pk5SrqydTz" documentation="" height="20">
+ <Activities/>
+ </statewidget>
+ <statewidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="145,222412109375" y="159,25830078125" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="Wtyx6lBxuEIP" statename="Stopped" statetype="1" width="78" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" xmi.id="ls6HQZALWvJi" documentation="" height="27">
+ <Activities/>
+ </statewidget>
+ <statewidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-80" y="267" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="o5wnof6QBlrI" statename="Working" statetype="1" width="77" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" xmi.id="h5lfhCcQ4jhS" documentation="" height="27">
+ <Activities/>
+ </statewidget>
+ <statewidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="191" y="270" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="81AgOq5Dv1yi" statename="State" statetype="2" width="20" isinstance="0" usefillcolor="1" fillcolor="#ffff00" xmi.id="Gqlnl5VohWWL" documentation="" height="20">
+ <Activities/>
+ </statewidget>
+ <statewidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-20,60139846801758" y="34,79021072387695" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="TXPfA2sI30wQ" statename="Ready" statetype="1" width="61" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" xmi.id="KzrBE56uBrZq" documentation="" height="27">
+ <Activities/>
+ </statewidget>
+ <statewidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-75" y="166" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="VZJgXLO0sng2" statename="Listening" statetype="1" width="84" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" xmi.id="3AG5rvV7lGsV" documentation="" height="27">
+ <Activities/>
+ </statewidget>
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="KzrBE56uBrZq" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="s3pk5SrqydTz" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="514">
+ <linepath layout="Polyline">
+ <startpoint startx="16" starty="-18"/>
+ <endpoint endx="16" endy="34,79021072387695"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="27" y="-9,104894638061523" text="Start" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="tApPqZMaYRQZ" pretext="" role="703" width="36" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="vROn5GOrr9Xp" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="3AG5rvV7lGsV" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="KzrBE56uBrZq" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="514">
+ <linepath layout="Polyline">
+ <startpoint startx="-20,60139846801758" starty="61,79021072387695"/>
+ <endpoint endx="-20,60139846801758" endy="166"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-27" y="105" text="Listen" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="gNfCm5l2olKo" pretext="" role="703" width="42" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="Pj6I92KHg8QH" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="h5lfhCcQ4jhS" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="3AG5rvV7lGsV" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="514">
+ <linepath layout="Polyline">
+ <startpoint startx="-18" starty="193"/>
+ <endpoint endx="-18" endy="267"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-11" y="205" text="Request arrived" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="V7JJsd5TMR0G" pretext="" role="703" width="98" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="BbO9OH26EZNb" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="3AG5rvV7lGsV" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="h5lfhCcQ4jhS" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="514">
+ <linepath layout="Polyline">
+ <startpoint startx="-61" starty="267"/>
+ <endpoint endx="-61" endy="193"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-227" y="211" text="Processing done" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="rQuclv7BEFsg" pretext="" role="703" width="103" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="H5dtyplNWsdf" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="ls6HQZALWvJi" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="3AG5rvV7lGsV" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="514">
+ <linepath layout="Polyline">
+ <startpoint startx="9" starty="171,25830078125"/>
+ <endpoint endx="145,222412109375" endy="171,25830078125"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="52,11120986938477" showstereotype="1" y="133" text="Stop" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="JOJ1soMBlBMx" pretext="" role="703" width="34" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="GQrPHPFIZTLO" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="ls6HQZALWvJi" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="KzrBE56uBrZq" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="514">
+ <linepath layout="Polyline">
+ <startpoint startx="40,39860153198242" starty="61,79021072387695"/>
+ <endpoint endx="190" endy="159,25830078125"/>
+ <point x="190" y="76"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="120,5" y="38,12528228759766" text="Stop" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="Pept4BAZGTq6" pretext="" role="703" width="34" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="svwZ3LoCwCLI" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="Gqlnl5VohWWL" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="ls6HQZALWvJi" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="514">
+ <linepath layout="Polyline">
+ <startpoint startx="191" starty="186,25830078125"/>
+ <endpoint endx="191" endy="270"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="197,5" y="205" text="Destroy" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="4tXQKXeCvWmh" pretext="" role="703" width="52" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="TOOfxmGErr6p" height="17"/>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="25" showattribassocs="1" snapy="25" linewidth="0" showattsig="1" textcolor="#000000" isopen="0" showpackage="1" showpubliconly="0" showstereotype="1" name="Activity Diagram" font="Sans Serif,9,-1,0,50,0,0,0,0,0" canvasheight="737,9737157821655" canvaswidth="506,7625274658203" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#d3d3d3" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffff00" zoom="100" xmi.id="PqT85MdOivNY" documentation="" showscope="1" snapgrid="0" showatts="1" type="6">
+ <widgets>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-173,3852081298828" y="385,6217041015625" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="ck09DMXcA0jF" width="179" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" activityname="Check available space" xmi.id="bZ6AnMNkqyzt" postcondition="" documentation="" activitytype="1" height="27" precondition=""/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="138,5764007568359" y="610,8623657226562" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="tzsaID7ctmTk" width="20" isinstance="0" usefillcolor="1" fillcolor="#ffff00" activityname="Activity" xmi.id="U3ZfAaRj8Vuv" postcondition="" documentation="" activitytype="2" height="20" precondition=""/>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-310,3901062011719" y="-13,72585201263428" text="Business Process: Make Reservation" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="9tRumqsfnkD3" pretext="" role="700" width="219" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="qHfgDcYiDGGM" height="17"/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-183,7329864501953" y="145,2196960449219" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="asFUapWhivbS" width="147" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" activityname="Identify customer" xmi.id="orVkttYNu703" postcondition="" documentation="" activitytype="1" height="27" precondition=""/>
+ <notewidget width="157" x="6,683614730834961" noteType="0" usesdiagramusefillcolor="0" y="19,48279190063477" usesdiagramfillcolor="0" isinstance="0" localid="OUfWEXEmOTHy" fillcolor="#ffff00" height="87" linecolor="#ff0000" xmi.id="hPmnvggjwMP9" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0" text="If not existing Customer, first go to &quot;Register Customer&quot;"/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-228,5469055175781" y="605,4533081054688" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="kZ2LoywAQcge" width="260" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" activityname="Confirm reservation to customer" xmi.id="wvp995Vxu0gl" postcondition="" documentation="" activitytype="1" height="27" precondition=""/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-127,2697296142578" y="522,7429809570312" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="zxJO4oTMfzM2" width="78" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" activityname="Reserve" xmi.id="ES88mWFjR5sb" postcondition="" documentation="" activitytype="1" height="27" precondition=""/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-111,5143737792969" y="53,48479080200195" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="nUN0LeRd8vln" width="20" isinstance="0" usefillcolor="1" fillcolor="#ffff00" activityname="Activity" xmi.id="WoQytGX1c12x" postcondition="" documentation="" activitytype="0" height="20" precondition=""/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-177,45263671875" y="326,0601196289062" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="2EL553ZsYvst" width="177" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" activityname="Take reservation wish" xmi.id="En7cgzKeg08u" postcondition="" documentation="" activitytype="1" height="27" precondition=""/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-113,8149261474609" showstereotype="1" y="243,9124450683594" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="H6dv4moUm7nn" width="30" isinstance="0" usefillcolor="1" fillcolor="#ffff00" activityname="" xmi.id="yoLgCoCsnm8n" postcondition="" documentation="" activitytype="4" height="30" precondition=""/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="126,5480880737305" showstereotype="1" y="456,6010437011719" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="LKzgaliqqLjs" width="30" isinstance="0" usefillcolor="1" fillcolor="#ffff00" activityname="" xmi.id="5XNqc8bbuwF6" postcondition="" documentation="" activitytype="4" height="30" precondition=""/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-114,3326034545898" showstereotype="1" y="456,466796875" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="jRwWC5HXNGDv" width="30" isinstance="0" usefillcolor="1" fillcolor="#ffff00" activityname="" xmi.id="1tlpDViG034d" postcondition="" documentation="" activitytype="4" height="30" precondition=""/>
+ <activitywidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-108,2838897705078" showstereotype="1" y="673,2112426757812" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="CXxnl2aRqe6g" width="20" isinstance="0" usefillcolor="1" fillcolor="#ffff00" activityname="" xmi.id="lOgVslop2PdP" postcondition="" documentation="" activitytype="2" height="20" precondition=""/>
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget roleBdoc="" linecolor="none" indexa="1" usesdiagramfillcolor="1" widgetbid="orVkttYNu703" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="WoQytGX1c12x" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="none" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-102,1026077270508" starty="73,48479080200195"/>
+ <endpoint endx="-102,1026077270508" endy="145,2196960449219"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="wvp995Vxu0gl" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="ES88mWFjR5sb" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-98,62038421630859" starty="549,7429809570312"/>
+ <endpoint endx="-98,62038421630859" endy="605,4533081054688"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-90,23360443115234" y="563,9617919921875" text="book reservation" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="HDjwSq6757js" pretext="" role="703" width="104" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="ieObqFinXOIK" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="none" indexa="1" usesdiagramfillcolor="1" widgetbid="orVkttYNu703" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="hPmnvggjwMP9" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="none" changeabilityA="900" changeabilityB="900" documentation="" type="513">
+ <linepath layout="Polyline">
+ <startpoint startx="6,683614730834961" starty="106,4827919006348"/>
+ <endpoint endx="-36,73298645019531" endy="145,2196960449219"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="none" indexa="1" usesdiagramfillcolor="1" widgetbid="bZ6AnMNkqyzt" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="En7cgzKeg08u" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="none" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-101,4440231323242" starty="353,0601196289062"/>
+ <endpoint endx="-101,4440231323242" endy="385,6217041015625"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="yoLgCoCsnm8n" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="orVkttYNu703" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-99,84243011474609" starty="172,2196960449219"/>
+ <endpoint endx="-99,84243011474609" endy="243,9124450683594"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-255,2129364013672" showstereotype="1" y="186,7215270996094" text="customer identified" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="AFD0Kd70iXhu" pretext="" role="703" width="118" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="TEWIlJkSs3X5" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="5XNqc8bbuwF6" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="yoLgCoCsnm8n" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-83,81492614746094" starty="260,7462768554688"/>
+ <endpoint endx="142,4730377197266" endy="456,6010437011719"/>
+ <point x="142,4730377197266" y="260,7462768554688"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-6,938732624053955" showstereotype="1" y="232,3207244873047" text="authentification failed" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="gn4hq6I1mW7L" pretext="" role="703" width="130" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="xHcpPOsZOR5h" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="ES88mWFjR5sb" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="1tlpDViG034d" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-98,62038421630859" starty="486,466796875"/>
+ <endpoint endx="-98,62038421630859" endy="522,7429809570312"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-92,73802947998047" showstereotype="1" y="495,1931457519531" text="ok" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="lvFYz2vTljEa" pretext="" role="703" width="21" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="MHafkOZbTDrR" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="En7cgzKeg08u" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="yoLgCoCsnm8n" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-99,84243011474609" starty="273,9124450683594"/>
+ <endpoint endx="-99,84243011474609" endy="326,0601196289062"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="U3ZfAaRj8Vuv" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="5XNqc8bbuwF6" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="143,2822723388672" starty="486,6010437011719"/>
+ <endpoint endx="143,2822723388672" endy="610,8623657226562"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="67,37242126464844" showstereotype="1" y="648,0846557617188" text="Reservation canceled" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="FzAhP1E0xB1r" pretext="" role="703" width="129" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="caclTxH7LQca" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="lOgVslop2PdP" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="wvp995Vxu0gl" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-98,42903900146484" starty="632,4533081054688"/>
+ <endpoint endx="-98,42903900146484" endy="673,2112426757812"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-204,7544708251953" showstereotype="1" y="707,2478637695312" text="Process successfull finished" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="lTy9u4o5blsK" pretext="" role="703" width="171" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="mQma5qEoFuH5" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="5XNqc8bbuwF6" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="1tlpDViG034d" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-84,33260345458984" starty="468,9540100097656"/>
+ <endpoint endx="126,5480880737305" endy="468,9540100097656"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="8,931272506713867" showstereotype="1" y="445,2748413085938" text="cancel" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="f6thTW5Ex3Nr" pretext="" role="703" width="44" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="7Auhtk1fBlFE" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="1tlpDViG034d" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="bZ6AnMNkqyzt" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-101,4440231323242" starty="412,6217041015625"/>
+ <endpoint endx="-101,4440231323242" endy="456,466796875"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="#ff0000" indexa="1" usesdiagramfillcolor="0" widgetbid="yoLgCoCsnm8n" indexb="1" linewidth="0" seqnum="" textcolor="#000000" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="1tlpDViG034d" font="Sans Serif,12,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" changeabilityB="900" documentation="" type="515">
+ <linepath layout="Polyline">
+ <startpoint startx="-114,3326034545898" starty="472,941162109375"/>
+ <endpoint endx="-113,8149261474609" endy="258,8235168457031"/>
+ <point x="-289,4117736816406" y="472,941162109375"/>
+ <point x="-291,7647094726562" y="258,8235168457031"/>
+ </linepath>
+ <floatingtext linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="0" x="-273,6528015136719" showstereotype="1" y="478,2685546875" text="no space available" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="qMxaW1wgG7eZ" pretext="" role="703" width="114" isinstance="0" posttext="" usefillcolor="1" fillcolor="#ffff00" xmi.id="klZQIEJjTp2C" height="17"/>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="25" showattribassocs="1" snapy="25" linewidth="0" showattsig="1" textcolor="#000000" isopen="1" showpackage="1" showpubliconly="0" showstereotype="1" name="Sequence Diagram" font="Sans Serif,9,-1,0,50,0,0,0,0,0" canvasheight="286" canvaswidth="701" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#d3d3d3" backgroundcolor="#ffffff" autoincrementsequence="0" usefillcolor="1" fillcolor="#ffff00" zoom="100" xmi.id="mMOZQezNS4FI" documentation="" showscope="1" snapgrid="0" showatts="1" type="3">
+ <widgets>
+ <objectwidget linecolor="#ff0000" usesdiagramfillcolor="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" x="-413" decon="0" showstereotype="1" y="80" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="uLTMecAOyWyM" width="145" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="QjniIhPONaeL" height="27" drawasactor="0"/>
+ <objectwidget linecolor="#ff0000" usesdiagramfillcolor="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" x="-222" decon="0" showstereotype="1" y="80" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="51HLMSVCPVh7" width="140" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="E3ePM6RoJ4ls" height="27" drawasactor="0"/>
+ <objectwidget linecolor="#ff0000" usesdiagramfillcolor="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" x="-47" decon="0" showstereotype="1" y="80" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="btbsyKk1KzKe" width="76" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="qRiTtOs5RVSn" height="27" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" x="-672" decon="0" showstereotype="1" y="80" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="dQFIhHoGZXrP" width="103" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="tRZIivSqKiJe" height="27" drawasactor="0"/>
+ </widgets>
+ <messages>
+ <messagewidget linecolor="none" usesdiagramfillcolor="1" widgetbid="uLTMecAOyWyM" textid="oWiUgX65CS9o" operation="RZJhKesQk3qn" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" x="-619" showstereotype="1" y="137" widgetaid="dQFIhHoGZXrP" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="KpdjTHqNhCpc" width="278" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="RZJhKesQk3qn" height="8" sequencemessagetype="1001">
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-417" showstereotype="1" y="120" text="receive()" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="5Lhee6vytZgN" pretext="" role="704" width="57" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="oWiUgX65CS9o" height="17"/>
+ </messagewidget>
+ <messagewidget linecolor="none" usesdiagramfillcolor="1" widgetbid="dQFIhHoGZXrP" textid="NFmBMafZG5fW" operation="return" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" x="-619" showstereotype="1" y="167" widgetaid="uLTMecAOyWyM" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="b1B77WUCp9oU" width="278" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="FhQ6G6T5bBZH" height="8" sequencemessagetype="1001">
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-398" showstereotype="1" y="150" text="return" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="hfNr6UgfVrnc" pretext="" role="704" width="43" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="NFmBMafZG5fW" height="17"/>
+ </messagewidget>
+ <messagewidget linecolor="none" usesdiagramfillcolor="1" widgetbid="51HLMSVCPVh7" textid="jZNTwAHmfi9z" operation="cwf3Zhrqa4oV" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" x="-620" showstereotype="1" y="221" widgetaid="dQFIhHoGZXrP" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="C9ZnI62xkNpo" width="476" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="cwf3Zhrqa4oV" height="20" sequencemessagetype="1000">
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-448" showstereotype="1" y="204" text="LoadWorker(job : Transaction) : Worker" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="KWMab25l9eWP" pretext="" role="704" width="225" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="jZNTwAHmfi9z" height="17"/>
+ </messagewidget>
+ <messagewidget linecolor="none" usesdiagramfillcolor="1" widgetbid="btbsyKk1KzKe" textid="GqKJI4vlqGKF" operation="nYVOVCoez8Ws" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" x="-620" showstereotype="1" y="273" widgetaid="dQFIhHoGZXrP" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="v6fKsY8B2Sje" width="619" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="nYVOVCoez8Ws" height="20" sequencemessagetype="1000">
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-70" showstereotype="1" y="256" text="work()" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="Uq77WE4RLkkB" pretext="" role="704" width="43" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="GqKJI4vlqGKF" height="17"/>
+ </messagewidget>
+ </messages>
+ <associations/>
+ </diagram>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="25" showattribassocs="1" snapy="25" linewidth="0" showattsig="1" textcolor="#000000" isopen="1" showpackage="1" showpubliconly="0" showstereotype="1" name="Collaboration Diagram" font="Sans Serif,9,-1,0,50,0,0,0,0,0" canvasheight="383,7952880859375" canvaswidth="866,3385772705078" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#d3d3d3" backgroundcolor="#ffffff" autoincrementsequence="0" usefillcolor="1" fillcolor="#ffff00" zoom="129" xmi.id="KgB3KDwvV78c" documentation="" showscope="1" snapgrid="0" showatts="1" type="4">
+ <widgets>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" instancename="responses" x="137,5590515136719" decon="0" y="267,7952880859375" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" localid="t1x7i209bpWp" width="179" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="ijSdYPw9Myur" height="35" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" instancename="session_map" x="168" decon="0" y="-20" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" localid="Q85K9p53RAeo" width="183" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="4KyXIGwvRJNA" height="35" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="383,094482421875" decon="0" y="32,59054946899414" font="Nimbus Sans L,12,-1,5,50,0,0,0,0,0" localid="Mty3IB8gJB1T" width="132" isinstance="0" multipleinstance="1" usefillcolor="1" fillcolor="none" xmi.id="tRZIivSqKiJe" height="45" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-100,8425216674805" decon="0" y="252,2598419189453" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" localid="de4OmvH9mFC4" width="164" isinstance="0" multipleinstance="1" usefillcolor="1" fillcolor="none" xmi.id="aWjZXEU9JfzG" height="45" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-118" decon="0" y="143" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" localid="z4Jkk6kZ41tI" width="179" isinstance="0" multipleinstance="1" usefillcolor="1" fillcolor="none" xmi.id="ZMDidgcnaKHD" height="45" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" instancename="requests" x="179,1574859619141" decon="0" y="124,5511779785156" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" localid="MIdmZWeWYvHH" width="163" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="ijSdYPw9Myur" height="35" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-81" decon="0" y="-73" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" localid="jB8UOryk9bXg" width="125" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="3BjozMqWi3FJ" height="35" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="385" decon="0" y="-81" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" localid="ROvooogVxozJ" width="158" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="R1DjuUbGCpwS" height="35" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" instancename="connections_data_in" x="-88" decon="0" y="60" font="Nimbus Sans l,12,-1,5,50,0,0,0,0,0" localid="47kXpn1GBw5x" width="270" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="ijSdYPw9Myur" height="35" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" x="422,9212646484375" decon="0" showstereotype="1" y="241,7716522216797" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="HwS638ontyEH" width="140" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="E3ePM6RoJ4ls" height="27" drawasactor="0"/>
+ <objectwidget linecolor="none" usesdiagramfillcolor="1" linewidth="0" textcolor="#000000" usesdiagramusefillcolor="1" x="614,8751831054688" decon="0" showstereotype="1" y="39,40309906005859" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="kGaeCmv6yL9D" width="76" isinstance="0" multipleinstance="0" usefillcolor="1" fillcolor="none" xmi.id="qRiTtOs5RVSn" height="27" drawasactor="0"/>
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="47kXpn1GBw5x" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" widgetaid="jB8UOryk9bXg" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" xmi.id="NWrYQuT7etkA" changeabilityB="900" type="505">
+ <linepath layout="Polyline">
+ <startpoint startx="-9" starty="-38"/>
+ <endpoint endx="-9" endy="60"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-3,149606227874756" showstereotype="1" y="-3,547244071960449" text="send(m : Type)" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="MDgZ0dzdeYBa" pretext="" role="706" width="92" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="icTspIWyyfXP" height="17"/>
+ </assocwidget>
+ <assocwidget linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="47kXpn1GBw5x" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" widgetaid="z4Jkk6kZ41tI" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" xmi.id="IfJcdBU9UyJP" changeabilityB="900" type="505">
+ <linepath layout="Polyline">
+ <startpoint startx="-88" starty="143"/>
+ <endpoint endx="-88" endy="95"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-164,3385772705078" showstereotype="1" y="99,77558898925781" text="receive()" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="CEKk7uAT5p05" pretext="" role="706" width="57" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="S0i4WreFT77J" height="17"/>
+ </assocwidget>
+ <assocwidget linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="MIdmZWeWYvHH" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" widgetaid="z4Jkk6kZ41tI" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" xmi.id="NWrYQuT7etkA" changeabilityB="900" type="505">
+ <linepath layout="Polyline">
+ <startpoint startx="61" starty="143"/>
+ <endpoint endx="179,1574859619141" endy="143"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="55,39369964599609" showstereotype="1" y="112,4881896972656" text="send(m : Type)" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="NcFLFmkRy395" pretext="" role="706" width="92" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="xHX16X6YVnc2" height="17"/>
+ </assocwidget>
+ <assocwidget linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="t1x7i209bpWp" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" widgetaid="de4OmvH9mFC4" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" xmi.id="IfJcdBU9UyJP" changeabilityB="900" type="505">
+ <linepath layout="Polyline">
+ <startpoint startx="63,15747833251953" starty="267,7952880859375"/>
+ <endpoint endx="137,5590515136719" endy="267,7952880859375"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="106,6692886352539" showstereotype="1" y="225,5747985839844" text="receive()" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="eEH8LMPgwcz9" pretext="" role="706" width="57" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="MiaKlhOgzth5" height="17"/>
+ </assocwidget>
+ <assocwidget linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="HwS638ontyEH" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" widgetaid="Mty3IB8gJB1T" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" xmi.id="cwf3Zhrqa4oV" changeabilityB="900" type="505">
+ <linepath layout="Polyline">
+ <startpoint startx="471" starty="77,59054946899414"/>
+ <endpoint endx="471" endy="241,7716522216797"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="477" showstereotype="1" y="186,5" text="LoadWorker(job : Transaction) : Worker" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="vCP5HkQNSTQb" pretext="" role="706" width="225" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="Yxi64pBLjeSm" height="17"/>
+ </assocwidget>
+ <assocwidget linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="kGaeCmv6yL9D" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" widgetaid="Mty3IB8gJB1T" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" xmi.id="nYVOVCoez8Ws" changeabilityB="900" type="505">
+ <linepath layout="Polyline">
+ <startpoint startx="515,094482421875" starty="54"/>
+ <endpoint endx="614,8751831054688" endy="54"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="525,2637939453125" showstereotype="1" y="31,09055137634277" text="work()" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="3ZbT015Ywle1" pretext="" role="706" width="43" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="aqKJSm5A0doB" height="17"/>
+ </assocwidget>
+ <assocwidget linecolor="none" indexa="1" usesdiagramfillcolor="0" widgetbid="MIdmZWeWYvHH" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="0" totalcounta="2" totalcountb="2" widgetaid="Mty3IB8gJB1T" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="#ffff00" changeabilityA="900" xmi.id="IfJcdBU9UyJP" changeabilityB="900" type="505">
+ <linepath layout="Polyline">
+ <startpoint startx="383,094482421875" starty="77,59054946899414"/>
+ <endpoint endx="342,1574859619141" endy="124,5511779785156"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="288,3070983886719" showstereotype="1" y="66,42519378662109" text="receive()" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="PiHL1QX4x8Xy" pretext="" role="706" width="57" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="7aW4J95txPAN" height="17"/>
+ </assocwidget>
+ <assocwidget linecolor="none" indexa="1" usesdiagramfillcolor="1" widgetbid="t1x7i209bpWp" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" totalcounta="2" totalcountb="2" widgetaid="Mty3IB8gJB1T" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="none" changeabilityA="900" xmi.id="NWrYQuT7etkA" changeabilityB="900" type="505">
+ <linepath layout="Polyline">
+ <startpoint startx="383,094482421875" starty="77,59054946899414"/>
+ <endpoint endx="316,5590515136719" endy="267,7952880859375"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="331,9457397460938" showstereotype="1" y="160,1331329345703" text="send(m : Type)" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="AEX8rKHF2YY3" pretext="" role="706" width="92" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="w55uBasJ9MNS" height="17"/>
+ </assocwidget>
+ <assocwidget roleBdoc="" linecolor="none" indexa="1" usesdiagramfillcolor="1" widgetbid="ROvooogVxozJ" indexb="1" linewidth="none" seqnum="" textcolor="none" usesdiagramusefillcolor="1" totalcounta="2" totalcountb="2" roleAdoc="" widgetaid="Mty3IB8gJB1T" font="Sans Serif,9,-1,0,50,0,0,0,0,0" visibilityA="0" visibilityB="0" usefillcolor="1" fillcolor="none" changeabilityA="900" changeabilityB="900" documentation="" type="520">
+ <linepath layout="Polyline">
+ <startpoint startx="385" starty="32,59054946899414"/>
+ <endpoint endx="385" endy="-46"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="385" showstereotype="1" y="0" text="canExecute(session : undef, job : undef)" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="2LIqca6isRGR" pretext="" role="706" width="238" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="Q7VA3dTCoCgh" height="17"/>
+ </assocwidget>
+ </associations>
+ </diagram>
+ </diagrams>
+ </XMI.extension>
+ </UML:Model>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Use Case View" name="Use Case View">
+ <UML:Namespace.ownedElement>
+ <UML:Actor visibility="public" isSpecification="false" namespace="Use Case View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="S0gDbRC8UHSG" name="Flight booker"/>
+ <UML:Actor visibility="public" isSpecification="false" namespace="Use Case View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="rYPubnB3nrEM" name="Call center agent"/>
+ <UML:Actor visibility="public" isSpecification="false" namespace="Use Case View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="SATYACxzkMuK" name="Customer"/>
+ <UML:UseCase visibility="public" isSpecification="false" namespace="Use Case View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="bwXs5BPXMq5U" name="Book flight via phone"/>
+ <UML:UseCase visibility="public" isSpecification="false" namespace="Use Case View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="wZSuFNWqJ3gM" name="Book flight"/>
+ <UML:UseCase visibility="public" isSpecification="false" namespace="Use Case View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ngbB2uTyRutf" name="Book flight at Travel Agency"/>
+ <UML:Association visibility="public" isSpecification="false" namespace="Use Case View" xmi.id="jC0cgcoTJQcJ" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="I4Iiy9NFWqmx" type="S0gDbRC8UHSG" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="yiZAVmFCxDod" type="wZSuFNWqJ3gM" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Use Case View" xmi.id="qb47zhQHlgzj" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="pKwM9jJ7PtHs" type="rYPubnB3nrEM" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="dU4YirBWSGdR" type="bwXs5BPXMq5U" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Use Case View" xmi.id="v1ggieNXwHr5" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="y9DN0SFbxIAf" type="SATYACxzkMuK" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="9LBZZmyUlc8T" type="ngbB2uTyRutf" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Use Case View" xmi.id="GTzDlqGhzT5z" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" xmi.id="uIZrajUh2dEc" type="bwXs5BPXMq5U" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="NC48pBc3cZEL" type="S0gDbRC8UHSG" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Use Case View" xmi.id="NV3Lw8IqOrhx" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" xmi.id="a9edmtD93HGs" type="rYPubnB3nrEM" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="Qsu3P8OmdR5a" type="S0gDbRC8UHSG" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Use Case View" xmi.id="tNq4pH29t6Vk" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" xmi.id="Ri2dqLB53UwA" type="ngbB2uTyRutf" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="vMkh9Hh2cX5R" type="wZSuFNWqJ3gM" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Use Case View" xmi.id="m5ZfB2ObkQEZ" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" xmi.id="mNcnsYvltfQ2" type="bwXs5BPXMq5U" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="w83Xf6wSBT5L" type="wZSuFNWqJ3gM" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Use Case View" xmi.id="WRwEs8lcVMNL" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" xmi.id="sI6lvXmqdnNI" type="SATYACxzkMuK" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="tJi4lmPHDLT3" type="S0gDbRC8UHSG" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ </UML:Namespace.ownedElement>
+ <XMI.extension xmi.extender="umbrello">
+ <diagrams>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="25" showattribassocs="1" snapy="25" linewidth="0" showattsig="1" textcolor="#000000" isopen="1" showpackage="1" showpubliconly="0" showstereotype="1" name="Use Case Diagram" font="Sans Serif,9,-1,0,50,0,0,0,0,0" canvasheight="426,9895782470703" canvaswidth="833,2412536621096" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#d3d3d3" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffff00" zoom="125" xmi.id="enYrLpp253OJ" documentation="" showscope="1" snapgrid="0" showatts="1" type="2">
+ <widgets>
+ <actorwidget width="83" showstereotype="1" x="278,3020690917969" usesdiagramusefillcolor="0" y="-28,87218208312989" usesdiagramfillcolor="0" isinstance="0" localid="FMAlIJUu62lP" fillcolor="#ffff00" height="65,125" linecolor="none" xmi.id="S0gDbRC8UHSG" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <actorwidget width="107" showstereotype="1" x="575,5525146484375" usesdiagramusefillcolor="0" y="97,26502227783203" usesdiagramfillcolor="0" isinstance="0" localid="HQSlfu1vHBgZ" fillcolor="#ffff00" height="68,25" linecolor="none" xmi.id="rYPubnB3nrEM" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <actorwidget width="66" showstereotype="1" x="772,7382568359376" usesdiagramusefillcolor="0" y="101,4386093139648" usesdiagramfillcolor="0" isinstance="0" localid="93LuvaGCyive" fillcolor="#ffff00" height="65,125" linecolor="none" xmi.id="SATYACxzkMuK" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <usecasewidget width="181" showstereotype="1" x="538,0703125" usesdiagramusefillcolor="0" y="-32,88018035888672" usesdiagramfillcolor="0" isinstance="0" localid="20SkKK2RNOJI" fillcolor="#ffff00" height="52" linecolor="none" xmi.id="bwXs5BPXMq5U" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <usecasewidget width="98" showstereotype="1" x="681,1924438476562" usesdiagramusefillcolor="0" y="-196,1275024414062" usesdiagramfillcolor="0" isinstance="0" localid="F3tZtw1vuTeC" fillcolor="#ffff00" height="52" linecolor="none" xmi.id="wZSuFNWqJ3gM" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <usecasewidget width="238" showstereotype="1" x="866,3433227539062" usesdiagramusefillcolor="0" y="-42,60506210327149" usesdiagramfillcolor="0" isinstance="0" localid="HPTZRAveDnD5" fillcolor="#ffff00" height="52" linecolor="none" xmi.id="ngbB2uTyRutf" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="S0gDbRC8UHSG" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="none" seqnum="" totalcounta="2" xmi.id="jC0cgcoTJQcJ" widgetbid="wZSuFNWqJ3gM" totalcountb="2" type="503" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="361,3020690917969" starty="-28,87218208312989"/>
+ <endpoint endx="681,1924438476562" endy="-144,1275024414062"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="rYPubnB3nrEM" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="none" seqnum="" totalcounta="2" xmi.id="qb47zhQHlgzj" widgetbid="bwXs5BPXMq5U" totalcountb="2" type="503" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="629,4495849609375" starty="97,26502227783203"/>
+ <endpoint endx="629,4495849609375" endy="19,11981964111328"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="SATYACxzkMuK" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" seqnum="" totalcounta="2" xmi.id="v1ggieNXwHr5" widgetbid="ngbB2uTyRutf" totalcountb="2" type="503" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="838,7382568359376" starty="101,4386093139648"/>
+ <endpoint endx="866,3433227539062" endy="9,394937896728514"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="bwXs5BPXMq5U" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="none" seqnum="" totalcounta="2" xmi.id="GTzDlqGhzT5z" widgetbid="S0gDbRC8UHSG" totalcountb="2" type="512" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="538,0703125" starty="3,674418687820435"/>
+ <endpoint endx="361,3020690917969" endy="3,674418687820435"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="rYPubnB3nrEM" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="none" seqnum="" totalcounta="2" xmi.id="NV3Lw8IqOrhx" widgetbid="S0gDbRC8UHSG" totalcountb="2" type="512" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="575,5525146484375" starty="153,8461608886719"/>
+ <endpoint endx="336,5384521484375" endy="36,25281791687011"/>
+ <point x="336,5384521484375" y="153,8461608886719"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="ngbB2uTyRutf" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="none" seqnum="" totalcounta="2" xmi.id="tNq4pH29t6Vk" widgetbid="wZSuFNWqJ3gM" totalcountb="2" type="512" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="866,3433227539062" starty="-42,60506210327149"/>
+ <endpoint endx="779,1924438476562" endy="-144,1275024414062"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="bwXs5BPXMq5U" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="none" seqnum="" totalcounta="2" xmi.id="m5ZfB2ObkQEZ" widgetbid="wZSuFNWqJ3gM" totalcountb="2" type="512" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="719,0703125" starty="-32,88018035888672"/>
+ <endpoint endx="719,0703125" endy="-144,1275024414062"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="SATYACxzkMuK" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="none" seqnum="" totalcounta="2" xmi.id="WRwEs8lcVMNL" widgetbid="S0gDbRC8UHSG" totalcountb="2" type="512" textcolor="none" usefillcolor="1" linewidth="none" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="810,3448486328125" starty="166,5636093139648"/>
+ <endpoint endx="300" endy="36,25281791687011"/>
+ <point x="810,3448486328125" y="225,8620758056641"/>
+ <point x="300" y="225,8620758056641"/>
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ </diagrams>
+ </XMI.extension>
+ </UML:Model>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Component View" name="Component View">
+ <UML:Namespace.ownedElement/>
+ </UML:Model>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Deployment View" name="Deployment View">
+ <UML:Namespace.ownedElement/>
+ </UML:Model>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Entity Relationship Model" name="Entity Relationship Model">
+ <UML:Namespace.ownedElement>
+ <UML:Entity visibility="public" isSpecification="false" namespace="Entity Relationship Model" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="KEvAg9c4E7EG" name="Bank">
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="KEvAg9c4E7EG" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="gixrRUf4mLy0" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Code"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="KEvAg9c4E7EG" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="ajbyeboxeNGw" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Name"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="KEvAg9c4E7EG" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="o1loviuZOsOp" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Address"/>
+ </UML:Entity>
+ <UML:Entity visibility="public" isSpecification="false" namespace="Entity Relationship Model" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Ln1wV99qM200" name="Account">
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="Ln1wV99qM200" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="M3r6Np4xWgwB" type="Fi8r5MnrLXdG" dbindex_type="1100" initialValue="" name="AccNo"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="Ln1wV99qM200" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="FYpeQERkFJpc" type="MBvkZei7xe04" dbindex_type="1100" initialValue="" name="Balance"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="Ln1wV99qM200" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="8tYfXUomAwdD" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Type"/>
+ </UML:Entity>
+ <UML:Entity visibility="public" isSpecification="false" namespace="Entity Relationship Model" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="83BZ5WGQKHMp" name="Bank-Branch">
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="83BZ5WGQKHMp" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="929laCK2L5ha" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Address"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="83BZ5WGQKHMp" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="iXX2fNksjiJn" type="QZ5jXegw9qyP" dbindex_type="1100" initialValue="" name="BranchNo"/>
+ </UML:Entity>
+ <UML:Entity visibility="public" isSpecification="false" namespace="Entity Relationship Model" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="xcEpd5al6jIB" name="Loan">
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="xcEpd5al6jIB" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="rANpSbJBca5a" type="QZ5jXegw9qyP" dbindex_type="1100" initialValue="" name="LoanNo"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="xcEpd5al6jIB" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="S9nhEdszLAsi" type="MBvkZei7xe04" dbindex_type="1100" initialValue="" name="Amount"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="xcEpd5al6jIB" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="CM0T6NCvXYky" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Type"/>
+ </UML:Entity>
+ <UML:Association visibility="public" isSpecification="false" namespace="Entity Relationship Model" xmi.id="dTF1N8rwhNdy" name="has">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="qCDwzHgpt9lE" type="KEvAg9c4E7EG" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" relationship="true" multiplicity="*" xmi.id="utmEbsKEJZFh" type="83BZ5WGQKHMp" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Entity Relationship Model" xmi.id="f5dMSGLGSWDP" name="has">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="nrEe0xqurc7S" type="83BZ5WGQKHMp" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" relationship="true" multiplicity="*" xmi.id="VRgoytVey60O" type="Ln1wV99qM200" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Entity Relationship Model" xmi.id="KJfknq7ahLCf" name="gives">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="H2Z8dea65Eu4" type="83BZ5WGQKHMp" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" relationship="true" xmi.id="5Og4SeQly3Vl" type="xcEpd5al6jIB" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Entity visibility="public" isSpecification="false" namespace="Entity Relationship Model" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="JIqo3AwR1Au5" name="Customer">
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="JIqo3AwR1Au5" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="HP2cwft9BglZ" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="SSN"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="JIqo3AwR1Au5" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="uDIAW7kcyIFW" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Phone"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="JIqo3AwR1Au5" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="k3Guyu5FH7rB" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Name"/>
+ <UML:EntityAttribute visibility="private" values="" isSpecification="false" namespace="JIqo3AwR1Au5" allow_null="0" isAbstract="false" isLeaf="false" attributes="" auto_increment="0" isRoot="false" xmi.id="liIuP4UHHmPl" type="tb0pnbKqWPhS" dbindex_type="1100" initialValue="" name="Address"/>
+ </UML:Entity>
+ <UML:Association visibility="public" isSpecification="false" namespace="Entity Relationship Model" xmi.id="OeE6TJjkbaZd" name="takes">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" xmi.id="iT2heumtJyar" type="JIqo3AwR1Au5" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" relationship="true" multiplicity="1" xmi.id="NBEOPN3l1HsS" type="xcEpd5al6jIB" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Entity Relationship Model" xmi.id="YZD89kjpDlXp" name="holds">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="*" xmi.id="fHgwGFldQxzp" type="JIqo3AwR1Au5" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" relationship="true" multiplicity="*" xmi.id="J3bIIRlr0wz8" type="Ln1wV99qM200" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ </UML:Namespace.ownedElement>
+ <XMI.extension xmi.extender="umbrello">
+ <diagrams>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="25" showattribassocs="1" snapy="25" linewidth="0" showattsig="1" textcolor="#000000" isopen="1" showpackage="1" showpubliconly="0" showstereotype="1" name="Entity Relationship Diagram" font="Sans Serif,9,-1,0,50,0,0,0,0,0" canvasheight="388,5" canvaswidth="446" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#d3d3d3" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffff00" zoom="101" xmi.id="cKrvIJSKdk8D" documentation="" showscope="1" snapgrid="0" showatts="1" type="9">
+ <widgets>
+ <entitywidget width="100" showstereotype="1" x="-462" usesdiagramusefillcolor="0" y="-548" usesdiagramfillcolor="0" isinstance="0" localid="igQVq7CSR3Lj" fillcolor="#ffff00" height="68" linecolor="none" xmi.id="KEvAg9c4E7EG" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <entitywidget width="100" showstereotype="1" x="-386" usesdiagramusefillcolor="0" y="-445" usesdiagramfillcolor="0" isinstance="0" localid="Aa2OhEcOu3rk" fillcolor="#ffff00" height="68" linecolor="none" xmi.id="Ln1wV99qM200" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <entitywidget width="122" showstereotype="1" x="-138" usesdiagramusefillcolor="0" y="-547" usesdiagramfillcolor="0" isinstance="0" localid="OTdiVcidCk0s" fillcolor="#ffff00" height="51" linecolor="none" xmi.id="83BZ5WGQKHMp" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <entitywidget width="100" showstereotype="1" x="-148" usesdiagramusefillcolor="0" y="-399" usesdiagramfillcolor="0" isinstance="0" localid="FYbXnvLAOwss" fillcolor="#ffff00" height="68" linecolor="none" xmi.id="xcEpd5al6jIB" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ <entitywidget width="100" showstereotype="1" x="-216" usesdiagramusefillcolor="0" y="-245" usesdiagramfillcolor="0" isinstance="0" localid="HPEjaRcN2G9h" fillcolor="#ffff00" height="85" linecolor="none" xmi.id="JIqo3AwR1Au5" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0"/>
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="KEvAg9c4E7EG" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="#ff0000" seqnum="" totalcounta="2" xmi.id="dTF1N8rwhNdy" widgetbid="83BZ5WGQKHMp" totalcountb="2" type="519" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="-362" starty="-522"/>
+ <endpoint endx="-138" endy="-522"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-267" showstereotype="1" y="-516" text="has" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="btS8ySGDfKpC" pretext="" role="703" width="29" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="9VdfOpVM4L6e" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-355,5" showstereotype="1" y="-548,5" text="1" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="dzq62yTdrtko" pretext="" role="701" width="15" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="L0z0KmBRHo5f" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-154,5" showstereotype="1" y="-546,5" text="*" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="bazdt5HW56b7" pretext="" role="702" width="14" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="44luyTgJTdIm" height="17"/>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="83BZ5WGQKHMp" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="#ff0000" seqnum="" totalcounta="2" xmi.id="f5dMSGLGSWDP" widgetbid="Ln1wV99qM200" totalcountb="2" type="519" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="-138" starty="-496"/>
+ <endpoint endx="-286" endy="-445"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-211" showstereotype="1" y="-467" text="has" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="PTDfFGIqqITj" pretext="" role="703" width="29" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="NiEQopYrrHlp" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-145,5" showstereotype="1" y="-483" text="1" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="kP7B2NxRq943" pretext="" role="701" width="15" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="PNtEfKx029Pr" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-282,5" showstereotype="1" y="-441" text="*" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="yxiqCRduqk5q" pretext="" role="702" width="14" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="73HvCKyZhrnK" height="17"/>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="83BZ5WGQKHMp" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="#ff0000" seqnum="" totalcounta="2" xmi.id="KJfknq7ahLCf" widgetbid="xcEpd5al6jIB" totalcountb="2" type="519" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="-84" starty="-496"/>
+ <endpoint endx="-84" endy="-399"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-74" showstereotype="1" y="-458" text="gives" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="zmpzA85Q8YjX" pretext="" role="703" width="38" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="HzmzBX3EZfuk" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-75" showstereotype="1" y="-488,25" text="1" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="hsu7I1NFnAEx" pretext="" role="701" width="15" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="GJLOp4t43d4D" height="17"/>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="JIqo3AwR1Au5" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="#ff0000" seqnum="" totalcounta="2" xmi.id="OeE6TJjkbaZd" widgetbid="xcEpd5al6jIB" totalcountb="2" type="519" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="-116" starty="-245"/>
+ <endpoint endx="-116" endy="-331"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-113,5" showstereotype="1" y="-286" text="takes" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="rzwXNuIXb9UM" pretext="" role="703" width="39" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="3ORxpafZ1OL6" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-105" showstereotype="1" y="-326" text="1" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="H0TLPlGGiCn6" pretext="" role="702" width="15" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="43bgB40CSR7F" height="17"/>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="JIqo3AwR1Au5" usesdiagramfillcolor="0" fillcolor="#ffff00" linecolor="#ff0000" seqnum="" totalcounta="2" xmi.id="YZD89kjpDlXp" widgetbid="Ln1wV99qM200" totalcountb="2" type="519" textcolor="#000000" usefillcolor="1" linewidth="0" font="Sans Serif,9,-1,0,50,0,0,0,0,0">
+ <linepath layout="Polyline">
+ <startpoint startx="-216" starty="-245"/>
+ <endpoint endx="-286" endy="-377"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-301" showstereotype="1" y="-305" text="holds" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="9jICsh1rcjho" pretext="" role="703" width="39" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="8Iiy3mo8p34z" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-235,5" showstereotype="1" y="-252,5" text="*" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="N0W2qKMz3dBv" pretext="" role="701" width="14" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="KCkvtPh1iOxl" height="17"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" textcolor="none" usesdiagramusefillcolor="1" x="-286" showstereotype="1" y="-357" text="*" font="Sans Serif,9,-1,0,50,0,0,0,0,0" localid="Ajrzlvw6uS9k" pretext="" role="702" width="14" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="kTjn6thP5RIx" height="17"/>
+ </assocwidget>
+ </associations>
+ </diagram>
+ </diagrams>
+ </XMI.extension>
+ </UML:Model>
+ </UML:Namespace.ownedElement>
+ </UML:Model>
+ </XMI.content>
+ <XMI.extensions xmi.extender="umbrello">
+ <docsettings viewid="enYrLpp253OJ" uniqueid="GJLOp4t43d4D" documentation=""/>
+ <listview>
+ <listitem open="1" type="800" id="Views">
+ <listitem open="1" type="821" id="Component View"/>
+ <listitem open="1" type="827" id="Deployment View"/>
+ <listitem open="1" type="836" id="Entity Relationship Model">
+ <listitem open="0" type="832" id="Ln1wV99qM200">
+ <listitem open="0" type="833" id="M3r6Np4xWgwB"/>
+ <listitem open="0" type="833" id="FYpeQERkFJpc"/>
+ <listitem open="0" type="833" id="8tYfXUomAwdD"/>
+ </listitem>
+ <listitem open="0" type="832" id="KEvAg9c4E7EG">
+ <listitem open="0" type="833" id="o1loviuZOsOp"/>
+ <listitem open="0" type="833" id="gixrRUf4mLy0"/>
+ <listitem open="0" type="833" id="ajbyeboxeNGw"/>
+ </listitem>
+ <listitem open="0" type="832" id="83BZ5WGQKHMp">
+ <listitem open="0" type="833" id="929laCK2L5ha"/>
+ <listitem open="0" type="833" id="iXX2fNksjiJn"/>
+ </listitem>
+ <listitem open="0" type="832" id="JIqo3AwR1Au5">
+ <listitem open="0" type="833" id="liIuP4UHHmPl"/>
+ <listitem open="0" type="833" id="k3Guyu5FH7rB"/>
+ <listitem open="0" type="833" id="uDIAW7kcyIFW"/>
+ <listitem open="0" type="833" id="HP2cwft9BglZ"/>
+ </listitem>
+ <listitem open="0" type="834" id="cKrvIJSKdk8D" label="Entity Relationship Diagram"/>
+ <listitem open="0" type="832" id="xcEpd5al6jIB">
+ <listitem open="0" type="833" id="S9nhEdszLAsi"/>
+ <listitem open="0" type="833" id="rANpSbJBca5a"/>
+ <listitem open="0" type="833" id="CM0T6NCvXYky"/>
+ </listitem>
+ </listitem>
+ <listitem open="1" type="801" id="Logical View">
+ <listitem open="0" type="809" id="PqT85MdOivNY" label="Activity Diagram"/>
+ <listitem open="1" type="813" id="T4ZTpjTSvNOX"/>
+ <listitem open="0" type="807" id="uFddb9czKqlQ" label="Class Diagram"/>
+ <listitem open="0" type="806" id="KgB3KDwvV78c" label="Collaboration Diagram"/>
+ <listitem open="0" type="830" id="Datatypes">
+ <listitem open="1" type="829" id="YLyt9iHXHKHm"/>
+ <listitem open="1" type="829" id="JziKFBo7OPkz"/>
+ <listitem open="1" type="829" id="MBvkZei7xe04"/>
+ <listitem open="1" type="829" id="zvh8ldV3cDNq"/>
+ <listitem open="1" type="829" id="QZ5jXegw9qyP"/>
+ <listitem open="1" type="829" id="e8YGLv4g50Oc"/>
+ <listitem open="1" type="829" id="KFbZasMZn1fX"/>
+ <listitem open="1" type="829" id="tb0pnbKqWPhS"/>
+ <listitem open="0" type="829" id="yFqmcKvEV5AN"/>
+ <listitem open="1" type="829" id="c6jZjid3xEdX"/>
+ <listitem open="1" type="829" id="nrpqpBSRGB0z"/>
+ <listitem open="1" type="829" id="5x4qwhLapto9"/>
+ </listitem>
+ <listitem open="1" type="813" id="tRZIivSqKiJe"/>
+ <listitem open="0" type="813" id="AxibzvtOee4v">
+ <listitem open="0" type="814" id="cLvTHUVkZ4BM"/>
+ <listitem open="0" type="815" id="nepgzBEYJRhX"/>
+ <listitem open="0" type="815" id="JPzCkp7M80pQ"/>
+ </listitem>
+ <listitem open="0" type="813" id="4KyXIGwvRJNA">
+ <listitem open="0" type="815" id="c6Dqx3h0OfXe"/>
+ <listitem open="0" type="815" id="8RGTKuC7z3Xx"/>
+ </listitem>
+ <listitem open="1" type="813" id="6Wib4RZBTgw1"/>
+ <listitem open="0" type="813" id="ijSdYPw9Myur">
+ <listitem open="0" type="814" id="WJUCvitzocUd"/>
+ <listitem open="0" type="815" id="IfJcdBU9UyJP"/>
+ <listitem open="0" type="815" id="NWrYQuT7etkA"/>
+ </listitem>
+ <listitem open="0" type="813" id="ZMDidgcnaKHD">
+ <listitem open="0" type="815" id="JNOnC6nEJxZA"/>
+ </listitem>
+ <listitem open="0" type="813" id="3QH0wDM782i6"/>
+ <listitem open="0" type="813" id="QjniIhPONaeL">
+ <listitem open="0" type="815" id="RZJhKesQk3qn"/>
+ </listitem>
+ <listitem open="0" type="813" id="R1DjuUbGCpwS">
+ <listitem open="0" type="815" id="8iAbTZhvYucQ"/>
+ <listitem open="0" type="815" id="f3ZayCRtCDpe"/>
+ </listitem>
+ <listitem open="0" type="813" id="aWjZXEU9JfzG">
+ <listitem open="0" type="815" id="jeE5HjjBBHTt"/>
+ </listitem>
+ <listitem open="0" type="810" id="mMOZQezNS4FI" label="Sequence Diagram"/>
+ <listitem open="1" type="813" id="fCwweCnhc4fY"/>
+ <listitem open="0" type="808" id="620uup3hgqXV" label="State Diagram"/>
+ <listitem open="1" type="813" id="Fi8r5MnrLXdG"/>
+ <listitem open="0" type="813" id="3BjozMqWi3FJ">
+ <listitem open="0" type="814" id="x15FwePzn8nm"/>
+ <listitem open="0" type="814" id="6Xusegc8HtHu"/>
+ <listitem open="0" type="814" id="jp6I7LVQitDs"/>
+ <listitem open="0" type="814" id="s7qYy2Pv1SAx"/>
+ <listitem open="0" type="814" id="UbHAeWTMJXeQ"/>
+ <listitem open="0" type="815" id="x2mySxtYSnO6"/>
+ <listitem open="0" type="815" id="NkEgGq66xvdt"/>
+ </listitem>
+ <listitem open="1" type="813" id="5YzzZNhAJcZZ"/>
+ <listitem open="1" type="813" id="bJjbqHckLheW"/>
+ <listitem open="1" type="813" id="qRiTtOs5RVSn">
+ <listitem open="0" type="815" id="nYVOVCoez8Ws"/>
+ </listitem>
+ <listitem open="1" type="813" id="E3ePM6RoJ4ls">
+ <listitem open="0" type="815" id="cwf3Zhrqa4oV"/>
+ </listitem>
+ </listitem>
+ <listitem open="1" type="802" id="Use Case View">
+ <listitem open="1" type="812" id="wZSuFNWqJ3gM"/>
+ <listitem open="1" type="812" id="ngbB2uTyRutf"/>
+ <listitem open="1" type="812" id="bwXs5BPXMq5U"/>
+ <listitem open="1" type="811" id="rYPubnB3nrEM"/>
+ <listitem open="1" type="811" id="SATYACxzkMuK"/>
+ <listitem open="1" type="811" id="S0gDbRC8UHSG"/>
+ <listitem open="0" type="805" id="enYrLpp253OJ" label="Use Case Diagram"/>
+ </listitem>
+ </listitem>
+ </listview>
+ <codegeneration>
+ <codegenerator language="C++"/>
+ </codegeneration>
+ </XMI.extensions>
+</XMI>
diff --git a/lib/cppparser/lexer.cpp b/lib/cppparser/lexer.cpp
index a6b7e01..1bfec21 100644
--- a/lib/cppparser/lexer.cpp
+++ b/lib/cppparser/lexer.cpp
@@ -112,6 +112,7 @@ Lexer::Lexer(Driver* driver)
m_recordWhiteSpaces(false),
m_skipWordsEnabled(true),
m_preprocessorEnabled(true),
+ m_inPreproc(false),
m_reportWarnings(false),
m_reportMessages(false)
{
diff --git a/lib/cppparser/macro.h b/lib/cppparser/macro.h
index b7a3348..eac1271 100644
--- a/lib/cppparser/macro.h
+++ b/lib/cppparser/macro.h
@@ -128,8 +128,28 @@ public:
typedef QString Argument;
public:
- Macro(bool hasArguments = false) : m_idHashValid(false), m_valueHashValid(false), m_line(0), m_column(0), m_hasArguments(hasArguments), m_isUndefMacro(false) {}
- Macro(const QString &n, const QString &b) : m_idHashValid(false), m_valueHashValid(false), m_name(n), m_line(0), m_column(0), m_body(b), m_hasArguments(false), m_isUndefMacro(false) {}
+ Macro(bool hasArguments = false)
+ : m_idHashValid(false),
+ m_valueHashValid(false),
+ m_idHash(0),
+ m_valueHash(0),
+ m_line(0),
+ m_column(0),
+ m_hasArguments(hasArguments),
+ m_isUndefMacro(false)
+ {}
+ Macro(const QString &n, const QString &b)
+ : m_idHashValid(false),
+ m_valueHashValid(false),
+ m_idHash(0),
+ m_valueHash(0),
+ m_name(n),
+ m_line(0),
+ m_column(0),
+ m_body(b),
+ m_hasArguments(false),
+ m_isUndefMacro(false)
+ {}
//Sorts the macros by their hash-value, then by their name.
class NameArgCompare {
@@ -205,13 +225,19 @@ public:
};
Macro(const Macro& source)
- : m_idHashValid(source.m_idHashValid), m_valueHashValid(source.m_valueHashValid), m_idHash(source.m_idHash), m_valueHash(source.m_valueHash), m_name(source.m_name),
+ : m_idHashValid(source.m_idHashValid),
+ m_valueHashValid(source.m_valueHashValid),
+ m_idHash(source.m_idHash),
+ m_valueHash(source.m_valueHash),
+ m_name(source.m_name),
m_fileName(source.m_fileName),
m_line(source.m_line),
m_column(source.m_column),
m_body(source.m_body),
m_hasArguments(source.m_hasArguments),
- m_argumentList(source.m_argumentList), m_isUndefMacro(source.m_isUndefMacro) {}
+ m_argumentList(source.m_argumentList),
+ m_isUndefMacro(source.m_isUndefMacro)
+ {}
Macro& operator = (const Macro& source)
{
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
new file mode 100644
index 0000000..db15232
--- /dev/null
+++ b/tools/CMakeLists.txt
@@ -0,0 +1,19 @@
+
+set(po2xmi_SRCS po2xmi.cpp shared.cpp)
+
+kde4_add_executable(po2xmi ${po2xmi_SRCS})
+
+target_link_libraries(po2xmi ${QT_QTXML_LIBRARY} ${QT_QTCORE_LIBRARY})
+
+install(TARGETS po2xmi ${INSTALL_TARGETS_DEFAULT_ARGS})
+
+
+set(xmi2pot_SRCS xmi2pot.cpp shared.cpp)
+
+kde4_add_executable(xmi2pot ${xmi2pot_SRCS})
+
+target_link_libraries(xmi2pot ${QT_QTXML_LIBRARY} ${QT_QTCORE_LIBRARY})
+
+install(TARGETS xmi2pot ${INSTALL_TARGETS_DEFAULT_ARGS})
+
+
diff --git a/tools/po2xmi.cpp b/tools/po2xmi.cpp
new file mode 100644
index 0000000..69f4b8f
--- /dev/null
+++ b/tools/po2xmi.cpp
@@ -0,0 +1,42 @@
+/***************************************************************************
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2014 *
+ * Umbrello UML Modeller Authors <[email protected]> *
+ * *
+ * @author Ralf Habacker <[email protected]> *
+ * *
+***************************************************************************/
+
+#include "shared.h"
+
+#include <stdlib.h>
+#include <iostream>
+#include <assert.h>
+
+#include <fstream>
+
+#include <QList>
+#include <QTextStream>
+#include <QXmlStreamReader>
+
+using namespace std;
+
+int main( int argc, char **argv )
+{
+ if (argc != 3) {
+ qWarning("usage: %s english-XML translated-PO", argv[0]);
+ ::exit(1);
+ }
+
+ TranslationMap translationMap;
+ if (!fetchPoFile(argv[2], translationMap)) {
+ cerr << "failed to fetch po file: '" << argv[2] << "'" << endl;
+ exit(2);
+ }
+
+ return applyTranslationToXMIFile(argv[1], XMILanguagesAttributes(), translationMap) ? 0 : 2;
+}
diff --git a/tools/shared.cpp b/tools/shared.cpp
new file mode 100644
index 0000000..7054d0d
--- /dev/null
+++ b/tools/shared.cpp
@@ -0,0 +1,313 @@
+/***************************************************************************
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2014 *
+ * Umbrello UML Modeller Authors <[email protected]> *
+ * *
+ * @author Ralf Habacker <[email protected]> *
+ * *
+ ***************************************************************************/
+
+#include "shared.h"
+
+#include <iostream>
+
+#include <QFile>
+#include <QStringList>
+#include <QTextStream>
+#include <QXmlStreamReader>
+#include <QtDebug>
+
+QDebug operator <<(QDebug out, const QXmlStreamAttribute &a)
+{
+ out << "QXmlStreamAttribute("
+ << "prefix:" << a.prefix().toString()
+ << "namespaceuri:" << a.namespaceUri().toString()
+ << "name:" << a.name().toString()
+ << " value:" << a.value().toString()
+ << ")";
+ return out;
+}
+
+using namespace std;
+
+/**
+ * Return list of xmi file attributes containing language information.
+ *
+ * @return list of xmi element attributes
+ */
+QStringList XMILanguagesAttributes()
+{
+ return QStringList() << "comment" << "documentation"
+ << "label" << "name"
+ << "pretext" << "posttext" << "text"
+ << "statename" << "activityname" << "instancename";
+}
+
+/**
+ * Extract language related XML attributs from XMI file
+
+ * @param fileName file to extract attributes from
+ * @param attributes List with attribute names to extract
+ * @param result map with extracted results
+ * @return true successful extraction
+ * @return false extraction failure
+ */
+bool extractAttributesFromXMI(const char *fileName, const QStringList &attributes, POMap &result)
+{
+ QFile file(fileName);
+ QXmlStreamReader xmlReader;
+
+ if(!file.open(QIODevice::ReadOnly))
+ return false;
+
+ xmlReader.setDevice(&file);
+ while (!xmlReader.atEnd()) {
+ QXmlStreamReader::TokenType type = xmlReader.readNext();
+ if (!type == QXmlStreamReader::StartElement)
+ continue;
+
+ foreach(const QString &attributeName, attributes) {
+ if (!xmlReader.attributes().hasAttribute(attributeName))
+ continue;
+
+ QString value = xmlReader.attributes().value(attributeName).toString();
+ if (value.isEmpty())
+ continue;
+
+ QString tagName = xmlReader.name().toString() + ':' + attributeName;
+ QString key = value;
+ if (result.contains(key)) {
+ result[key].lineNumbers.append(xmlReader.lineNumber());
+ result[key].tagNames.append(tagName);
+ } else {
+ POEntry entry;
+ entry.tagNames.append(tagName);
+ entry.value = value;
+ entry.lineNumbers.append(xmlReader.lineNumber());
+ result[key] = entry;
+ }
+ }
+ }
+ if (xmlReader.hasError()) {
+ std::cerr << "Parsing failed." << std::endl;
+ return false;
+ }
+ return true;
+}
+
+QString fromGetTextString(QString s)
+{
+ s.replace("\\n", "\n");
+ s.replace("\\\"", "\"");
+ return s;
+}
+
+QString toXMLCharacterEntities(QString s)
+{
+ s.replace("\\n", "&#xa");
+ s.replace("\\\"", "&qout;");
+ s.replace('&', "&amp;");
+ s.replace('<', "&lt;");
+ s.replace('>', "&gt;");
+ return s;
+}
+
+QString escape(QString s)
+{
+ s.replace(QRegExp("\\\\"), "\\\\");
+ s.replace(QRegExp("\""), "\\\"");
+ return s;
+}
+
+QString toGetTextString(const QString &message)
+{
+ QStringList list = message.split('\n');
+ QString line;
+ QString result;
+
+ if (list.count() == 1) {
+ line = list.first();
+ if (line.isEmpty())
+ result += " \"\"\n";
+ else
+ result +=" \"" + escape(line) + "\"\n";
+ } else {
+ result += " \"\"\n";
+ QStringList::ConstIterator last = list.constEnd();
+ if (!list.isEmpty())
+ --last;
+ for (QStringList::ConstIterator it = list.constBegin(); it != list.constEnd(); ++it) {
+ line = *it;
+ if (!line.isEmpty()) {
+ result += " \"" + escape(line);
+ if (it == last)
+ result += "\"\n";
+ else
+ result += "\\n\"\n";
+ } else {
+ result += " \"";
+ if (it != last)
+ result += "\\n";
+ result += "\"\n";
+ }
+ }
+ }
+ return result;
+}
+
+/**
+ * Fetch Pot file.
+ *
+ * @param fileName file to parse
+ * @param map returned map with parsed items
+ * @return true parsed successfully
+ * @return false parse failure
+ */
+bool fetchPoFile(const QString &fileName, TranslationMap &map)
+{
+ QFile file(fileName);
+
+ if(!file.open(QIODevice::ReadOnly))
+ return false;
+
+ QTextStream in(&file);
+ in.setCodec("UTF-8");
+ QString key, value;
+ bool multiLineID = false;
+ bool multiLineValue = false;
+ while (!in.atEnd()) {
+ QString line = in.readLine();
+ // handle multilines
+ if (line.startsWith(QLatin1String("msgid"))) {
+ key = line.mid(7,line.length()-7-1);
+ if (key.isEmpty())
+ multiLineID = true;
+ } else if (line.startsWith(QLatin1String("msgstr"))) {
+ value = line.mid(8, line.length()-8-1);
+ if (multiLineID && !key.isEmpty() && value.isEmpty())
+ multiLineValue = true;
+ else
+ map[fromGetTextString(key)] = fromGetTextString(value);
+ } else if (multiLineID) {
+ QString s = line.trimmed();
+ if (s.isEmpty() || s[0] != '\"')
+ multiLineID = false;
+ else
+ key += s.mid(1,s.length()-1);
+ } else if (multiLineValue) {
+ QString s = line.trimmed();
+ if (s.isEmpty() || s[0] != '\"') {
+ multiLineValue = false;
+ multiLineID = false;
+ map[fromGetTextString(key)] = fromGetTextString(value);
+ }
+ else
+ value += s.mid(1,s.length()-1);
+ }
+ }
+ return true;
+}
+
+bool applyTranslationToXMIFile(const char *fileName, const QStringList &attributes, TranslationMap &translations)
+{
+
+ QFile file(fileName);
+ if (!file.open(QIODevice::ReadOnly))
+ return false;
+ QXmlStreamReader reader(&file);
+ QFile outFile;
+ if (!outFile.open(stdout, QIODevice::WriteOnly))
+ return false;
+ QXmlStreamWriter writer(&outFile);
+ writer.setAutoFormatting (true);
+ writer.setAutoFormattingIndent(1);
+ writer.setCodec(reader.documentEncoding().toAscii().constData());
+
+ while (!reader.atEnd())
+ {
+ QXmlStreamReader::TokenType type = reader.readNext();
+ switch(type)
+ {
+ case QXmlStreamReader::ProcessingInstruction:
+ writer.writeProcessingInstruction(reader.processingInstructionTarget().toString(), reader.processingInstructionData().toString());
+ break;
+
+ case QXmlStreamReader::DTD:
+ writer.writeDTD(reader.text().toString());
+ break;
+
+ case QXmlStreamReader::StartDocument:
+ writer.writeStartDocument(reader.documentVersion().toString());
+ break;
+
+ case QXmlStreamReader::StartElement:
+ {
+ writer.writeStartElement(reader.namespaceUri().toString(), reader.name().toString());
+ if (reader.namespaceDeclarations().size() > 0)
+ {
+ QXmlStreamNamespaceDeclaration ns = reader.namespaceDeclarations().first();
+ writer.writeNamespace(ns.namespaceUri().toString(), ns.prefix().toString());
+ }
+ QXmlStreamAttributes writerAttributes;
+ for(int index = 0; index < reader.attributes().size(); index++)
+ {
+ QXmlStreamAttribute attr = reader.attributes()[index];
+ QString name = attr.qualifiedName().toString();
+ if (!attributes.contains(name)) {
+ writerAttributes.append(attr);
+ continue;
+ }
+ QString value = attr.value().toString();
+ if (value.isEmpty()) {
+ writerAttributes.append(attr);
+ continue;
+ }
+ if (!translations.contains(value))
+ {
+ cerr << "could not find translation for attribute '" << qPrintable(name) << "':'" << qPrintable(value) << "'" << std::endl;
+ continue;
+ }
+ QString newValue = translations[value];
+ if (newValue.isEmpty()) {
+ writerAttributes.append(attr);
+ continue;
+ }
+ //cerr << name.toUtf8().data() << ":" << value.toUtf8().data() << "->" << newValue.toUtf8().data() << endl;
+ QXmlStreamAttribute newAttribute(name, newValue);
+ writerAttributes.append(newAttribute);
+ //qDebug() << writerAttributes;
+ }
+ writer.writeAttributes(writerAttributes);
+ //QString content = xmlReader.readElementText(QXmlStreamReader::SkipChildElements);
+ //writer.writeCharacters(content);
+ break;
+ }
+
+ case QXmlStreamReader::Characters:
+ writer.writeCharacters(reader.text().toString());
+ break;
+
+ case QXmlStreamReader::Comment:
+ writer.writeComment(reader.text().toString());
+ break;
+
+ case QXmlStreamReader::EndElement:
+ writer.writeEndElement();
+ break;
+
+ case QXmlStreamReader::EndDocument:
+ writer.writeEndDocument();
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ outFile.close();
+ return true;
+}
diff --git a/tools/shared.h b/tools/shared.h
new file mode 100644
index 0000000..d7095bc
--- /dev/null
+++ b/tools/shared.h
@@ -0,0 +1,43 @@
+/***************************************************************************
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2014 *
+ * Umbrello UML Modeller Authors <[email protected]> *
+ * *
+ * @author Ralf Habacker <[email protected]> *
+ * *
+ ***************************************************************************/
+
+#ifndef SHARED_H
+#define SHARED_H
+
+#include <QString>
+#include <QStringList>
+#include <QMap>
+
+QStringList XMILanguagesAttributes();
+
+class POEntry {
+public:
+ QStringList tagNames;
+ QString value;
+ QList<int> lineNumbers;
+};
+
+typedef QMap<QString, POEntry> POMap;
+
+
+bool extractAttributesFromXMI(const char *fileName, const QStringList &attributes, POMap &result);
+
+QString toGetTextString(const QString &message);
+
+typedef QMap<QString,QString> TranslationMap;
+
+bool fetchPoFile(const QString &fileName, TranslationMap &map);
+
+bool applyTranslationToXMIFile(const char *fileName, const QStringList &attributes, TranslationMap &translations);
+
+#endif
diff --git a/tools/xmi2pot.cpp b/tools/xmi2pot.cpp
new file mode 100644
index 0000000..c98701c
--- /dev/null
+++ b/tools/xmi2pot.cpp
@@ -0,0 +1,82 @@
+/***************************************************************************
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2014 *
+ * Umbrello UML Modeller Authors <[email protected]> *
+ * *
+ * @author Ralf Habacker <[email protected]> *
+ * *
+ ***************************************************************************/
+
+#include <stdlib.h>
+#include <iostream>
+#include <qfileinfo.h>
+#include <qdatetime.h>
+
+#include <QStringList>
+#include <QXmlStreamReader>
+
+#include "shared.h"
+
+using namespace std;
+
+void outputMsg(const char *prefix, const QString &message);
+
+int main( int argc, char **argv )
+{
+ if (argc != 2) {
+ cerr << "usage: " << argv[0] << " english-XMI" << endl;
+ exit(1);
+ }
+
+ POMap map;
+ if (!extractAttributesFromXMI(argv[1], XMILanguagesAttributes(), map)) {
+ cerr << "failed to extract attributes from: '" << argv[1] << "'" << endl;
+ exit(2);
+ }
+
+ const QDateTime now = QDateTime::currentDateTime().toUTC();
+
+ cout << "# SOME DESCRIPTIVE TITLE.\n";
+ cout << "# FIRST AUTHOR <[email protected]>, YEAR.\n";
+ cout << "#\n";
+ cout << "#, fuzzy\n";
+ cout << "msgid \"\"\n";
+ cout << "msgstr \"\"\n";
+ cout << "\"Project-Id-Version: PACKAGE VERSION\\n\"\n";
+ cout << "\"Report-Msgid-Bugs-To: http://bugs.kde.org\\n\"\n";
+ cout << "\"POT-Creation-Date: " << now.toString("yyyy-MM-dd hh:mm").toUtf8().data() << "+0000\\n\"\n";
+ cout << "\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n";
+ cout << "\"Last-Translator: FULL NAME <[email protected]>\\n\"\n";
+ cout << "\"Language-Team: LANGUAGE <[email protected]>\\n\"\n";
+ cout << "\"MIME-Version: 1.0\\n\"\n";
+ cout << "\"Content-Type: text/plain; charset=UTF-8\\n\"\n";
+ cout << "\"Content-Transfer-Encoding: 8bit\\n\"\n";
+ cout << "\n";
+
+ const QString fname = QFileInfo(argv[1]).fileName();
+
+ for (POMap::ConstIterator it = map.constBegin(); it != map.constEnd(); ++it)
+ {
+ cout << "#. Tag: " << (*it).tagNames.join(" ").toUtf8().data() << endl;
+ cout << "#: ";
+ for (QList<int>::ConstIterator it2 =
+ (*it).lineNumbers.constBegin(); it2 != (*it).lineNumbers.constEnd(); ++it2) {
+ if (it2 != (*it).lineNumbers.constBegin())
+ cout << " ";
+ cout << fname.toUtf8().data() << ":" << (*it2);
+
+ }
+ cout << "\n";
+ cout << "#, no-c-format\n";
+ cout << "msgid" << toGetTextString((*it).value).toUtf8().data();
+ cout << "msgstr \"\"\n";
+ cout << "\n";
+ }
+
+ return 0;
+}
+
diff --git a/umbrello/clipboard/umlclipboard.cpp b/umbrello/clipboard/umlclipboard.cpp
index e0835df..36bde33 100644
--- a/umbrello/clipboard/umlclipboard.cpp
+++ b/umbrello/clipboard/umlclipboard.cpp
@@ -161,7 +161,7 @@ QMimeData* UMLClipboard::copy(bool fromView/*=false*/)
if (png) {
UMLView *view = UMLApp::app()->currentView();
data = new UMLDragData(m_ObjectList, m_WidgetList,
- m_AssociationList, *png, view->umlScene()->type());
+ m_AssociationList, *png, view->umlScene());
} else {
return 0;
}
diff --git a/umbrello/clipboard/umldragdata.cpp b/umbrello/clipboard/umldragdata.cpp
index 55adda4..aa949a3 100644
--- a/umbrello/clipboard/umldragdata.cpp
+++ b/umbrello/clipboard/umldragdata.cpp
@@ -16,6 +16,7 @@
#include "classifier.h"
#include "cmds.h"
#include "debug_utils.h"
+#include "floatingtextwidget.h"
#include "folder.h"
#include "idchangelog.h"
#include "model_utils.h"
@@ -77,11 +78,11 @@ UMLDragData::UMLDragData(UMLListViewItemList& umlListViewItems,
* "application/x-uml-clip4
*/
UMLDragData::UMLDragData(UMLObjectList& objects,
- UMLWidgetList& widgets, AssociationWidgetList& associationDatas,
- QPixmap& pngImage, Uml::DiagramType::Enum dType, QWidget* dragSource /* = 0 */)
+ UMLWidgetList& widgets, AssociationWidgetList& associationDatas,
+ QPixmap& pngImage, UMLScene* scene, QWidget* dragSource /* = 0 */)
{
Q_UNUSED(dragSource);
- setUMLDataClip4(objects, widgets, associationDatas, pngImage, dType);
+ setUMLDataClip4(objects, widgets, associationDatas, pngImage, scene);
}
/**
@@ -189,11 +190,12 @@ void UMLDragData::setUMLDataClip3(UMLListViewItemList& umlListViewItems)
* its respective ListView Items
*/
void UMLDragData::setUMLDataClip4(UMLObjectList& objects, UMLWidgetList& widgets, AssociationWidgetList& associations,
- QPixmap& pngImage, Uml::DiagramType::Enum dType)
+ QPixmap& pngImage, UMLScene *scene)
{
QDomDocument domDoc;
QDomElement xmiclip = domDoc.createElement(QLatin1String("xmiclip"));
- xmiclip.setAttribute(QLatin1String("diagramtype"), dType);
+ xmiclip.setAttribute(QLatin1String("diagramtype"), scene->type());
+ xmiclip.setAttribute(QLatin1String("diagramid"), Uml::ID::toString(scene->ID()));
domDoc.appendChild(xmiclip);
QDomElement objectsTag = domDoc.createElement(QLatin1String("umlobjects"));
xmiclip.appendChild(objectsTag);
@@ -517,6 +519,15 @@ bool UMLDragData::decodeClip4(const QMimeData* mimeData, UMLObjectList& objects,
return false;
}
+ UMLDoc *doc = UMLApp::app()->document();
+ UMLView *view = UMLApp::app()->currentView();
+ UMLScene *scene = view->umlScene();
+
+ QString sourceDiagramID = root.attribute(QLatin1String("diagramid"), QLatin1String(""));
+ UMLView *sourceView = doc->findView(Uml::ID::fromString(sourceDiagramID));
+
+ bool pasteToDiagramCopiedFrom = sourceView && sourceView->umlScene()->ID() == scene->ID();
+
// Load widgets
QDomNode widgetsNode = objectsNode.nextSibling();
QDomNode widgetNode = widgetsNode.firstChild();
@@ -526,20 +537,28 @@ bool UMLDragData::decodeClip4(const QMimeData* mimeData, UMLObjectList& objects,
return false;
}
- UMLDoc *doc = UMLApp::app()->document();
- UMLView *view = UMLApp::app()->currentView();
- UMLScene *scene = view->umlScene();
-
while (!widgetElement.isNull()) {
UMLWidget* widget = scene->loadWidgetFromXMI(widgetElement);
if (widget) {
+ if (pasteToDiagramCopiedFrom && widget->baseType() == WidgetBase::wt_Object) {
+ delete widget;
+ widgetNode = widgetNode.nextSibling();
+ widgetElement = widgetNode.toElement();
+ continue;
+ }
+
// Generate a new unique 'local ID' so a second widget for the same
// UMLObject can be distinguished from the first widget
- widget->setLocalID(
- doc->assignNewID(widget->localID())
- );
+ widget->setLocalID(doc->assignNewID(widget->localID()));
+ if (widget->baseType() == WidgetBase::wt_Message) {
+ MessageWidget *w = static_cast<MessageWidget*>(widget);
+ if (w && w->floatingTextWidget()) {
+ w->floatingTextWidget()->setLocalID(doc->assignNewID(w->floatingTextWidget()->localID()));
+ w->floatingTextWidget()->setID(doc->assignNewID(w->floatingTextWidget()->id()));
+ }
+ }
// Add the widget to the UMLWidgetList for reference in
// UMLClipboard
widgets.append(widget);
@@ -555,15 +574,17 @@ bool UMLDragData::decodeClip4(const QMimeData* mimeData, UMLObjectList& objects,
// Make sure all object widgets are loaded before adding messages or
// preconditions
- foreach (UMLWidget* widget, widgets) {
- if (widget->baseType() == WidgetBase::wt_Object) {
- executeCreateWidgetCommand(widget);
+ if (!pasteToDiagramCopiedFrom) {
+ foreach (UMLWidget* widget, widgets) {
+ if (widget->baseType() == WidgetBase::wt_Object) {
+ executeCreateWidgetCommand(widget);
+ }
}
}
// Now add all remaining widgets
foreach (UMLWidget* widget, widgets) {
- if (widget->baseType() == WidgetBase::wt_Message) {
+ if (!pasteToDiagramCopiedFrom && widget->baseType() == WidgetBase::wt_Message) {
MessageWidget* message = dynamic_cast<MessageWidget*>(widget);
message->resolveObjectWidget(log);
}
diff --git a/umbrello/clipboard/umldragdata.h b/umbrello/clipboard/umldragdata.h
index 8fdab1e..fc5e515 100644
--- a/umbrello/clipboard/umldragdata.h
+++ b/umbrello/clipboard/umldragdata.h
@@ -24,6 +24,7 @@
class UMLClassifier;
class UMLListView;
+class UMLScene;
class QPixmap;
/**
@@ -45,7 +46,7 @@ public:
explicit UMLDragData(UMLListViewItemList& UMLListViewItems, QWidget* dragSource = 0);
UMLDragData(UMLObjectList& Objects, UMLWidgetList& Widgets, AssociationWidgetList& Associations,
- QPixmap& PngImage, Uml::DiagramType::Enum dType, QWidget* dragSource = 0);
+ QPixmap& PngImage, UMLScene *scene, QWidget* dragSource = 0);
UMLDragData(UMLObjectList& Objects, int, QWidget* dragSource = 0);
@@ -92,7 +93,7 @@ public:
void setUMLDataClip4(UMLObjectList& Objects,
UMLWidgetList& WidgetDatas,
AssociationWidgetList& Associations, QPixmap& PngImage,
- Uml::DiagramType::Enum dType);
+ UMLScene *scene);
void setUMLDataClip5(UMLObjectList& Objects);
diff --git a/umbrello/codegenerators/as/aswriter.h b/umbrello/codegenerators/as/aswriter.h
index 9561c27..8287006 100644
--- a/umbrello/codegenerators/as/aswriter.h
+++ b/umbrello/codegenerators/as/aswriter.h
@@ -37,12 +37,6 @@ public:
virtual QStringList reservedKeywords() const;
private:
-
- /**
- * We do not want to write the comment "Private methods" twice.
- */
- bool bPrivateSectionCommentIsWritten;
-
void writeOperations(QString classname, UMLOperationList *opList, QTextStream &as);
void writeAssociation(QString& classname, UMLAssociationList& assoclist, QTextStream &as);
diff --git a/umbrello/codegenerators/codeblockwithcomments.cpp b/umbrello/codegenerators/codeblockwithcomments.cpp
index 34e5360..0990494 100644
--- a/umbrello/codegenerators/codeblockwithcomments.cpp
+++ b/umbrello/codegenerators/codeblockwithcomments.cpp
@@ -30,6 +30,7 @@ CodeBlockWithComments::CodeBlockWithComments (CodeDocument * parent, const QStri
CodeBlockWithComments::~CodeBlockWithComments ()
{
+ delete m_comment;
}
/**
diff --git a/umbrello/codegenerators/codegenobjectwithtextblocks.cpp b/umbrello/codegenerators/codegenobjectwithtextblocks.cpp
index b5073ea..6c12d84 100644
--- a/umbrello/codegenerators/codegenobjectwithtextblocks.cpp
+++ b/umbrello/codegenerators/codegenobjectwithtextblocks.cpp
@@ -59,13 +59,10 @@ bool CodeGenObjectWithTextBlocks::addTextBlock(TextBlock* add_object)
QString tag = add_object->getTag();
// assign a tag if one doesn't already exist
- if (tag.isEmpty())
- {
+ if (tag.isEmpty()) {
tag = getUniqueTag();
add_object->setTag(tag);
- }
- else
- {
+ } else {
// if it has a tag, check to see that it is not in some other parent object
// IF it is then we will need to remove it FIRST before adding to new parent
CodeDocument * parentDoc = add_object->getParentDocument();
@@ -101,8 +98,7 @@ bool CodeGenObjectWithTextBlocks::removeTextBlock (TextBlock * remove_object)
}
else {
// may be hiding in child hierarchical codeblock
- foreach (TextBlock* tb, m_textblockVector)
- {
+ foreach (TextBlock* tb, m_textblockVector) {
HierarchicalCodeBlock * hb = dynamic_cast<HierarchicalCodeBlock*>(tb);
if (hb && hb->removeTextBlock(remove_object))
return true;
@@ -149,11 +145,9 @@ CodeGenObjectWithTextBlocks * CodeGenObjectWithTextBlocks::findParentObjectForTa
if (tag.isEmpty())
return (CodeGenObjectWithTextBlocks*) NULL;
- if (!findTextBlockByTag(tag))
- {
+ if (!findTextBlockByTag(tag)) {
// may be hiding in child hierarchical codeblock
- foreach (TextBlock* tb, m_textblockVector)
- {
+ foreach (TextBlock* tb, m_textblockVector) {
HierarchicalCodeBlock * hb = dynamic_cast<HierarchicalCodeBlock*>(tb);
if (hb) {
CodeGenObjectWithTextBlocks* cgowtb = dynamic_cast<CodeGenObjectWithTextBlocks*>(hb);
@@ -189,11 +183,9 @@ HierarchicalCodeBlock * CodeGenObjectWithTextBlocks::getHierarchicalCodeBlock (c
codeBlock->setTag(tag);
codeBlock->setComment(CodeGenFactory::newCodeComment(m_pCodeDoc));
// don't write empty comments out
- if(comment.isEmpty())
+ if (comment.isEmpty())
codeBlock->getComment()->setWriteOutText(false);
-
- if(!addTextBlock(codeBlock))
- {
+ if (!addTextBlock(codeBlock)) {
delete codeBlock;
return (HierarchicalCodeBlock*) NULL;
}
@@ -223,10 +215,12 @@ CodeBlockWithComments * CodeGenObjectWithTextBlocks::getCodeBlockWithComments (c
codeBlock->setTag(tag);
codeBlock->setComment(CodeGenFactory::newCodeComment(m_pCodeDoc));
// don't write empty comments out
- if(comment.isEmpty())
+ if (comment.isEmpty())
codeBlock->getComment()->setWriteOutText(false);
- if(!addTextBlock(codeBlock))
+ if (!addTextBlock(codeBlock)) {
+ delete codeBlock;
return (CodeBlockWithComments*) NULL;
+ }
}
codeBlock->setOverallIndentationLevel (indentLevel);
codeBlock->getComment()->setText(comment);
@@ -249,12 +243,11 @@ CodeComment * CodeGenObjectWithTextBlocks::addOrUpdateTaggedCodeComment (const Q
CodeComment * codeComment = dynamic_cast<CodeComment*>(tBlock);
bool createdCodeComment = false;
- if(!codeComment) {
+ if (!codeComment) {
createdCodeComment = true;
codeComment = CodeGenFactory::newCodeComment(m_pCodeDoc);
codeComment->setTag(tag);
- if(!addTextBlock(codeComment))
- {
+ if (!addTextBlock(codeComment)) {
delete codeComment;
return 0; // hmm. total failure.., was there a preexisting comment with this tag?? lets return null
}
@@ -262,7 +255,7 @@ CodeComment * CodeGenObjectWithTextBlocks::addOrUpdateTaggedCodeComment (const Q
codeComment->setText(text);
if (createdCodeComment) {
- if(!text.isEmpty())
+ if (!text.isEmpty())
codeComment->setWriteOutText(true); // set to visible, if we created
else
codeComment->setWriteOutText(false); // set to not visible, if we created
@@ -294,22 +287,19 @@ CodeBlockWithComments * CodeGenObjectWithTextBlocks::addOrUpdateTaggedCodeBlockW
createdCodeBlock = true;
codeBlock = newCodeBlockWithComments();
codeBlock->setTag(tag);
- if(!addTextBlock(codeBlock))
- {
+ if (!addTextBlock(codeBlock)) {
delete codeBlock;
return 0; // hmm. total failure.., was there a preexisting codeblock with this tag?? lets return null
}
}
// ONLY update IF we are forcing the update of user blocks OR it is an "AutoGenerated" Block
- if (forceUserBlockUpdate || codeBlock->contentType() == CodeBlock::AutoGenerated)
- {
+ if (forceUserBlockUpdate || codeBlock->contentType() == CodeBlock::AutoGenerated) {
codeBlock->setText(text);
codeBlock->getComment()->setText(ctext);
// if we created this from scratch, make it write out only when the block isnt empty
- if (createdCodeBlock)
- {
+ if (createdCodeBlock) {
if (!ctext.isEmpty())
codeBlock->getComment()->setWriteOutText(true);
else
@@ -441,7 +431,7 @@ void CodeGenObjectWithTextBlocks::loadChildTextBlocksFromNode (QDomElement & roo
} else
loadCheckForChildrenOK = true;
- } else if(name == QLatin1String("codeblock")) {
+ } else if (name == QLatin1String("codeblock")) {
CodeBlock * block = newCodeBlock();
block->loadFromXMI(element);
if (!addTextBlock(block)) {
diff --git a/umbrello/codegenerators/codeoperation.h b/umbrello/codegenerators/codeoperation.h
index 2378a0d..ff3a958 100644
--- a/umbrello/codegenerators/codeoperation.h
+++ b/umbrello/codegenerators/codeoperation.h
@@ -59,8 +59,6 @@ protected:
virtual void setAttributesFromNode (QDomElement & element);
private:
-
- UMLOperation * m_parentOperation;
void init (UMLOperation * parentOp);
};
diff --git a/umbrello/codegenerators/csharp/csharpwriter.cpp b/umbrello/codegenerators/csharp/csharpwriter.cpp
index 0208dbf..8a15f1f 100644
--- a/umbrello/codegenerators/csharp/csharpwriter.cpp
+++ b/umbrello/codegenerators/csharp/csharpwriter.cpp
@@ -102,7 +102,8 @@ static const char *reserved_words[] = {
};
CSharpWriter::CSharpWriter()
- : SimpleCodeGenerator()
+ : SimpleCodeGenerator(),
+ m_unnamedRoles(0)
{
}
diff --git a/umbrello/codegenerators/java/javacodeclassfield.cpp b/umbrello/codegenerators/java/javacodeclassfield.cpp
index 53061b6..cc42268 100644
--- a/umbrello/codegenerators/java/javacodeclassfield.cpp
+++ b/umbrello/codegenerators/java/javacodeclassfield.cpp
@@ -67,7 +67,6 @@ QString JavaCodeClassField::getInitialValue()
uError() << "parent object is not a UMLAttribute";
return QString();
}
- return fixInitialStringDeclValue(at->getInitialValue(), getTypeName());
}
else
{
diff --git a/umbrello/codegenerators/java/javawriter.cpp b/umbrello/codegenerators/java/javawriter.cpp
index f3172e2..901da84 100644
--- a/umbrello/codegenerators/java/javawriter.cpp
+++ b/umbrello/codegenerators/java/javawriter.cpp
@@ -32,6 +32,7 @@
* Constructor, initialises a couple of variables.
*/
JavaWriter::JavaWriter()
+ : m_isInterface(false)
{
m_startline = m_endl + m_indentation;
}
diff --git a/umbrello/codegenerators/js/jswriter.h b/umbrello/codegenerators/js/jswriter.h
index 4560285..b88c139 100644
--- a/umbrello/codegenerators/js/jswriter.h
+++ b/umbrello/codegenerators/js/jswriter.h
@@ -37,9 +37,6 @@ public:
virtual QStringList reservedKeywords() const;
private:
-
- bool bPrivateSectionCommentIsWritten; ///< write the comment "Private methods" only once
-
void writeOperations(QString classname, UMLOperationList *opList, QTextStream &js);
void writeAssociation(QString& classname, UMLAssociationList& assoclist, QTextStream &js);
diff --git a/umbrello/codegenerators/perl/perlwriter.h b/umbrello/codegenerators/perl/perlwriter.h
index a57103d..4c0c8ad 100644
--- a/umbrello/codegenerators/perl/perlwriter.h
+++ b/umbrello/codegenerators/perl/perlwriter.h
@@ -41,13 +41,6 @@ public:
QStringList defaultDatatypes();
private:
-
- /**
- * We do not want to write the comment "Private methods" twice
- * not sure whether this is php specific.
- */
- bool bPrivateSectionCommentIsWritten;
-
void writeOperations(UMLClassifier *c, QTextStream &perl);
void writeOperations(const QString &classname, UMLOperationList &opList,
QTextStream &perl);
diff --git a/umbrello/codegenerators/php/php5writer.h b/umbrello/codegenerators/php/php5writer.h
index 6e3541b..0a6f3ec 100644
--- a/umbrello/codegenerators/php/php5writer.h
+++ b/umbrello/codegenerators/php/php5writer.h
@@ -36,9 +36,6 @@ public:
virtual QStringList reservedKeywords() const;
private:
-
- bool bPrivateSectionCommentIsWritten; ///< write the comment "Private methods" only once
-
void writeOperations(UMLClassifier *c, QTextStream &php);
void writeOperations(const QString &classname, UMLOperationList &opList,
QTextStream &php,
diff --git a/umbrello/codegenerators/php/phpwriter.h b/umbrello/codegenerators/php/phpwriter.h
index f2c7a68..ffd8361 100644
--- a/umbrello/codegenerators/php/phpwriter.h
+++ b/umbrello/codegenerators/php/phpwriter.h
@@ -35,9 +35,6 @@ public:
virtual QStringList reservedKeywords() const;
private:
-
- bool bPrivateSectionCommentIsWritten; ///< write the comment "Private methods" only once
-
void writeOperations(UMLClassifier *c, QTextStream &php);
void writeOperations(const QString& classname,
UMLOperationList &opList,
diff --git a/umbrello/codegenerators/sql/sqlwriter.cpp b/umbrello/codegenerators/sql/sqlwriter.cpp
index 49f3bf1..0b25b71 100644
--- a/umbrello/codegenerators/sql/sqlwriter.cpp
+++ b/umbrello/codegenerators/sql/sqlwriter.cpp
@@ -174,6 +174,7 @@ static const char *reserved_words[] = {
};
SQLWriter::SQLWriter()
+ : m_pEntity(0)
{
}
diff --git a/umbrello/codegenerators/vala/valawriter.cpp b/umbrello/codegenerators/vala/valawriter.cpp
index ac440c0..50c3837 100644
--- a/umbrello/codegenerators/vala/valawriter.cpp
+++ b/umbrello/codegenerators/vala/valawriter.cpp
@@ -109,7 +109,8 @@ static const char *reserved_words[] = {
* Constructor.
*/
ValaWriter::ValaWriter()
- : SimpleCodeGenerator()
+ : SimpleCodeGenerator(),
+ m_unnamedRoles(0)
{
}
diff --git a/umbrello/codeimport/kdevcppparser/cpptree2uml.cpp b/umbrello/codeimport/kdevcppparser/cpptree2uml.cpp
index 49cefb9..b9d1104 100644
--- a/umbrello/codeimport/kdevcppparser/cpptree2uml.cpp
+++ b/umbrello/codeimport/kdevcppparser/cpptree2uml.cpp
@@ -46,7 +46,7 @@ CppTree2Uml::~CppTree2Uml()
{
}
-void CppTree2Uml::parseTranslationUnit(const ParsedFile &file)
+void CppTree2Uml::clear()
{
m_currentScope.clear();
m_currentNamespace[0] = NULL; // index 0 is reserved (always NULL)
@@ -61,7 +61,11 @@ void CppTree2Uml::parseTranslationUnit(const ParsedFile &file)
m_inTypedef = false;
m_currentDeclarator = 0;
m_anon = 0;
+}
+void CppTree2Uml::parseTranslationUnit(const ParsedFile &file)
+{
+ clear();
Import_Utils::createArtifact(file.fileName(), 0, file->comment());
TreeParser::parseTranslationUnit(file);
diff --git a/umbrello/codeimport/kdevcppparser/cpptree2uml.h b/umbrello/codeimport/kdevcppparser/cpptree2uml.h
index 779b860..030ecd4 100644
--- a/umbrello/codeimport/kdevcppparser/cpptree2uml.h
+++ b/umbrello/codeimport/kdevcppparser/cpptree2uml.h
@@ -28,6 +28,7 @@ public:
explicit CppTree2Uml(const QString& fileName, CodeImpThread* thread = 0);
virtual ~CppTree2Uml();
+ void clear();
//FileDom file() { return m_file; }
// translation-unit
diff --git a/umbrello/debug/debug_utils.cpp b/umbrello/debug/debug_utils.cpp
index 8d305a1..1ab91bc 100644
--- a/umbrello/debug/debug_utils.cpp
+++ b/umbrello/debug/debug_utils.cpp
@@ -138,6 +138,30 @@ void Tracer::update(const QString &name)
}
}
+QMap<QString,Qt::CheckState> states;
+
+/**
+ * Update check box of parent items.
+ *
+ * @param parent parent widget item
+ */
+void Tracer::updateParentItemCheckBox(QTreeWidgetItem* parent)
+{
+ int selectedCount = 0;
+ for(int i = 0; i < parent->childCount(); i++) {
+ if (parent->child(i)->checkState(0) == Qt::Checked)
+ selectedCount++;
+ }
+ if (selectedCount == parent->childCount())
+ parent->setCheckState(0, Qt::Checked);
+ else if (selectedCount == 0)
+ parent->setCheckState(0, Qt::Unchecked);
+ else
+ parent->setCheckState(0, Qt::PartiallyChecked);
+
+ states[parent->text(0)] = parent->checkState(0);
+}
+
/**
* Fill tree widget with collected classes.
*/
@@ -152,6 +176,8 @@ void Tracer::showEvent(QShowEvent* e)
QTreeWidgetItem* topLevel = 0;
if (items.size() == 0) {
topLevel = new QTreeWidgetItem(QStringList(i.value().filePath));
+ topLevel->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
+ updateParentItemCheckBox(topLevel);
addTopLevelItem(topLevel);
}
else
@@ -161,6 +187,32 @@ void Tracer::showEvent(QShowEvent* e)
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
item->setCheckState(0, i.value().state ? Qt::Checked : Qt::Unchecked);
}
+
+ for(int i = 0; i < topLevelItemCount(); i++)
+ updateParentItemCheckBox(topLevelItem(i));
+}
+
+/**
+ */
+void Tracer::slotParentItemClicked(QTreeWidgetItem* parent)
+{
+ // @TODO parent->checkState(0) do not return the correct state
+ // Qt::CheckState state = parent->checkState(0);
+ Qt::CheckState state = states[parent->text(0)];
+ if (state == Qt::PartiallyChecked || state == Qt::Unchecked) {
+ for(int i = 0; i < parent->childCount(); i++) {
+ QString text = parent->child(i)->text(0);
+ (*m_classes)[text].state = true;
+ parent->child(i)->setCheckState(0, (*m_classes)[text].state ? Qt::Checked : Qt::Unchecked);
+ }
+ } else if (state == Qt::Checked) {
+ for(int i = 0; i < parent->childCount(); i++) {
+ QString text = parent->child(i)->text(0);
+ (*m_classes)[text].state = false;
+ parent->child(i)->setCheckState(0, (*m_classes)[text].state ? Qt::Checked : Qt::Unchecked);
+ }
+ }
+ updateParentItemCheckBox(parent);
}
/**
@@ -172,5 +224,11 @@ void Tracer::slotItemClicked(QTreeWidgetItem* item, int column)
{
Q_UNUSED(column);
- (*m_classes)[item->text(0)].state = !(*m_classes)[item->text(0)].state;
+ if (item->parent()) {
+ (*m_classes)[item->text(0)].state = !(*m_classes)[item->text(0)].state;
+ item->setCheckState(0, (*m_classes)[item->text(0)].state ? Qt::Checked : Qt::Unchecked);
+ updateParentItemCheckBox(item->parent());
+ return;
+ }
+ slotParentItemClicked(item);
}
diff --git a/umbrello/debug/debug_utils.h b/umbrello/debug/debug_utils.h
index 2199eee..6b8b1bc 100644
--- a/umbrello/debug/debug_utils.h
+++ b/umbrello/debug/debug_utils.h
@@ -79,9 +79,11 @@ public:
protected:
void update(const QString &name);
+ void updateParentItemCheckBox(QTreeWidgetItem *parent);
virtual void showEvent(QShowEvent*);
private slots:
+ void slotParentItemClicked(QTreeWidgetItem *parent);
void slotItemClicked(QTreeWidgetItem* item, int column);
private:
diff --git a/umbrello/import_rose.cpp b/umbrello/import_rose.cpp
index 92653bc..3ede636 100644
--- a/umbrello/import_rose.cpp
+++ b/umbrello/import_rose.cpp
@@ -313,6 +313,7 @@ PetalNode *readAttributes(QStringList initialArgs, QTextStream& stream)
QString name;
if (nt == PetalNode::nt_object && !stringOrNodeOpener.contains(QRegExp(QLatin1String("^[A-Za-z]")))) {
uError() << loc() << "unexpected line " << line;
+ delete node;
return NULL;
}
PetalNode::StringOrNode value;
@@ -354,8 +355,10 @@ PetalNode *readAttributes(QStringList initialArgs, QTextStream& stream)
value.string = extractValue(tokens, stream);
} else {
value.node = readAttributes(tokens, stream);
- if (value.node == NULL)
+ if (value.node == NULL) {
+ delete node;
return NULL;
+ }
}
PetalNode::NameValue attr(name, value);
attrs.append(attr);
@@ -495,11 +498,14 @@ UMLPackage* loadFromMDL(QFile& file, UMLPackage *parentPkg /* = 0 */)
return NULL;
if (parentPkg) {
- return petalTree2Uml(root, parentPkg);
+ UMLPackage *child = petalTree2Uml(root, parentPkg);
+ delete root;
+ return child;
}
if (root->name() != QLatin1String("Design")) {
uError() << "expecting root name Design";
+ delete root;
return NULL;
}
Import_Utils::assignUniqueIdOnCreation(false);
@@ -533,6 +539,7 @@ UMLPackage* loadFromMDL(QFile& file, UMLPackage *parentPkg /* = 0 */)
QLatin1String("ProcsNDevs"), QLatin1String("Processes"));
//*************************** wrap up ********************************
+ delete root;
umldoc->setCurrentRoot(Uml::ModelType::Logical);
Import_Utils::assignUniqueIdOnCreation(true);
umldoc->resolveTypes();
diff --git a/umbrello/uml.cpp b/umbrello/uml.cpp
index 1280bb6..eb49000 100644
--- a/umbrello/uml.cpp
+++ b/umbrello/uml.cpp
@@ -1333,7 +1333,7 @@ void UMLApp::slotFind()
return;
}
- int count;
+ int count = 0;
if (m_d->findDialog.filter() == FindDialog::TreeView)
count = m_d->findResults.collect(FindResults::TreeView, FindResults::Class, m_d->findDialog.text());
else if (m_d->findDialog.filter() == FindDialog::CurrentDiagram)
@@ -1341,7 +1341,7 @@ void UMLApp::slotFind()
else if (m_d->findDialog.filter() == FindDialog::AllDiagrams)
count = m_d->findResults.collect(FindResults::AllDiagrams, FindResults::Class, m_d->findDialog.text());
- UMLApp::app()->document()->writeToStatusBar(i18np("'%1': %2 found", "'%1': %2 founds", m_d->findDialog.text(), count));
+ UMLApp::app()->document()->writeToStatusBar(i18n("'%1': %2 found", m_d->findDialog.text(), count));
slotFindNext();
}
diff --git a/umbrello/widgets/classifierwidget.cpp b/umbrello/widgets/classifierwidget.cpp
index 093457c..2e6d3a1 100644
--- a/umbrello/widgets/classifierwidget.cpp
+++ b/umbrello/widgets/classifierwidget.cpp
@@ -819,8 +819,8 @@ void ClassifierWidget::drawAsCircle(QPainter *painter, const QStyleOptionGraphic
{
const int w = width();
- painter->drawEllipse(w/2 - CIRCLE_SIZE/2, SOCKET_INCREMENT / 2, CIRCLE_SIZE, CIRCLE_SIZE);
if (m_Assocs.size() > 1) {
+ painter->drawEllipse(w/2 - CIRCLE_SIZE/2, SOCKET_INCREMENT / 2, CIRCLE_SIZE, CIRCLE_SIZE);
// Draw socket for required interface.
const qreal angleSpan = 180; // 360.0 / (m_Assocs.size() + 1.0);
const int arcDiameter = CIRCLE_SIZE + SOCKET_INCREMENT;
@@ -876,6 +876,8 @@ void ClassifierWidget::drawAsCircle(QPainter *painter, const QStyleOptionGraphic
}
}
}
+ else
+ painter->drawEllipse(w/2 - CIRCLE_SIZE/2, 0, CIRCLE_SIZE, CIRCLE_SIZE);
UMLWidget::paint(painter, option);
}
diff --git a/umbrello/widgets/floatingdashlinewidget.cpp b/umbrello/widgets/floatingdashlinewidget.cpp
index 1c1fe8d..aaa6ec4 100644
--- a/umbrello/widgets/floatingdashlinewidget.cpp
+++ b/umbrello/widgets/floatingdashlinewidget.cpp
@@ -34,6 +34,8 @@ DEBUG_REGISTER_DISABLED(FloatingDashLineWidget)
*/
FloatingDashLineWidget::FloatingDashLineWidget(UMLScene * scene, Uml::ID::Type id, CombinedFragmentWidget *parent)
: UMLWidget(scene, WidgetBase::wt_FloatingDashLine, id),
+ m_yMin(0),
+ m_yMax(0),
m_parent(parent)
{
m_resizable = false;
@@ -183,6 +185,5 @@ bool FloatingDashLineWidget::loadFromXMI(QDomElement & qElement)
m_yMax = qElement.attribute(QLatin1String("maxY")).toFloat();
m_yMin = qElement.attribute(QLatin1String("minY")).toFloat();
m_Text = qElement.attribute(QLatin1String("text"));
- DEBUG(DBG_SRC) << "m_y......." << m_y;
return true;
}
diff --git a/umbrello/widgets/floatingdashlinewidget.h b/umbrello/widgets/floatingdashlinewidget.h
index 694dd9e..7b1ee22 100644
--- a/umbrello/widgets/floatingdashlinewidget.h
+++ b/umbrello/widgets/floatingdashlinewidget.h
@@ -61,12 +61,6 @@ private:
QString m_text;
/**
- * Value added to the y-coordinate of the combined fragment
- * to obtain the y-coordinate of the dash line
- */
- int m_y;
-
- /**
* Minimum value of the Y-coordinate of the dash line
* (= y-coordinate of the combined fragment)
*/
diff --git a/umbrello/widgets/messagewidget.cpp b/umbrello/widgets/messagewidget.cpp
index 451a2ba..ae543e0 100644
--- a/umbrello/widgets/messagewidget.cpp
+++ b/umbrello/widgets/messagewidget.cpp
@@ -1305,8 +1305,10 @@ void MessageWidget::saveToXMI(QDomDocument & qDoc, QDomElement & qElement)
QDomElement messageElement = qDoc.createElement(QLatin1String("messagewidget"));
UMLWidget::saveToXMI(qDoc, messageElement);
LinkWidget::saveToXMI(qDoc, messageElement);
- messageElement.setAttribute(QLatin1String("widgetaid"), Uml::ID::toString(m_pOw[Uml::RoleType::A]->localID()));
- messageElement.setAttribute(QLatin1String("widgetbid"), Uml::ID::toString(m_pOw[Uml::RoleType::B]->localID()));
+ if (m_pOw[Uml::RoleType::A])
+ messageElement.setAttribute(QLatin1String("widgetaid"), Uml::ID::toString(m_pOw[Uml::RoleType::A]->localID()));
+ if (m_pOw[Uml::RoleType::B])
+ messageElement.setAttribute(QLatin1String("widgetbid"), Uml::ID::toString(m_pOw[Uml::RoleType::B]->localID()));
UMLOperation *pOperation = operation();
if (pOperation)
messageElement.setAttribute(QLatin1String("operation"), Uml::ID::toString(pOperation->id()));
diff --git a/umbrello/widgets/objectwidget.cpp b/umbrello/widgets/objectwidget.cpp
index 4d913d7..197b885 100644
--- a/umbrello/widgets/objectwidget.cpp
+++ b/umbrello/widgets/objectwidget.cpp
@@ -73,6 +73,7 @@ ObjectWidget::ObjectWidget(UMLScene * scene, UMLObject *o)
*/
ObjectWidget::~ObjectWidget()
{
+ cleanup();
}
/**
@@ -380,6 +381,7 @@ void ObjectWidget::cleanup()
if(m_pLine) {
m_pLine->cleanup();
delete m_pLine;
+ m_pLine = 0;
}
}
diff --git a/umbrello/widgets/packagewidget.cpp b/umbrello/widgets/packagewidget.cpp
index 910c9da..b46f799 100644
--- a/umbrello/widgets/packagewidget.cpp
+++ b/umbrello/widgets/packagewidget.cpp
@@ -30,7 +30,8 @@
* @param o The UMLObject this will be representing.
*/
PackageWidget::PackageWidget(UMLScene * scene, UMLPackage *o)
- : UMLWidget(scene, WidgetBase::wt_Package, o)
+ : UMLWidget(scene, WidgetBase::wt_Package, o),
+ m_pMenu(0)
{
setSize(100, 30);
setZValue(1); // above box but below UMLWidget because may embed widgets