annotated tag v1.0.0 created (now 1503938)
This is an automated email from the git hooks/post-receive script. New change to annotated tag v1.0.0 in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git at 1503938 (tag) tagging 99021f11523c54de59eb3c2e5fbac30f07e4de3d (commit) tagged by Tony Chemit on Mon Aug 24 20:52:59 2009 +0000 - Log ----------------------------------------------------------------- [maven-scm] copy for tag eugene-1.0.0 ----------------------------------------------------------------------- This annotated tag includes the following new commits: new 99021f1 [maven-scm] copy for tag eugene-1.0.0 The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 99021f11523c54de59eb3c2e5fbac30f07e4de3d Author: Tony Chemit <chemit@codelutin.com> Date: Mon Aug 24 20:52:59 2009 +0000 [maven-scm] copy for tag eugene-1.0.0 -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to annotated tag v1.0.0 in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 99021f11523c54de59eb3c2e5fbac30f07e4de3d Author: Tony Chemit <chemit@codelutin.com> Date: Mon Aug 24 20:52:59 2009 +0000 [maven-scm] copy for tag eugene-1.0.0 --- LICENSE.txt | 166 + README.txt | 3 + changelog.txt | 3 + eugene-demo/LICENSE.txt | 280 + eugene-demo/README.txt | 2 + eugene-demo/changelog.txt | 11 + eugene-demo/pom.xml | 174 + .../_statics/Chorem4/model-file | 5844 ++++++++++++++++++++ .../_statics/IsisFish/model-file | 4336 +++++++++++++++ .../_statics/Test topia2/model-file | 3523 ++++++++++++ .../generator/demo/LutinGenDemoProperties.java | 31 + .../demo/controller/ChooseGeneratorController.java | 107 + .../demo/controller/ChooseModelController.java | 74 + .../demo/controller/FileUploadController.java | 127 + .../demo/controller/GenerateController.java | 166 + .../demo/controller/ListGeneratorsController.java | 56 + .../demo/controller/ListModelsController.java | 53 + .../codelutin/generator/demo/entities/Entity.java | 22 + .../generator/demo/entities/FileManager.java | 23 + .../generator/demo/entities/FileUploadBean.java | 26 + .../generator/demo/entities/GeneratorMgr.java | 23 + .../generator/demo/entities/ModelMgr.java | 14 + .../generator/demo/files/FileHandler.java | 194 + .../generator/demo/files/FileHandlerException.java | 9 + .../generator/demo/http/DownloadResultServlet.java | 45 + .../demo/http/UploadedFileSessionListener.java | 21 + eugene-demo/src/main/resources/log4j.properties | 16 + eugene-demo/src/main/resources/messages.properties | 39 + eugene-demo/src/main/resources/system.properties | 2 + eugene-demo/src/main/webapp/META-INF/MANIFEST.MF | 3 + eugene-demo/src/main/webapp/WEB-INF/.cvsignore | 1 + .../src/main/webapp/WEB-INF/dispatcher-servlet.xml | 75 + .../src/main/webapp/WEB-INF/jsp/block/display.jsp | 12 + .../main/webapp/WEB-INF/jsp/block/explanations.jsp | 67 + .../src/main/webapp/WEB-INF/jsp/block/footer.jsp | 4 + .../src/main/webapp/WEB-INF/jsp/block/header.jsp | 8 + .../src/main/webapp/WEB-INF/jsp/block/title.jsp | 21 + eugene-demo/src/main/webapp/WEB-INF/jsp/common.jsp | 8 + .../main/webapp/WEB-INF/jsp/generationResult.jsp | 33 + .../src/main/webapp/WEB-INF/jsp/listGenerators.jsp | 38 + .../src/main/webapp/WEB-INF/jsp/listModels.jsp | 48 + eugene-demo/src/main/webapp/WEB-INF/web.xml | 40 + eugene-demo/src/main/webapp/css/layout.css | 86 + eugene-demo/src/main/webapp/images/flags/en.gif | Bin 0 -> 583 bytes eugene-demo/src/main/webapp/images/flags/fr.gif | Bin 0 -> 325 bytes eugene-demo/src/main/webapp/images/flags/it.gif | Bin 0 -> 194 bytes eugene-demo/src/main/webapp/images/flags/zh.gif | Bin 0 -> 335 bytes eugene-demo/src/main/webapp/images/lutin.gif | Bin 0 -> 20422 bytes eugene-demo/src/main/webapp/images/lutin.png | Bin 0 -> 4431 bytes .../src/main/webapp/images/valide-false.gif | Bin 0 -> 581 bytes eugene-demo/src/main/webapp/images/valide-true.gif | Bin 0 -> 661 bytes eugene-demo/src/main/webapp/index.jsp | 3 + eugene-demo/src/site/fr/rst/index.rst | 58 + .../generator/demo/files/FileHandlerTest.java | 39 + eugene/LICENSE.txt | 166 + eugene/README.txt | 2 + eugene/TODO | 31 + eugene/changelog.txt | 99 + eugene/pom.xml | 235 + eugene/src/main/assembly/deps.xml | 45 + eugene/src/main/assembly/full.xml | 47 + .../eugene/AbstractObjectModelGenerator.java | 54 + .../java/org/nuiton/eugene/ChildGenerator.java | 94 + .../src/main/java/org/nuiton/eugene/Generator.java | 231 + .../java/org/nuiton/eugene/GeneratorException.java | 46 + .../main/java/org/nuiton/eugene/GeneratorTask.java | 723 +++ .../main/java/org/nuiton/eugene/GeneratorUtil.java | 583 ++ .../java/org/nuiton/eugene/ImportsManager.java | 157 + .../main/java/org/nuiton/eugene/MonitorWriter.java | 76 + .../org/nuiton/eugene/ObjectModelGenerator.java | 528 ++ .../java/org/nuiton/eugene/ObjectModelType.java | 35 + .../java/org/nuiton/eugene/PackageValidator.java | 87 + .../org/nuiton/eugene/StateModelGenerator.java | 294 + .../java/org/nuiton/eugene/UIModelGenerator.java | 176 + .../main/java/org/nuiton/eugene/models/Model.java | 55 + .../nuiton/eugene/models/object/ObjectModel.java | 123 + .../models/object/ObjectModelAssociationClass.java | 50 + .../eugene/models/object/ObjectModelAttribute.java | 139 + .../eugene/models/object/ObjectModelClass.java | 112 + .../models/object/ObjectModelClassifier.java | 129 + .../models/object/ObjectModelDependency.java | 55 + .../eugene/models/object/ObjectModelElement.java | 117 + .../models/object/ObjectModelEnumeration.java | 61 + .../eugene/models/object/ObjectModelInterface.java | 35 + .../eugene/models/object/ObjectModelOperation.java | 87 + .../eugene/models/object/ObjectModelParameter.java | 76 + .../object/validator/AttributeNamesValidator.java | 54 + .../object/validator/ClassNamesValidator.java | 54 + .../object/validator/NameBasedValidator.java | 83 + .../object/validator/ObjectModelValidator.java | 140 + .../object/xml/DigesterObjectModelRuleSet.java | 148 + .../ObjectModeImplAssociationClassParticipant.java | 69 + .../xml/ObjectModelAssociationClassImpl.java | 120 + .../object/xml/ObjectModelAttributeImpl.java | 242 + .../models/object/xml/ObjectModelClassImpl.java | 279 + .../object/xml/ObjectModelClassifierImpl.java | 184 + .../object/xml/ObjectModelDependencyImpl.java | 81 + .../models/object/xml/ObjectModelElementImpl.java | 211 + .../object/xml/ObjectModelEnumerationImpl.java | 103 + .../eugene/models/object/xml/ObjectModelImpl.java | 495 ++ .../models/object/xml/ObjectModelImplRef.java | 58 + .../object/xml/ObjectModelImplSuperClassRef.java | 44 + .../models/object/xml/ObjectModelImplTagValue.java | 40 + .../object/xml/ObjectModelInterfaceImpl.java | 80 + .../object/xml/ObjectModelOperationImpl.java | 159 + .../object/xml/ObjectModelParameterImpl.java | 110 + .../org/nuiton/eugene/models/state/StateModel.java | 43 + .../models/state/StateModelComplexState.java | 55 + .../eugene/models/state/StateModelSimpleState.java | 44 + .../eugene/models/state/StateModelState.java | 55 + .../eugene/models/state/StateModelStateChart.java | 39 + .../eugene/models/state/StateModelTransition.java | 44 + .../state/xml/DigesterStateModelRuleSet.java | 87 + .../state/xml/StateModelComplexeStateImpl.java | 150 + .../eugene/models/state/xml/StateModelImpl.java | 137 + .../state/xml/StateModelSimpleStateImpl.java | 75 + .../models/state/xml/StateModelStateChartImpl.java | 52 + .../models/state/xml/StateModelStateImpl.java | 114 + .../models/state/xml/StateModelTransitionImpl.java | 106 + .../java/org/nuiton/eugene/models/ui/UIModel.java | 76 + .../nuiton/eugene/models/ui/UIModelArguments.java | 43 + .../org/nuiton/eugene/models/ui/UIModelChild.java | 51 + .../nuiton/eugene/models/ui/UIModelConstraint.java | 50 + .../org/nuiton/eugene/models/ui/UIModelEvent.java | 65 + .../org/nuiton/eugene/models/ui/UIModelObject.java | 111 + .../nuiton/eugene/models/ui/UIModelProperty.java | 110 + .../models/ui/impl/UIModelArgumentsImpl.java | 80 + .../eugene/models/ui/impl/UIModelChildImpl.java | 97 + .../models/ui/impl/UIModelConstraintImpl.java | 84 + .../eugene/models/ui/impl/UIModelEventImpl.java | 137 + .../nuiton/eugene/models/ui/impl/UIModelImpl.java | 137 + .../eugene/models/ui/impl/UIModelObjectImpl.java | 310 ++ .../eugene/models/ui/impl/UIModelPropertyImpl.java | 238 + .../eugene/models/ui/javaxml/JavaXMLParser.java | 448 ++ .../models/ui/xml/DigesterUIModelRuleSet.java | 70 + .../eugene/models/ui/xml/UIModelArgumentsImpl.java | 109 + .../eugene/models/ui/xml/UIModelChildImpl.java | 92 + .../models/ui/xml/UIModelConstraintImpl.java | 84 + .../eugene/models/ui/xml/UIModelEventImpl.java | 121 + .../nuiton/eugene/models/ui/xml/UIModelImpl.java | 135 + .../eugene/models/ui/xml/UIModelObjectImpl.java | 263 + .../eugene/models/ui/xml/UIModelPropertyImpl.java | 181 + .../main/java/org/nuiton/eugene/package-info.java | 5 + eugene/src/main/resources/dtd/objectmodel.dtd | 85 + eugene/src/main/resources/dtd/statemodel.dtd | 47 + eugene/src/main/resources/xmi/default-java.xmi | 117 + eugene/src/main/resources/xmi/default-uml14.xmi | 258 + eugene/src/main/resources/xsd/objectmodel.xsd | 128 + eugene/src/main/resources/xsd/todo.txt | 11 + eugene/src/main/xsl/poseidon2argouml.xsl | 56 + eugene/src/main/xsl/xmi1.2ToObjectModel.xsl | 870 +++ eugene/src/main/xsl/xmi1.2ToStateModel.xsl | 210 + eugene/src/main/xsl/xmi2.1ToObjectModel.xsl | 839 +++ eugene/src/site/en/rst/LutinGenerator.rst | 57 + .../site/resources/images/Hotel.objectmodel.png | Bin 0 -> 52249 bytes eugene/src/site/resources/images/Hotel.png | Bin 0 -> 3354 bytes eugene/src/site/resources/images/ObjectModel.png | Bin 0 -> 31703 bytes eugene/src/site/resources/images/StateModel.png | Bin 0 -> 4768 bytes eugene/src/site/resources/images/plugin_choix.png | Bin 0 -> 31460 bytes eugene/src/site/resources/images/plugin_menu.png | Bin 0 -> 14849 bytes .../src/site/resources/images/plugin_newdepot.png | Bin 0 -> 46634 bytes .../site/resources/images/plugin_typeinstall.png | Bin 0 -> 24760 bytes .../images/plugin_utilisation_editeur.png | Bin 0 -> 111702 bytes eugene/src/site/rst/ConvertPoseidonToArgoUML.rst | 12 + eugene/src/site/rst/DevUIDoc.rst | 103 + .../src/site/rst/DiscussionSurTypeDeGeneration.rst | 71 + eugene/src/site/rst/ObjectModel.rst | 85 + eugene/src/site/rst/ObjectModel.zuml | Bin 0 -> 35016 bytes eugene/src/site/rst/Todo.rst | 104 + eugene/src/site/rst/buix.guix | 409 ++ eugene/src/site/rst/exemple.topiaModel | 48 + eugene/src/site/rst/generatorHelp.txt | 89 + eugene/src/site/rst/index.rst | 80 + eugene/src/site/rst/plugineclipse.rst | 44 + eugene/src/site/site.xml | 39 + .../java/org/nuiton/eugene/GeneratorTaskTest.java | 212 + .../java/org/nuiton/eugene/ImportsManagerTest.java | 86 + .../nuiton/eugene/ObjectModelGeneratorTest.java | 96 + .../eugene/models/state/StateModelDTDTest.java | 100 + .../nuiton/eugene/models/state/StateModelTest.java | 142 + .../models/ui/javaxml/JavaXMLParserTest.java | 126 + .../nuiton/eugene/models/xml/ModelMergeTest.java | 105 + .../xmi/objectmodel/XMI12ToObjectModelTest.java | 228 + .../xmi/objectmodel/XMI21ToObjectModelTest.java | 526 ++ eugene/src/test/resources/log4j.properties | 11 + .../models/objectmodel/security1.objectmodel | 30 + .../models/objectmodel/security1.properties | 7 + .../models/objectmodel/security2.objectmodel | 8 + .../models/objectmodel/security3.objectmodel | 9 + .../models/objectmodel/security4.objectmodel | 23 + .../models/objectmodel/security5.objectmodel | 11 + .../models/objectmodel/security6.objectmodel | 30 + .../models/objectmodel/security6.properties | 5 + .../resources/models/statemodel/contact.properties | 1 + .../resources/models/statemodel/contact.statemodel | 58 + .../resources/models/statemodel/project.statemodel | 14 + .../src/test/resources/models/uimodel/test.javaxml | 97 + .../test/resources/models/uimodel/test1.javaxml | 24 + .../test/resources/models/uimodel/test2.javaxml | 497 ++ .../resources/uml/Acceleo.Business.profile.uml | 235 + eugene/src/test/resources/xmi/1.2/dependency.xmi | 84 + eugene/src/test/resources/xmi/1.2/enumeration.xmi | 89 + eugene/src/test/resources/xmi/1.2/isis-fish.xmi | 4461 +++++++++++++++ eugene/src/test/resources/xmi/1.2/topiatest.xmi | 1334 +++++ eugene/src/test/resources/xmi/1.2/topiatest.zargo | Bin 0 -> 20605 bytes .../test/resources/xmi/2.1/TestXMI21.properties | 2 + eugene/src/test/resources/xmi/2.1/TestXMI21.uml | 246 + eugene/src/test/resources/xmi/2.1/TestXMI21.umldi | 527 ++ eugene/src/test/resources/xmi/2.1/cmsCore.uml | 4998 +++++++++++++++++ eugene/src/test/resources/xmi/2.1/cmsLink.uml | 425 ++ .../http-storage-api/src/main/uml/conception.uml | 250 + .../src/main/uml/conception.properties | 7 + .../src/main/uml/conception.uml | 475 ++ .../src/main/uml/conception.umldi | 853 +++ .../src/main/uml/conception-helper.uml | 36 + .../src/main/uml/conception-helper.umldi | 160 + .../src/main/uml/conception.properties | 7 + .../src/main/uml/conception.uml | 297 + .../src/main/uml/conception.umldi | 784 +++ eugene/src/test/resources/xmi/2.1/vpod.uml | 227 + maven-eugene-plugin/LICENSE.txt | 166 + maven-eugene-plugin/README.txt | 2 + maven-eugene-plugin/changelog.txt | 53 + maven-eugene-plugin/pom.xml | 100 + .../org/nuiton/eugene/plugin/CopyVersionFiles.java | 264 + .../nuiton/eugene/plugin/EugeneAbstractMojo.java | 173 + .../org/nuiton/eugene/plugin/EugenePlugin.java | 394 ++ .../java/org/nuiton/eugene/plugin/Xmi2Model.java | 416 ++ .../org/nuiton/eugene/plugin/Xmi2ObjectModel.java | 132 + .../org/nuiton/eugene/plugin/Xmi2StateModel.java | 47 + .../java/org/nuiton/eugene/plugin/Zargo2Xmi.java | 120 + .../src/main/resources/log4j.properties | 8 + maven-eugene-plugin/src/site/rst/index.rst | 20 + maven-eugene-plugin/src/site/site.xml | 43 + maven-eugene-plugin/src/xmi/.dummy | 0 maven-eugene-plugin/src/xmi/chorem_diagram.zuml | Bin 0 -> 299089 bytes pom.xml | 218 + src/site/site.xml | 25 + 238 files changed, 51420 insertions(+) diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..3f7b8b1 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..d046c31 --- /dev/null +++ b/README.txt @@ -0,0 +1,3 @@ +To deploy new version of pom: mvn clean deploy -DperformRelease +To install localy: mvn clean install + diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..0a661fa --- /dev/null +++ b/changelog.txt @@ -0,0 +1,3 @@ +1.0.0 xxx xxx + * Initial create org.nuiton.eugene mavenpom + diff --git a/eugene-demo/LICENSE.txt b/eugene-demo/LICENSE.txt new file mode 100644 index 0000000..589ce5b --- /dev/null +++ b/eugene-demo/LICENSE.txt @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/eugene-demo/README.txt b/eugene-demo/README.txt new file mode 100644 index 0000000..d2e50d3 --- /dev/null +++ b/eugene-demo/README.txt @@ -0,0 +1,2 @@ +To deploy new version of pom: mvn deploy +To install localy: mvn install diff --git a/eugene-demo/changelog.txt b/eugene-demo/changelog.txt new file mode 100644 index 0000000..76bc040 --- /dev/null +++ b/eugene-demo/changelog.txt @@ -0,0 +1,11 @@ +0.2 ??? 200812?? + * 20081210 chemit use lutinproject 3.2, and new libraries version (generator,...) + +ver-0-1 thimel 20080430 + + * Web UI + * 3 steps generation : choose generator, choose model, generate + * Upload user models (deleted when user session ends) + * Download generation result + * Online .objectmodel and .statemodel view + \ No newline at end of file diff --git a/eugene-demo/pom.xml b/eugene-demo/pom.xml new file mode 100644 index 0000000..9897809 --- /dev/null +++ b/eugene-demo/pom.xml @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <parent> + <groupId>org.nuiton</groupId> + <artifactId>eugene</artifactId> + <version>1.0.0-rc-3-SNAPSHOT</version> + </parent> + + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-demo</artifactId> + + <dependencies> + + + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>eugene</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-persistence</artifactId> + <version>${topia.version}</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + <version>${lutinutil.version}</version> + <scope>compile</scope> + </dependency> + + + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring</artifactId> + <version>2.0.8</version> + <scope>compile</scope> + </dependency> + + <!--Provided--> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jsp-api</artifactId> + <version>2.0</version> + <scope>provided</scope> + </dependency> + + <!--Runtime--> + <dependency> + <groupId>taglibs</groupId> + <artifactId>standard</artifactId> + <version>1.1.2</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jstl</artifactId> + <version>1.1.2</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>taglibs</groupId> + <artifactId>c</artifactId> + <version>1.1.2</version> + <type>tld</type> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>taglibs</groupId> + <artifactId>fmt</artifactId> + <version>1.1.2</version> + <type>tld</type> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>taglibs</groupId> + <artifactId>fn</artifactId> + <version>1.1.1</version> + <type>tld</type> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>xalan</groupId> + <artifactId>xalan</artifactId> + <version>2.7.0</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>commons-el</groupId> + <artifactId>commons-el</artifactId> + <version>1.0</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>commons-beanutils</groupId> + <artifactId>commons-beanutils</artifactId> + <version>1.7.0</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>commons-fileupload</groupId> + <artifactId>commons-fileupload</artifactId> + <version>1.1</version> + <scope>runtime</scope> + </dependency> + + </dependencies> + + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>LutinGeneratorDemo</name> + <description>Site de demo de Lutin Generator.</description> + <inceptionYear>2007</inceptionYear> + + <contributors> + <contributor> + <name>Arnaud Thimel</name> + <email>thimel@codelutin.com</email> + <timezone>+2</timezone> + <roles> + <role>Developpeur</role> + </roles> + </contributor> + </contributors> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>war</packaging> + + + <properties> + + + <!-- processor version --> + <processor.version>1.0.0-rc-1</processor.version> + + <!-- lutinutil version --> + <lutinutil.version>1.0.0-rc-1</lutinutil.version> + + <!-- topia version --> + <topia.version>2.2.0-rc-2-SNAPSHOT</topia.version> + + </properties> + + <build> + <plugins> + + </plugins> + </build> + +</project> + diff --git a/eugene-demo/sample-lutingen-demo-files/_statics/Chorem4/model-file b/eugene-demo/sample-lutingen-demo-files/_statics/Chorem4/model-file new file mode 100644 index 0000000..b81df39 --- /dev/null +++ b/eugene-demo/sample-lutingen-demo-files/_statics/Chorem4/model-file @@ -0,0 +1,5844 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Thu Aug 23 19:29:29 CEST 2007'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>0.24(5) revised on $Date$ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = '.:0000000000000B15' name = 'Chorem' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '.:0000000000000B02' name = 'org' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '.:0000000000000B01' name = 'codelutin' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '.:0000000000000AFE' name = 'chorem' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '.:0000000000000AFD' name = 'entities' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '.:0000000000000865' name = 'core' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000824' name = 'ChoremObject' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'true' + isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Abstraction xmi.idref = '.:000000000000083C'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Operation xmi.id = '.:0000000000000823' name = 'accept' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000821' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000822' name = 'visitor' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000840'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:000000000000082B' name = 'Note' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000827' name = 'comment' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000826'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000825' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000082A' name = 'author' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000829'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000828' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:000000000000082C' name = 'File' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + </UML:Class> + <UML:Class xmi.id = '.:0000000000000836' name = 'Property' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:000000000000082F' name = 'name' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000082E'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000082D' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000832' name = 'category' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000831'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000830' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000835' name = 'data' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000834'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000833' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Interface xmi.id = '.:000000000000083A' name = 'Visitable' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'true'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B14'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Operation xmi.id = '.:0000000000000839' name = 'accept' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000837' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000838' name = 'visitor' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000840'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Interface> + <UML:Stereotype xmi.id = '.:000000000000083B' name = 'realize' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Abstraction xmi.id = '.:000000000000083C' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:000000000000083B'/> + </UML:ModelElement.stereotype> + <UML:Dependency.client> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Interface xmi.idref = '.:000000000000083A'/> + </UML:Dependency.supplier> + </UML:Abstraction> + <UML:Class xmi.id = '.:0000000000000840' name = 'Visitor' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Operation xmi.id = '.:000000000000083F' name = 'visit' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'true'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000083D' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:000000000000083E' name = 'element' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:000000000000083A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:0000000000000847' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000843' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000842'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000841' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000846' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000845'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000844' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000082B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:000000000000084E' name = 'properties' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:000000000000084A' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000849'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000848' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:000000000000084D' name = 'properties' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000084C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000084B' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000836'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:0000000000000855' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000851' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000850'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000084F' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000082B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000854' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000853'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000852' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000082C'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Generalization xmi.id = '.:0000000000000856' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000881'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000857' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:00000000000008EA'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000858' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000859' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:00000000000008D0'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:000000000000085A' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000891'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:000000000000085B' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000944'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:000000000000085C' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:00000000000009DC'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:000000000000085D' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:00000000000009C8'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:000000000000085E' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:00000000000009E5'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:000000000000085F' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000A22'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000860' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000A39'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000861' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000A40'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000862' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000863' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000ACF'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000864' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000A92'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000824'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '.:0000000000000937' name = 'crm' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000881' name = 'Company' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000856'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000868' name = 'name' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000867'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000866' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000086B' name = 'type' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000086A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000869' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000086E' name = 'headOffice' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000086D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000086C' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000871' name = 'activity' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000870'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000086F' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000874' name = 'address' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000873'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000872' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000877' name = 'phone' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000876'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000875' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000087A' name = 'fax' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000879'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000878' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000087D' name = 'mail' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000087C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000087B' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000880' name = 'web' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000087F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000087E' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:0000000000000891' name = 'Service' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:000000000000085A'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000884' name = 'name' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000883'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000882' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000887' name = 'address' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000886'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000885' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000088A' name = 'phone' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000889'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000888' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000088D' name = 'fax' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000088C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000088B' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000890' name = 'mail' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000088F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000088E' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:000000000000089E' name = 'Employee' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000858'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000894' name = 'phone' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000893'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000892' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000897' name = 'mobile' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000896'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000895' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000089A' name = 'mail' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000899'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000898' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000089D' name = 'job' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000089C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000089B' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:00000000000008A5' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000008A1' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008A0'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000089F' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000881'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000008A4' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008A3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008A2' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:00000000000008AC' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000008A8' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008A7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008A6' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000881'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000008AB' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008AA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008A9' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000891'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:00000000000008B3' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000008AF' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008AE'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008AD' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000891'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000008B2' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008B1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008B0' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:00000000000008BA' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000008B6' name = 'responsable' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008B5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008B4' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000891'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000008B9' name = 'responsable' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008B8'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008B7' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:00000000000008D0' name = 'Person' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000859'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:00000000000008BD' name = 'firstName' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008BC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008BB' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008C0' name = 'lastName' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008BF'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008BE' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008C3' name = 'address' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008C2'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008C1' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008C6' name = 'birthDate' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008C5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008C4' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008C9' name = 'phone' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008C8'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008C7' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008CC' name = 'mobile' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008CB'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008CA' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008CF' name = 'mail' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008CE'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008CD' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000B53' name = 'getName' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000B54' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:00000000000008D7' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000008D3' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '0-0-7--64--7f30e211:114173fb1ca:-8000:0000000000000C5A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '0-0-7--64--7f30e211:114173fb1ca:-8000:0000000000000C59' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000008D6' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'aggregate' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '0-0-7--64--7f30e211:114173fb1ca:-8000:0000000000000C5E'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '0-0-7--64--7f30e211:114173fb1ca:-8000:0000000000000C5D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000008D0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:00000000000008EA' name = 'Contract' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000857'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:00000000000008DA' name = 'beginHiringDate' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008D9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008D8' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008DD' name = 'endHiringDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008DC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008DB' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008E0' name = 'dayDuration' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008DF'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008DE' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008E3' name = 'monthDuration' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008E2'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008E1' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008E6' name = 'basePay' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008E5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008E4' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008E9' name = 'otherCost' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008E8'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008E7' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:00000000000008F1' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000008ED' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008EC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008EB' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000008F0' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008EF'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008EE' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000008EA'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:00000000000008F8' name = 'Equipment' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:00000000000008F4' name = 'name' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008F3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008F2' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000008F7' name = 'description' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008F6'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008F5' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:00000000000008FF' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000008FB' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008FA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008F9' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000881'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000008FE' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000008FD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000008FC' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000008F8'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:0000000000000900' name = 'Contact' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000862'/> + </UML:GeneralizableElement.generalization> + </UML:Class> + <UML:Association xmi.id = '.:0000000000000907' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000903' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000902'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000901' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000891'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000906' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000905'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000904' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:000000000000090E' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:000000000000090A' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000909'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000908' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:000000000000090D' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000090C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000090B' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:0000000000000915' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000911' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000910'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000090F' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000914' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000913'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000912' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000881'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:0000000000000919' name = 'Role' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000918' name = 'name' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000917'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000916' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:0000000000000920' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:000000000000091C' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000091B'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000091A' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:000000000000091F' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000091E'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000091D' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000919'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:0000000000000924' name = 'Relation' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000923' name = 'name' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000922'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000921' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:000000000000092B' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000927' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000926'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000925' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000881'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:000000000000092A' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000929'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000928' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000924'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:000000000000092F' name = 'ContractType' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:000000000000092E' name = 'name' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000092D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000092C' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:0000000000000936' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000932' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000931'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000930' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000008EA'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000935' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000934'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000933' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000092F'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001174' + name = 'PersonDAO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001176' + name = 'CompanyDAO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Stereotype xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000117B' + name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Generalization xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000117E' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001174'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001184' + name = 'EmployeeDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Generalization xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001186' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001184'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001189' + name = 'ContactDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000118A' + name = 'ContractDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000118B' + name = 'EquipmentDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000118C' + name = 'RelationDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000118D' + name = 'RoleDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Generalization xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001193' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001189'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001194' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000118A'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001195' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000118B'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001196' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001176'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001197' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000118C'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001199' + name = 'ServiceDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5C' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000118D'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5D' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001199'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '.:0000000000000A06' name = 'projectManagement' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000944' name = 'TimeEntity' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'true' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:000000000000085B'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:000000000000093A' name = 'name' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000939'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000938' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000093D' name = 'description' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000093C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000093B' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000940' name = 'comment' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000093F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000093E' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000943' name = 'getRootTask' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000942' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.defaultValue> + <UML:Expression xmi.id = '.:0000000000000941' language = 'Java' body = ''/> + </UML:Parameter.defaultValue> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:0000000000000948' name = 'Milestone' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:00000000000009C9'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000947' name = 'date' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000946'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000945' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:00000000000009C2' name = 'Task' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:00000000000009CA'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:000000000000094B' name = 'beginDate' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000094A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000949' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000094E' name = 'endDate' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000094D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000094C' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000951' name = 'priority' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000950'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000094F' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B04'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000954' name = 'price' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000953'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000952' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000958' name = 'firstEstimatedDuration' + visibility = 'protected' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000956'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000955' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:Attribute.initialValue> + <UML:Expression xmi.id = '.:0000000000000957' language = 'Java' body = ''/> + </UML:Attribute.initialValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000095B' name = 'lastEstimatedDuration' + visibility = 'protected' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000095A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000959' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:000000000000095E' name = 'closed' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000095D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000095C' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B11'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000960' name = 'getProject' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000095F' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009C3'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000962' name = 'getSubTasks' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000961' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000964' name = 'getAllSubTasks' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000963' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000966' name = 'getLocalLastEstimatedDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000965' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000968' name = 'getLocalRemaningDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000967' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000096A' name = 'getLocalWorkedDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000969' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000096C' name = 'getSubTaskLastEstimatedDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000096B' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000096E' name = 'getSubTaskRemaningDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000096D' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000970' name = 'getSubTaskWorkedDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000096F' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000972' name = 'getTotalLastEstimatedDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000971' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000974' name = 'getTotalRemaningDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000973' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000976' name = 'getTotalWorkedDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000975' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000978' name = 'getCompletion' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000977' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B13'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000097A' name = 'getRealBeginDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000979' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000097C' name = 'getRealEndDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000097B' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000097F' name = 'declareResource' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000097D' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:000000000000097E' name = 'equipment' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000008F8'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000982' name = 'declareResource' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000980' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000981' name = 'employee' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000985' name = 'add' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000983' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000984' name = 'task' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000988' name = 'remove' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000986' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000987' name = 'task' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000098B' name = 'cut' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000989' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:000000000000098A' name = 'task' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000098F' name = 'addWorkedTime' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000098C' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:000000000000098D' name = 'employee' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:000000000000098E' name = 'time' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009DC'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000993' name = 'setRemaningTime' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000990' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000991' name = 'employee' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000992' name = 'time' isSpecification = 'false'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000996' name = 'removeResource' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000994' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000995' name = 'employee' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000999' name = 'removeResource' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000997' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000998' name = 'equipment' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000008F8'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:000000000000099D' name = 'setRemaningTime' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000099A' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:000000000000099B' name = 'equipment' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000008F8'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:000000000000099C' name = 'time' isSpecification = 'false'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009A1' name = 'addWorkedTime' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:000000000000099E' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:000000000000099F' name = 'equipment' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000008F8'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:00000000000009A0' name = 'time' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009DC'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009A4' name = 'findOrCreateRealCase' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009A2' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009E5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:00000000000009A3' name = 'employee' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009A7' name = 'findOrCreateRealCase' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009A5' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009E5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:00000000000009A6' name = 'equipment' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000008F8'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009AA' name = 'findOrCreateRealCase' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009A8' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009E5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:00000000000009A9' name = 'resource' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:00000000000009C8'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009AC' name = 'getSuperUnfoldingResources' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009AB' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009AF' name = 'getSuperUnfoldingResources' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009AD' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:00000000000009AE' name = 'resources' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009B1' name = 'getUnfoldingResources' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009B0' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009B3' name = 'getTotalSellingPrice' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009B2' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009B5' name = 'getTotalCost' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009B4' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009B7' name = 'getTotalFactoryPrice' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009B6' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009B9' name = 'getTotalResourceCost' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009B8' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009BB' name = 'getMarge' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009BA' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B13'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009BD' name = 'getContactBilling' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009BC' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009BF' name = 'close' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009BE' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009C1' name = 'getShift' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009C0' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B13'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:00000000000009C3' name = 'Project' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:00000000000009CB'/> + </UML:GeneralizableElement.generalization> + </UML:Class> + <UML:Class xmi.id = '.:00000000000009C8' name = 'Resource' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:000000000000085D'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Operation xmi.id = '.:00000000000009C5' name = 'getCost' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009C4' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B12'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:00000000000009C7' name = 'getName' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009C6' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Generalization xmi.id = '.:00000000000009C9' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000948'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000944'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:00000000000009CA' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000944'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:00000000000009CB' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:00000000000009C3'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Association xmi.id = '.:00000000000009D2' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000009CE' name = 'superTask' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009CD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009CC' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000009D1' name = 'subEntities' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009D0'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009CF' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000944'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:00000000000009DC' name = 'Time' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:000000000000085C'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:00000000000009D5' name = 'date' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009D4'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009D3' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000009D8' name = 'time' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009D7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009D6' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:00000000000009DB' name = 'comment' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009DA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009D9' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:00000000000009E5' name = 'RealCase' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:000000000000085E'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:00000000000009DF' name = 'remaningTime' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009DE'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009DD' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:00000000000009E1' name = 'getWorkedDuration' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:00000000000009E0' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Attribute xmi.id = '.:00000000000009E4' name = 'declared' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009E3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009E2' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B11'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:00000000000009EC' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000009E8' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009E7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009E6' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009E5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000009EB' name = 'workTimes' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009EA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009E9' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009DC'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:00000000000009F3' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000009EF' name = 'participates' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009EE'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009ED' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009E5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000009F2' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009F1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009F0' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C8'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:00000000000009FA' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000009F6' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009F5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009F4' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:00000000000009F9' name = 'unfolding' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009F8'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009F7' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009E5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:AssociationClass xmi.id = '.:0000000000000A05' name = 'Dependance' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:00000000000009FD' name = 'preceding' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009FC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009FB' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000944'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000A00' name = 'following' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:00000000000009FF'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:00000000000009FE' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000944'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000A04' name = 'type' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A02'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A01' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:Attribute.initialValue> + <UML:Expression xmi.id = '.:0000000000000A03' language = 'Java' body = ''/> + </UML:Attribute.initialValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B77' + name = 'TimeEntityDAO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B7D' + name = 'MilestoneDAO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B81' + name = 'TaskDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B82' + name = 'ProjectDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B83' + name = 'ResourceDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B84' + name = 'TimeDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B85' + name = 'RealCaseDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8B' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B7D'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8C' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B82'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8D' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B85'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8E' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B83'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8F' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B81'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B90' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B84'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B91' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B77'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Association xmi.id = '.:0000000000000A0D' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000A09' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A08'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A07' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C8'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000A0C' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A0B'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A0A' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:0000000000000A14' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000A10' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A0F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A0E' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C8'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000A13' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A12'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A11' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000008F8'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Package xmi.id = '.:0000000000000A81' name = 'accounting' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000A22' name = 'Category' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:000000000000085F'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000A17' name = 'name' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A16'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A15' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A1A' name = 'debitCredit' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A19'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A18' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B11'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A1D' name = 'ordered' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A1C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A1B' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B04'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000A21' name = 'getTotal' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A1E' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A1F' name = 'begin' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A20' name = 'end' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:0000000000000A39' name = 'SubCategory' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000860'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000A25' name = 'name' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A24'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A23' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000A29' name = 'getElement' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A26' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A27' name = 'begin' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A28' name = 'end' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000A2D' name = 'getTotal' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A2A' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A2B' name = 'begin' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A2C' name = 'end' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Attribute xmi.id = '.:0000000000000A30' name = 'ordered' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A2F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A2E' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B04'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000A34' name = 'getTagValue' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A31' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A32' name = 'begin' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A33' name = 'end' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000A38' name = 'getBill' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A35' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = '.:0000000000000B0B'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A36' name = 'begin' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000A37' name = 'end' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:0000000000000A40' name = 'Element' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'true' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000861'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Operation xmi.id = '.:0000000000000A3B' name = 'getName' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'true'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A3A' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000A3D' name = 'getDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'true'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A3C' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000A3F' name = 'getValue' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'true'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A3E' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:0000000000000A4C' name = 'TagValue' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000A4D'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000A43' name = 'tag' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A42'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A41' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A46' name = 'value' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A45'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A44' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A49' name = 'date' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A48'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A47' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000A4B' name = 'getName' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A4A' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Generalization xmi.id = '.:0000000000000A4D' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000A4C'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000A40'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Class xmi.id = '.:0000000000000A61' name = 'Bill' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000A62'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000A50' name = 'number' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A4F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A4E' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A53' name = 'value' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A52'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A51' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A56' name = 'issueDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A55'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A54' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A59' name = 'hopeDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A58'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A57' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A5C' name = 'realDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A5B'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A5A' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000A5E' name = 'getName' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A5D' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000A60' name = 'getDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A5F' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Generalization xmi.id = '.:0000000000000A62' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000A61'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000A40'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Association xmi.id = '.:0000000000000A69' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000A65' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A64'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A63' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A22'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000A68' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A67'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A66' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A39'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:0000000000000A70' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000A6C' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A6B'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A6A' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A39'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000A6F' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A6E'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A6D' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A40'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:0000000000000A71' name = 'Cost' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000A72'/> + </UML:GeneralizableElement.generalization> + </UML:Class> + <UML:Generalization xmi.id = '.:0000000000000A72' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000A71'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000A4C'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Association xmi.id = '.:0000000000000A79' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000A75' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A74'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A73' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000A78' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A77'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A76' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A39'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:0000000000000A80' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000A7C' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A7B'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A7A' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000A7F' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A7E'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A7D' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A61'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B94' + name = 'CategoryDAO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B96' + name = 'SubCategoryDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B97' + name = 'ElementDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B98' + name = 'TagValueDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B99' + name = 'BillDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B9A' + name = 'CostDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA0' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B92'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B9A'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA1' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B92'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B97'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA2' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B92'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B94'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA3' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B92'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B99'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA4' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B92'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B96'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA5' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B92'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B98'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Association xmi.id = '.:0000000000000A88' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000A84' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A83'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A82' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000A87' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A86'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A85' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A71'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Package xmi.id = '.:0000000000000AE7' name = 'event' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000A92' name = 'Repetition' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000864'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000A8B' name = 'date' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A8A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A89' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A8E' name = 'enabled' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A8D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A8C' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B11'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000A91' name = 'delete' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A90'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A8F' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B11'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:0000000000000A99' name = 'Leave' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000AD0'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Operation xmi.id = '.:0000000000000A94' name = 'getShortDescription' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A93' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000A96' name = 'getLongDescription' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A95' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000A98' name = 'getEmployee' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000A97' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:000000000000089E'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Stereotype xmi.id = '.:0000000000000A9A' name = 'realize' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Class xmi.id = '.:0000000000000A9E' name = 'Motif' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000A9D' name = 'name' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000A9C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A9B' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:0000000000000AA5' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000AA1' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AA0'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000A9F' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A99'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000AA4' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AA3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AA2' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A9E'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '.:0000000000000AB0' name = 'Meeting' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000AD1'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000AA8' name = 'subject' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AA7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AA6' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000AAB' name = 'description' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AAA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AA9' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000AAD' name = 'getShortDescription' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000AAC' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000AAF' name = 'getLongDescription' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000AAE' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '.:0000000000000ACF' name = 'Event' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'true' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '.:0000000000000863'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000AB3' name = 'startDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AB2'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AB1' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000AB5' name = 'getShortDescription' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'true'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000AB4' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000AB7' name = 'getLongDescription' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'true'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000AB6' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Attribute xmi.id = '.:0000000000000ABA' name = 'time' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AB9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AB8' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000ABD' name = 'endDate' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000ABC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000ABB' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B0A'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000ABF' name = 'createRepetitionDay' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000ABE' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000AC1' name = 'createRepetitionWeek' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000AC0' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000AC3' name = 'createRepetitionMonth' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000AC2' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Attribute xmi.id = '.:0000000000000AC6' name = 'type' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AC5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AC4' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B04'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '.:0000000000000AC8' name = 'createRepetition' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000AC7' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000ACB' name = 'setStartHour' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000AC9' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000ACA' name = 'hour' isSpecification = 'false'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B04'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '.:0000000000000ACE' name = 'setStartMinute' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '.:0000000000000ACC' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B0F'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '.:0000000000000ACD' name = 'mininute' isSpecification = 'false'> + <UML:Parameter.type> + <UML:DataType xmi.idref = '.:0000000000000B04'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Generalization xmi.id = '.:0000000000000AD0' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000A99'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000ACF'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '.:0000000000000AD1' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '.:0000000000000AB0'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '.:0000000000000ACF'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Class xmi.id = '.:0000000000000AD8' name = 'Notification' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '.:0000000000000B03'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '.:0000000000000AD4' name = 'type' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AD3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AD2' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '.:0000000000000B05'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '.:0000000000000AD7' name = 'timeBefore' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AD6'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AD5' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = '.:0000000000000B10'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '.:0000000000000ADF' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000ADB' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000ADA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AD9' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000ACF'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000ADE' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000ADD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000ADC' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000AD8'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:0000000000000AE6' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000AE2' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AE1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AE0' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000ACF'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000AE5' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AE4'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AE3' lower = '1' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A92'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B61' + name = 'RepetitionDAO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B63' + name = 'LeaveDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B64' + name = 'MotifDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B65' + name = 'MeetingDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B66' + name = 'EventDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B67' + name = 'NotificationDAO' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183'/> + </UML:ModelElement.stereotype> + </UML:Interface> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B6D' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5E'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B63'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B6E' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5E'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B66'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B6F' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5E'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B65'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B70' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5E'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B64'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B71' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5E'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B67'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B72' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5E'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Interface xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B61'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Association xmi.id = '.:0000000000000AEE' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000AEA' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AE9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AE8' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000A61'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000AED' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AEC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AEB' lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:0000000000000AF5' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000AF1' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AF0'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AEF' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:00000000000009C2'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000AF4' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AF3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AF2' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '.:0000000000000AFC' name = '' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '.:0000000000000AF8' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AF7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AF6' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000ACF'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '.:0000000000000AFB' name = 'participate' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '.:0000000000000AFA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:0000000000000AF9' lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '.:0000000000000900'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '-64--88-99-15-7a9f3928:11277379485:-8000:0000000000000B19' + name = 'services' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '-64--88-99-15--38c4d159:1127b39ddb0:-8000:000000000000127B' + name = 'crm' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Interface xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000116C' + name = 'CRMService' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-199e45b9:1127766b78d:-8000:0000000000000B25'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:000000000000117E'/> + <UML:Generalization xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001186'/> + <UML:Generalization xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001193'/> + <UML:Generalization xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001194'/> + <UML:Generalization xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001195'/> + <UML:Generalization xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001196'/> + <UML:Generalization xmi.idref = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001197'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5C'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5D'/> + </UML:GeneralizableElement.generalization> + </UML:Interface> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '0-0-7--64--52bfa653:112d1d80f74:-8000:0000000000000B4E' + name = 'event' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B5E' + name = 'EventService' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-199e45b9:1127766b78d:-8000:0000000000000B25'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B6D'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B6E'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B6F'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B70'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B71'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B72'/> + </UML:GeneralizableElement.generalization> + </UML:Interface> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '0-0-7--64--52bfa653:112d1d80f74:-8000:0000000000000B4F' + name = 'projectManagement' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B73' + name = 'ProjectManagementService' visibility = 'public' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-199e45b9:1127766b78d:-8000:0000000000000B25'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8B'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8C'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8D'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8E'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B8F'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B90'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B91'/> + </UML:GeneralizableElement.generalization> + </UML:Interface> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '0-0-7--64--52bfa653:112d1d80f74:-8000:0000000000000B50' + name = 'accounting' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Interface xmi.id = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000B92' + name = 'AccountingService' visibility = 'public' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-199e45b9:1127766b78d:-8000:0000000000000B25'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA0'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA1'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA2'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA3'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA4'/> + <UML:Generalization xmi.idref = '0-0-7--64--1295516f:1134329800a:-8000:0000000000000BA5'/> + </UML:GeneralizableElement.generalization> + </UML:Interface> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000000D26' + name = 'web' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001239' + name = 'crm' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:StateMachine xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:000000000000123A' + name = 'crm' isSpecification = 'false'> + <UML:StateMachine.top> + <UML:CompositeState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:000000000000123B' + name = 'top' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:CompositeState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001751' + name = 'PersonFormUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001752' + name = 'PersonForm' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BEF'/> + <UML:Transition xmi.idref = '0-0-7--64-1996484f:1146e26e932:-8000:000000000000116B'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001754'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:Pseudostate xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001753' + name = 'initPersonFormUC' isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001754'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:FinalState xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BEE' + name = 'finalState2' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BEF'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:FinalState xmi.id = '0-0-7--64-1996484f:1146e26e932:-8000:0000000000000BF8' + name = 'finalState1' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64-1996484f:1146e26e932:-8000:000000000000116B'/> + </UML:StateVertex.incoming> + </UML:FinalState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + <UML:CompositeState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C06' + name = 'PersonViewUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07' + name = 'PersonView' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C15'/> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C1C'/> + <UML:Transition xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF2'/> + <UML:Transition xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF5'/> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C13'/> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C1B'/> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C1C'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C09'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:Pseudostate xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C08' + name = 'initPersonViewUC' isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C09'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C14' + name = 'PersonFormUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C15'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C17' + name = 'PersonListUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C1C'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:FinalState xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF1' + name = 'finalState1' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF2'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:FinalState xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF4' + name = 'finalState2' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF5'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:SimpleState xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C12' + name = 'EmployeeFormUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C13'/> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C1B'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C1B' + name = 'PersonViewUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C1C'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + <UML:CompositeState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C20' + name = 'PersonListUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:Pseudostate xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C21' + name = 'initPersonListUC' isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C24'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C22' + name = 'PersonList' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C27'/> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C29'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C24'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C25' + name = 'PersonFormUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C27'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C26' + name = 'PersonViewUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C29'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + <UML:CompositeState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C2B' + name = 'CompanyFormUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C2C' + name = 'CompanyForm' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BEE'/> + <UML:Transition xmi.idref = '0-0-7--64-1996484f:1146e26e932:-8000:0000000000001169'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C32'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:Pseudostate xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C31' + name = 'initCompanyFormUC' isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C32'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:FinalState xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BED' + name = 'finalState2' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BEE'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:FinalState xmi.id = '0-0-7--64-1996484f:1146e26e932:-8000:0000000000000BF2' + name = 'finalState1' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64-1996484f:1146e26e932:-8000:0000000000001169'/> + </UML:StateVertex.incoming> + </UML:FinalState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + <UML:CompositeState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3C' + name = 'CompanyListUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:Pseudostate xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4A' + isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4F'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4B' + name = 'CompanyList' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C50'/> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C52'/> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C5B'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4F'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4C' + name = 'CompanyFormUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C50'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4D' + name = 'CompanyListUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C5B'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4E' + name = 'CompanyViewUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C52'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + <UML:CompositeState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3D' + name = 'CompanyViewUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3E' + name = 'CompanyView' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C44'/> + <UML:Transition xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF1'/> + <UML:Transition xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF4'/> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C49'/> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4B'/> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4E'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C41'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:Pseudostate xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C40' + isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C41'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:SimpleState xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C42' + name = 'CompanyFormUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C44'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:FinalState xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF0' + name = 'finalState1' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF1'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:FinalState xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF3' + name = 'finalState2' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF4'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:SimpleState xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C48' + name = 'EmployeeFormUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C49'/> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4B'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4D' + name = 'CompanyViewUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4E'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + <UML:CompositeState xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C01' + name = 'EmployeeFormUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:Pseudostate xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C02' + name = 'initEmployeeFormUC' isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C04'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:SimpleState xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C03' + name = 'EmployeeForm' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C07'/> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C08'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C04'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:FinalState xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C05' + name = 'finalState1' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C07'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:FinalState xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C06' + name = 'finalState2' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C08'/> + </UML:StateVertex.incoming> + </UML:FinalState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + <UML:CompositeState xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C0E' + name = 'EquipmentListUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:Pseudostate xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C0F' + name = 'initEquipmentList' isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C11'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:SimpleState xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C10' + name = 'EquipmentList' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C16'/> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1B'/> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1E'/> + <UML:Transition xmi.idref = '0-0-7--64--2d98ee8d:11487a8e532:-8000:0000000000000C20'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C11'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:FinalState xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C15' + name = 'finalState2' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C16'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:SimpleState xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1A' + name = 'EquipmentFormUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1B'/> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1E'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:SimpleState xmi.id = '0-0-7--64--2d98ee8d:11487a8e532:-8000:0000000000000C1F' + name = 'EquipmentListUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--2d98ee8d:11487a8e532:-8000:0000000000000C20'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + <UML:CompositeState xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C20' + name = 'EquipmentFormUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:SimpleState xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C21' + name = 'EquipmentForm' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C25'/> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C27'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C23'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:Pseudostate xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C22' + name = 'initEquipmentFormUC' isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C23'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:FinalState xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C24' + name = 'finalState1' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C25'/> + </UML:StateVertex.incoming> + </UML:FinalState> + <UML:FinalState xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C26' + name = 'finalSate2' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C27'/> + </UML:StateVertex.incoming> + </UML:FinalState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + </UML:StateMachine.top> + <UML:StateMachine.transitions> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001754' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001753'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001752'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C09' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C08'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C15' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C16'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C14'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C1C' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C1D'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C17'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C24' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C21'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C22'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C27' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C28'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C22'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C25'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C29' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C2A'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C22'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C26'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C32' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C31'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C2C'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C41' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C40'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3E'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C44' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C45'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3E'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C42'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4F' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4A'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4B'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C50' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C51'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4B'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4C'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C52' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C53'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4B'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4E'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C5B' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C5C'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4B'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C4D'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BEE' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BEF'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C2C'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BED'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF1' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF2'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3E'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF0'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF4' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF5'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3E'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF3'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BEF' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF0'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001752'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BEE'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF2' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF3'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF1'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF5' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF6'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF4'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64-1996484f:1146e26e932:-8000:0000000000001169' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64-1996484f:1146e26e932:-8000:000000000000116A'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C2C'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64-1996484f:1146e26e932:-8000:0000000000000BF2'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64-1996484f:1146e26e932:-8000:000000000000116B' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64-1996484f:1146e26e932:-8000:000000000000116C'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001752'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64-1996484f:1146e26e932:-8000:0000000000000BF8'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C04' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C02'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C03'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C07' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C09'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C03'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C05'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C08' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C0A'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C03'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C06'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C13' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C14'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C12'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C1B' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C1C'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C12'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C11' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C0F'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C10'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C16' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C17'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C10'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C15'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1B' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1D'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C10'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1A'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1E' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1F'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C10'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1A'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C23' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C22'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C21'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C25' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C29'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C21'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C24'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C27' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C28'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C21'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C26'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--2d98ee8d:11487a8e532:-8000:0000000000000C20' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--2d98ee8d:11487a8e532:-8000:0000000000000C21'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C10'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--2d98ee8d:11487a8e532:-8000:0000000000000C1F'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C1C' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C1D'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C07'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C1B'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C49' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4A'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3E'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C48'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4B' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4C'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3E'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C48'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4E' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4F'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3E'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4D'/> + </UML:Transition.target> + </UML:Transition> + </UML:StateMachine.transitions> + </UML:StateMachine> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C16' + name = 'edit' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C1D' + name = 'list' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C28' + name = 'new' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C2A' + name = 'view' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C3B' + name = 'viewEmp' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C45' + name = 'edit' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C51' + name = 'new' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C53' + name = 'view' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C55' + name = 'del_empl' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C57' + name = 'del_serv' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C5A' + name = 'del_equi' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000002C5C' + name = 'delete' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BEF' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF2' + name = 'delete' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64-3e3c784:1144b6e7c49:-8000:0000000000000BF5' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF0' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF3' + name = 'delete' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64-3cd6a392:1144eef99d1:-8000:0000000000000BF6' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64-1996484f:1146e26e932:-8000:000000000000116A' + name = 'store' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64-1996484f:1146e26e932:-8000:000000000000116C' + name = 'store' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C09' + name = 'store' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C0A' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C11' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C14' + name = 'newEmp' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C17' + name = 'delete' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C1A' + name = 'edit' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--694f5042:11473175429:-8000:0000000000000C1C' + name = 'editEmp' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C17' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1C' + name = 'new' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1D' + name = 'new' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C1F' + name = 'edit' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C28' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--2647f476:11483471d96:-8000:0000000000000C29' + name = 'store' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--2d98ee8d:11487a8e532:-8000:0000000000000C1E' + name = 'delete' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--2d98ee8d:11487a8e532:-8000:0000000000000C21' + name = 'delete' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C1D' + name = 'deleteEmp' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C24' + name = 'store' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C26' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4A' + name = 'newEmp' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4C' + name = 'editEmp' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C4F' + name = 'deleteEmp' isSpecification = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C2E' + name = 'home' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:StateMachine xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C31' + name = 'home' isSpecification = 'false'> + <UML:StateMachine.top> + <UML:CompositeState xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C32' + name = 'top' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:CompositeState xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C33' + name = 'LoginFormUC' isSpecification = 'false' isConcurrent = 'false'> + <UML:CompositeState.subvertex> + <UML:SimpleState xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C34' + name = 'LoginForm' isSpecification = 'false'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C3C'/> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C46'/> + </UML:StateVertex.outgoing> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C36'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:Pseudostate xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C35' + name = 'init' isSpecification = 'false' kind = 'initial'> + <UML:StateVertex.outgoing> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C36'/> + </UML:StateVertex.outgoing> + </UML:Pseudostate> + <UML:SimpleState xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C3B' + name = 'LoginFormUC' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C'/> + </UML:ModelElement.stereotype> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C3C'/> + </UML:StateVertex.incoming> + </UML:SimpleState> + <UML:FinalState xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C45' + name = 'final' isSpecification = 'false'> + <UML:StateVertex.incoming> + <UML:Transition xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C46'/> + </UML:StateVertex.incoming> + </UML:FinalState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + </UML:CompositeState.subvertex> + </UML:CompositeState> + </UML:StateMachine.top> + <UML:StateMachine.transitions> + <UML:Transition xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C36' + isSpecification = 'false'> + <UML:Transition.source> + <UML:Pseudostate xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C35'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C34'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C3C' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C3D'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C34'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:SimpleState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C3B'/> + </UML:Transition.target> + </UML:Transition> + <UML:Transition xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C46' + isSpecification = 'false'> + <UML:Transition.trigger> + <UML:SignalEvent xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C47'/> + </UML:Transition.trigger> + <UML:Transition.source> + <UML:SimpleState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C34'/> + </UML:Transition.source> + <UML:Transition.target> + <UML:FinalState xmi.idref = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C45'/> + </UML:Transition.target> + </UML:Transition> + </UML:StateMachine.transitions> + </UML:StateMachine> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C3D' + name = 'cancel' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C3E' + name = 'identify' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C41' + name = 'identify' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C44' + name = 'identify' isSpecification = 'false'/> + <UML:SignalEvent xmi.id = '0-0-7--64--6a2dd9e:11492cd88b9:-8000:0000000000000C47' + name = 'identify' isSpecification = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '.:0000000000000B00' name = 'topia' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Signal xmi.id = '.:0000000000000AFF' name = 'TopiaException' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = '.:0000000000000B03' name = 'entity' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:DataType xmi.id = '.:0000000000000B04' name = 'int' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Package xmi.id = '.:0000000000000B0E' name = 'java' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '.:0000000000000B07' name = 'lang' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000B05' name = 'String' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000B06' name = 'Long' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B31' + name = 'Integer' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B33' + name = 'Object' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B36' + name = 'Short' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '0-0-7--64-331ef4c5:112e73ddddd:-8000:0000000000000BA7' + name = 'Byte' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C0C' + name = 'Char' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '.:0000000000000B09' name = 'net' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000B08' name = 'URL' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '.:0000000000000B0D' name = 'util' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000B0A' name = 'Date' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Interface xmi.id = '.:0000000000000B0B' name = 'Collection' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '.:0000000000000B0C' name = 'List' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B32' + name = 'Iterator' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B34' + name = 'Set' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B37' + name = 'SortedSet' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Class xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B38' + name = 'Time' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B39' + name = 'Vector' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--15ccc0b8:112d43d7bb1:-8000:0000000000000B56' + name = 'List<org.codelutin.chorem.entities.crm.Person>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--15ccc0b8:112d43d7bb1:-8000:0000000000000B57' + name = 'List<org.codelutin.chorem.entities.event.Event>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--15ccc0b8:112d43d7bb1:-8000:0000000000000B58' + name = 'List<org.codelutin.chorem.entities.crm.Employee>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-5221f69d:112e42d0a36:-8000:0000000000000B92' + name = 'List<org.codelutin.chorem.entities.crm.Company>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-5221f69d:112e42d0a36:-8000:0000000000000B9F' + name = 'List<org.codelutin.chorem.entities.crm.Service>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-5221f69d:112e42d0a36:-8000:0000000000000BA0' + name = 'List<org.codelutin.chorem.entities.event.Repetition>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C22' + name = 'List<org.codelutin.chorem.entities.crm.Contact>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C28' + name = 'List<org.codelutin.chorem.entities.event.Leave>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C29' + name = 'List<org.codelutin.chorem.entities.event.Meeting>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C30' + name = 'List<org.codelutin.chorem.entities.event.Motif>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C35' + name = 'List<org.codelutin.chorem.entities.event.Notification>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C3C' + name = 'List<org.codelutin.chorem.entities.event.Repetition>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-47f4991:112fb164651:-8000:0000000000000C7B' + name = 'List<org.codelutin.chorem.entities.projectManagement.Dependance>' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-47f4991:112fb164651:-8000:0000000000000C8E' + name = 'List<org.codelutin.chorem.entities.projectManagement.Milestone>' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64-47f4991:112fb164651:-8000:0000000000000C98' + name = 'List<org.codelutin.chorem.entities.projectManagement.RealCase>' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--5b869e54:1130013df08:-8000:0000000000000C8D' + name = 'List<org.codelutin.chorem.entities.crm.Contract>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--5b869e54:1130013df08:-8000:0000000000000C8E' + name = 'List<org.codelutin.chorem.entities.crm.Equipment>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--5b869e54:1130013df08:-8000:0000000000000C8F' + name = 'List<org.codelutin.chorem.entities.crm.Relation>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--5b869e54:1130013df08:-8000:0000000000000C90' + name = 'List<org.codelutin.chorem.entities.crm.Role>' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '0-0-7--64--5291582e:1136c5904b5:-8000:0000000000000B9C' + name = 'Map' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C0A' + name = 'math' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C0B' + name = 'BigDecimal' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C40' + name = 'BigInteger' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:DataType xmi.id = '.:0000000000000B0F' name = 'void' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:0000000000000B10' name = 'long' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:0000000000000B11' name = 'boolean' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:0000000000000B12' name = 'double' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:0000000000000B13' name = 'float' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Stereotype xmi.id = '.:0000000000000B14' name = 'entity' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Interface</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '-64--88-99-15-199e45b9:1127766b78d:-8000:0000000000000B25' + name = 'service' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Interface</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:DataType xmi.id = '0-0-7--64--d7eec70:11291bf20af:-8000:0000000000000B35' + name = 'short' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:DataType xmi.id = '0-0-7--64-3802755:112f6a40105:-8000:0000000000000C09' + name = 'char' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:TagDefinition xmi.id = '0-0-7--64-47f4991:112fb164651:-8000:0000000000000C5F' + name = 'documentation' isSpecification = 'false' tagType = 'String'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = '0-0-7--64-47f4991:112fb164651:-8000:0000000000000C61'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '0-0-7--64-47f4991:112fb164651:-8000:0000000000000C60' + lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:DataType xmi.id = '0-0-7--64-47f4991:112fb164651:-8000:0000000000000C6C' + name = 'byte' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Stereotype xmi.id = '0-0-7--64--e0673c0:1132958c584:-8000:0000000000001183' + name = 'dao' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Interface</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '0-0-7--64--30a053f6:11440bc05e2:-8000:0000000000001C7C' + name = 'UseCase' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>SimpleState</UML:Stereotype.baseClass> + <UML:Stereotype.baseClass>Model</UML:Stereotype.baseClass> + </UML:Stereotype> + </UML:Namespace.ownedElement> + </UML:Model> + <UML:A_context_raisedSignal> + <UML:Operation xmi.idref = '.:0000000000000996'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000A38'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000999'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000A34'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000993'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:000000000000097F'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:00000000000009A1'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000AC8'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:000000000000099D'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:00000000000009A7'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000A29'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000A21'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000AC3'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000AC1'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000982'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:00000000000009A4'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000ABF'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:000000000000098F'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:0000000000000A2D'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + <UML:Operation xmi.idref = '.:00000000000009AA'/> + <UML:Signal xmi.idref = '.:0000000000000AFF'/> + </UML:A_context_raisedSignal> + </XMI.content> +</XMI> diff --git a/eugene-demo/sample-lutingen-demo-files/_statics/IsisFish/model-file b/eugene-demo/sample-lutingen-demo-files/_statics/IsisFish/model-file new file mode 100644 index 0000000..83c0086 --- /dev/null +++ b/eugene-demo/sample-lutingen-demo-files/_statics/IsisFish/model-file @@ -0,0 +1,4336 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Wed Apr 25 10:22:41 CEST 2007'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>0.20.x</XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = 'Im75a362c1m1095378ef06mm7a57' name = 'IsisFish' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7f51' isSpecification = 'false'> + <UML:TaggedValue.dataValue>0</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aa7'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7b03' name = 'fr.ifremer.isisfish.entities' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7f3f' name = 'Port' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f4d' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f49' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7f45' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7f47' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7f41' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7f43' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7f45'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7f29' name = 'Cell' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7f3d' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Représente le plus petit élément géographique de la région. Plusieurs Mesh composé constitues une Zone.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f3b' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f39' name = 'latitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f37' name = 'longitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f35' name = 'land' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f33' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' ordering = 'unordered'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7f2f' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7f31' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7f2b' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7f2d' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7f2f'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7f15' name = 'TripType' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f25' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f23' name = 'tripDuration' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a87'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f21' name = 'minTimeBetweenTrip' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a87'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f1f' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7f1b' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7f1d' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7f17' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7f19' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7f1b'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ef7' name = 'VesselType' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f13' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f11' name = 'length' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f0f' name = 'speed' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f0d' name = 'maxTripDuration' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a87'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f0b' name = 'activityRange' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f07' name = 'minCrewSize' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7f09' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Taille minimum de l'équipage sur ce style de bateau</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f03' name = 'unitFuelCostOfTravel' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7f05' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coût d'un heure de carburant</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f01' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7efd' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7eff' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7ef9' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7efb' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7efd'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7edd' name = 'SetOfVessels' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ef5' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ef3' name = 'numberOfVessels' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eef' name = 'fixedCosts' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7ef1' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coûts fixes décaissés</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eed' name = 'vesselCosts' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eeb' name = 'capitalDeprecation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ee9' name = 'interestCost' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ee7' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7ee3' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ee5' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7edf' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7ee1' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7ee3'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7ecf' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7ed7' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7ed9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7edb' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7edd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7ed1' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7ed3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7ed5' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f3f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ebd' name = 'Metier' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ecd' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ecb' name = 'gearParameterValue' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ec9' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ec7' name = 'capturableSpeciesComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7ec3' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ec5' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7ebf' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7ec1' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7ec3'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm67cb' name = 'getMetierSeasonInfo' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm67b3' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm67b2' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm67c9' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm67ca' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm67cb'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I44e09810m10d85da62cemm67b3' name = 'getGearParameterValueAsDouble' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I44e09810m10d85da62cemm679b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I44e09810m10d85da62cemm67b1' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I44e09810m10d85da62cemm67b2' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I44e09810m10d85da62cemm67b3'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ea5' name = 'Gear' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ebb' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eb9' name = 'effortUnit' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eb7' name = 'standardisationFactor' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eb5' name = 'parameterName' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eb1' name = 'cost' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7eb3' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coût d'achat de l'engin</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm6903' name = 'possibleValue' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im7ac2ea13m109d5712258mm6967'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eaf' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7eab' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ead' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7ea7' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7ea9' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7eab'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7e97' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7e9f' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7ea1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7ea3' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7e99' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7e9b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7e9d' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ea5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7e17' name = 'FisheryRegion' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7e95' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Area represente la région dans lequel on va définir la pêcherie. Les objets de la pêcherie n'ont plus de lien vers elle, car il n'y en existe qu'une seul dans chaque pêcherie.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e93' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e91' name = 'minLongitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e8f' name = 'maxLongitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e8d' name = 'minLatitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e8b' name = 'maxLatitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e89' name = 'cellLengthLongitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e87' name = 'cellLengthLatitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e85' name = 'mapFiles' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e81' name = 'getMapFileList' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e83' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e7d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e7f' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e81'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e77' name = 'setMapFileList' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e7b' name = 'v' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad7'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e79' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7aff'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e73' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e75' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e77'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e6f' name = 'getMapFilePath' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e71' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e6b' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e6d' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e6f'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e69' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e65' name = 'getGear' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e67' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7acf'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e61' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e63' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e65'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e5d' name = 'getCell' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e5f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e59' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e5b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e5d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e55' name = 'getTripType' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e57' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7acb'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e51' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e53' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e55'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e4d' name = 'getVesselType' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e4f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e49' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e4b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e4d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e45' name = 'getSpecies' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e47' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac3'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e41' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e43' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e45'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e3d' name = 'getZone' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e3f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad3'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e39' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e3b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e3d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e35' name = 'getStrategy' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e37' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e31' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e33' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e35'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e2d' name = 'getPort' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e2f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad1'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e29' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e2b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e2d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e25' name = 'getMetier' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e27' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7acd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e21' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e23' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e25'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e1d' name = 'getSetOfVessels' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e1f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e19' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e1b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e1d'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7e09' name = 'possibleTripTypes' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7e11' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm6994'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm6993' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ef7'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7e0b' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7e0d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7e0f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f15'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7dc1' name = 'Population' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e05' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7df1' name = 'geographicId' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7def' name = 'plusGroup' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e03' name = 'growth' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e01' name = 'growthReverse' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ded' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7df3' name = 'meanWeight' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7df5' name = 'price' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7df7' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Le prix en Kg</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm6879' name = 'naturalDeathRate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7deb' name = 'caractBioComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7df9' name = 'reproductionEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7dfd' name = 'monthGapBetweenReproRecrutement' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7dfb' name = 'recruitmentDistribution' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de5' name = 'recruitmentComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de9' name = 'zonesComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de7' name = 'seasonsComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de3' name = 'capturabilityComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de1' name = 'migrationComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7ddb' name = 'getPopulationSeasonInfo' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ddf' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ddd' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c73'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7dd7' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7dd9' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7ddb'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7dd1' name = 'N2DToN1D' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7dd5' name = 'm' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7dd3' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7dcd' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7dcf' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7dd1'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7dc7' name = 'split2D' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7dcb' name = 'm' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7dc9' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7dc3' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7dc5' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7dc7'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm6868' name = 'getNaturalDeathBirth' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im1b146941m10d30239e16mm689c' name = 'zone' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im1b146941m10d30239e16mm689b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm6866' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm6867' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm6868'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im1db15ae1m109f9a23092mm696c' name = 'getAge' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm6867' name = 'length' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm6866' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm6865' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im1db15ae1m109f9a23092mm696a' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im1db15ae1m109f9a23092mm696b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im1db15ae1m109f9a23092mm696c'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im1db15ae1m109f9a23092mm6947' name = 'getLength' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm68b8' name = 'age' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm68b7' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm68b6' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im1db15ae1m109f9a23092mm6945' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im1db15ae1m109f9a23092mm6946' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im1db15ae1m109f9a23092mm6947'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm6911' name = 'mappingZoneReproZoneRecru' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm65b3' name = 'capturability' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:AssociationClass xmi.id = 'Im75a362c1m1095378ef06mm7da3' name = 'Selectivity' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7dbb' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7dbd'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7dbf' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7db5' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm6984'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm6983' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ea5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7db3' name = 'equation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7da9' name = 'getCoefficient' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6891' name = 'pop' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6890' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm688f' name = 'metier' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm688e' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7da5' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7da7' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7da9'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7d71' name = 'PopulationGroup' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7da1' name = 'id' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d99' name = 'reproductionRate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d9b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Le taux de fécondité pour le group</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7d7d' name = 'getLength' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im7ac2ea13m109d5712258mm67eb' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7d79' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7d7b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7d7d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm68c3' name = 'getNaturalDeathRate' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6641' name = 'zone' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6640' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm68c1' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm68c2' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm68c3'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm689e' name = 'getMeanWeight' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im7ac2ea13m109d5712258mm6886' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm689c' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm689d' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm689e'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm6843' name = 'getPrice' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im7ac2ea13m109d5712258mm682b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm6841' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm6842' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm6843'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm681e' name = 'age' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm680d' name = 'minLength' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm67fc' name = 'maxLength' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d73' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'I7cd3ef46m10c166d0777mm6957' name = 'isInLength' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I7cd3ef46m10c166d0777mm693f' name = 'length' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I7cd3ef46m10c166d0777mm693e' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I7cd3ef46m10c166d0777mm6955' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I7cd3ef46m10c166d0777mm6956' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I7cd3ef46m10c166d0777mm6957'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7d63' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d6b' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7d6d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7d6f' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d65' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7d67'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7d69' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'I4b51df9bm109d715de8dmm6966' isSpecification = 'false'> + <UML:TaggedValue.dataValue>id</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'I6fd0e703m109cdb8199dmm6963'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7d4d' name = 'Species' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d61' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d5f' name = 'scientificName' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d5d' name = 'codeRubbin' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d5b' name = 'codeCEE' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d59' name = 'ageGroupType' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d57' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7d53' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7d55' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7d4f' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7d51' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7d53'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:AssociationClass xmi.id = 'Im75a362c1m1095378ef06mm7d29' name = 'TargetSpecies' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d37' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7d39'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7d3b' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d31' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7d33'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7d35' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d4d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d2f' name = 'targetFactorEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d2b' name = 'primaryCatch' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d2d' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Vrai si la MetaPopulation est une espèce visée prioritairement</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm6711' name = 'getTargetFactor' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6691' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6690' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm670f' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm6710' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm6711'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:AssociationClass xmi.id = 'Im75a362c1m1095378ef06mm7cf5' name = 'EffortDescription' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d23' name = 'possibleMetiers' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-118--5a094e24:10f38b38caf:-8000:0000000000000AEB'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-118--5a094e24:10f38b38caf:-8000:0000000000000AEA' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d1d' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im4979ef54m10e614066ffmm676b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im4979ef54m10e614066ffmm676a' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7edd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d19' name = 'fishingOperation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d1b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Nombre d'opération de pêche par jour</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d17' name = 'fishingOperationDuration' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a87'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d15' name = 'gearsNumberPerOperation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d11' name = 'crewSize' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d13' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Taille de l'équipage pour le métier. Ne peut-être inférieur à VesselType.minCrewSize.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d0d' name = 'unitCostOfFishing' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d0f' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coût de fonctionnement lié à une opération de pêche: carburant, huile, appât, glace (hors transport sur zone)</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d09' name = 'fixedCrewSalary' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d0b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Salaire fixe pour l'ensemble de l'équipage pour un mois</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d05' name = 'crewShareRate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d07' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Taux de part de l'équipage</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d01' name = 'crewFoodCost' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d03' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Frais de vivres pour l'ensemble de l'équipage par jour.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cfd' name = 'repairAndMaintenanceGearCost' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7cff' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coût de maintenance et de réparation par jour d'utilisation</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cf9' name = 'otherRunningCost' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7cfb' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>autres coûts par jour</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cf7' name = 'landingCosts' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '-64--88-99-118--5a094e24:10f38b38caf:-8000:0000000000000AEC' + name = 'toString' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-118--5a094e24:10f38b38caf:-8000:0000000000000AED' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ce5' name = 'Strategy' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cf3' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cf1' name = 'proportionSetOfVessels' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cef' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7ceb' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ced' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7ce7' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7ce9' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7ceb'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm680b' name = 'getStrategyMonthInfo' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm67f3' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm67f2' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ca1'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm6809' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm680a' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm680b'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7cd7' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7cdf' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Ia3748d6m10e345e32d8mm676b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Ia3748d6m10e345e32d8mm676a' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ce5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7cd9' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7cdb'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7cdd' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7edd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7cb3' name = 'Result' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cc5' name = 'resultDate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' ordering = 'unordered'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7cc7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7cc9' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a9d'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cbd' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + ordering = 'unordered'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7cc1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7cc3' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7cbf' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Contient la description associé à un type.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cb5' name = 'matrix' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + ordering = 'unordered'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7cb9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7cbb' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7cb7' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>contient les matrices associées à chaque type de résultat. La cle est un type et la valeur une matrice</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7cad' name = 'Script' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cb1' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7caf' name = 'code' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ca1' name = 'StrategyMonthInfo' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ca9' name = 'month' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ca7' name = 'minInactivityDays' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ca3' name = 'numberOfTrips' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7ca5' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Nombre de Trip par mois. Le nombre de jour d'inactivite et le nombre la duree d'un trip doivent être cohérent pour le mois</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'I54a56778m10d5942be2amm67a0' name = 'proportionMetier' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'I54a56778m10d5942be2amm678f' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I54a56778m10d5942be2amm6777' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I54a56778m10d5942be2amm678d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I54a56778m10d5942be2amm678e' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I54a56778m10d5942be2amm678f'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I54a56778m10d5942be2amm676a' name = 'getProportionMetier' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I54a56778m10d5942be2amm6752' name = 'metier' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I54a56778m10d5942be2amm6751' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I54a56778m10d5942be2amm6768' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I54a56778m10d5942be2amm6769' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I54a56778m10d5942be2amm676a'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I750ca9dfm10dd42991bcmm679b' name = 'setProportionMetier' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I750ca9dfm10dd42991bcmm6783' name = 'metier' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I750ca9dfm10dd42991bcmm6782' name = 'prop' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I750ca9dfm10dd42991bcmm6781' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7aff'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I750ca9dfm10dd42991bcmm6799' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I750ca9dfm10dd42991bcmm679a' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I750ca9dfm10dd42991bcmm679b'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c93' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c9b' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c9d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c9f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ca1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c95' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c97'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c99' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f15'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7c8d' name = 'MetierSeasonInfo' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = 'Im75a362c1m1095378ef06mm7b07'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c91' name = 'seasonZoneComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c8f' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm66d1' name = 'getTargetFactor' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6669' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6668' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm66cf' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm66d0' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm66d1'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = '-64--88-99-118--523393cd:10f4d32d651:-8000:0000000000000AD6' + name = 'getCells' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-118--523393cd:10f4d32d651:-8000:0000000000000AD7' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7c73' name = 'PopulationSeasonInfo' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = 'Im75a362c1m1095378ef06mm7b05'/> + </UML:GeneralizableElement.generalization> + <UML:Namespace.ownedElement> + <UML:Actor xmi.id = 'Im75a362c1m1095378ef06mm7c8b' name = 'java.util.List<fr.ifremer.types.Month>' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Actor xmi.id = 'Im75a362c1m1095378ef06mm7c89' name = 'java.util.List<fr.ifremer.isisfish.types.Month>' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c85' name = 'reproductionDistribution' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c87' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrice représentant la distribution de la reproduction sur les différents mois de la saison.</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c81' name = 'groupChange' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c83' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Si vrai alors la population change de groupe d'age ou de longueurs en debut de saison</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c7d' name = 'simpleLengthChangeMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c7f' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Indique si la matrice de changementde longeur est une matrice simple ou complexe</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c79' name = 'lengthChangeMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c7b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>La matrice de changement de longueur. Appliquable que si la MetaPopulation est en longueur. Cette matrice est [group x group] ou [ (group, zone) x ( group, zone)]</p> +<p></p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c75' name = 'reproduction' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c77' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Indique s'il y a de la reproduction durant la saison</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68ef' name = 'useEquationMigration' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68de' name = 'migrationMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d4' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [group x zone(left) x zone(reached)]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68cd' name = 'emigrationMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d3' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [group x zone(left)]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68bc' name = 'immigrationMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d2' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [group x zone(reached)]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68ab' name = 'migrationEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm689a' name = 'emigrationEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm6889' name = 'immigrationEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm6878' name = 'getCapturability' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6860' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm685f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm6876' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm6877' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm6878'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm6838' name = 'spacializeLengthChangeMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6813' name = 'mat' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6812' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm6836' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm6837' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm6838'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm67eb' name = 'computeLengthChangeMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm67d3' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm67e9' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm67ea' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm67eb'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm67c6' name = 'getGroupChangeMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6666' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6665' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm67c4' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm67c5' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm67c6'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm67a1' name = 'getMigrationMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d1' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [(group, zone(left)) x (group, zone(reached))]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6789' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6788' name = 'N' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6787' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm679f' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm67a0' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm67a1'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm6738' name = 'getEmigrationMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d0' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [(group, zone(left)) x (group, zone(left))]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6720' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm671f' name = 'N' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm671e' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm6736' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm6737' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm6738'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm66cf' name = 'getImmigrationMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65cf' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [(group, zone(reached)) x (group, zone(reached))]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm66b7' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm66b6' name = 'N' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm66b5' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm66cd' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm66ce' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm66cf'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm663e' name = 'getReproductionMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65ce' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [zone(repro)]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6626' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6625' name = 'N' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6624' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm663c' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm663d' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm663e'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I3988abbcm10c212fd60fmm6934' name = 'unspacializeLengthChangeMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I3988abbcm10c212fd60fmm691c' name = 'mat' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I3988abbcm10c212fd60fmm691b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I3988abbcm10c212fd60fmm6932' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I3988abbcm10c212fd60fmm6933' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I3988abbcm10c212fd60fmm6934'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c65' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c6d' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c6f'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c71' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c67' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c69'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c6b' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'I4b51df9bm109d715de8dmm6962' isSpecification = 'false'> + <UML:TaggedValue.dataValue>firstMonth, lastMonth</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'I6fd0e703m109cdb8199dmm6963'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c73'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c49' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c51' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c53'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c55' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d4d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c4b' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c4d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c4f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c3b' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c43' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c45'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c47' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c3d' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c3f'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c41' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'I6fd0e703m109cdb8199dmm695f' isSpecification = 'false'> + <UML:TaggedValue.dataValue>firstMonth, lastMonth</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'I6fd0e703m109cdb8199dmm6963'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c1f' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c27' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c29'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c2b' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7edd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c21' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c23'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c25' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ef7'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7b9b' name = 'ExportScript' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7b9f' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7b9d' name = 'code' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7b25' name = 'Season' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7b35' name = 'getMonths' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7b37' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac1'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7b31' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7b33' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7b35'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7b2b' name = 'setMonths' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7b2f' name = 'listMonth' + isSpecification = 'false' kind = 'in'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac1'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7b2d' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7aff'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7b27' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7b29' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7b2b'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm678b' name = 'containsMonth' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm675f' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm675e' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm6789' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm678a' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm678b'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b17' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b1f' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b21'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b23' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7b25'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b19' name = 'firstMonth' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b1b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b1d' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b09' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b11' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b13'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b15' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7b25'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b0b' name = 'lastMonth' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b0d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b0f' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Generalization xmi.id = 'Im75a362c1m1095378ef06mm7b07' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7b25'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = 'Im75a362c1m1095378ef06mm7b05' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7b25'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm539f' name = 'Zone' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm538c' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm537b' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm536a' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5352' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm5368' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm5369' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm536a'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b8d' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b95' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b97'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b99' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b8f' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b91'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b93' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f29'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b7f' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b87' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm6992'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm6991' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b81' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b83'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b85' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b55' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b5d' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm6990'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm698f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b57' name = 'reproductionZone' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b59'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b5b' lower = '1' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b39' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b41' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm698c'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm698b' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b3b' name = 'populationZone' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b3d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b3f' lower = '1' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b47' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b4f' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm698e'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm698d' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b49' name = 'recruitmentZone' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b4b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b4d' lower = '1' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a63' name = 'Equation' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Abstraction xmi.idref = 'Im75a362c1m1095378ef06mm52a8'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Namespace.ownedElement> + <UML:Actor xmi.id = 'I3988abbcm10c212fd60fmm68bc' name = 'java.lang.Class' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a71' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a6f' name = 'content' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a69' name = 'evaluate' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a6d' name = 'param' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm50c8'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a6b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a65' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a67' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a69'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm5220' name = 'category' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm520f' name = 'evaluate' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5164' name = 'name' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5163' name = 'value' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aeb'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5162' name = '... others' + isSpecification = 'false' kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aeb'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5161' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm520d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm520e' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm520f'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'I3988abbcm10c212fd60fmm68df' name = 'language' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'I3988abbcm10c212fd60fmm68ce' name = 'javaInterface' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'I3988abbcm10c212fd60fmm68bb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm52bd' name = 'Formule' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Classifier.feature> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm528f' name = 'getName' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5277' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm528d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm528e' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm528f'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm526a' name = 'getCategory' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5252' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm5268' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm5269' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm526a'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm5245' name = 'getContent' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm522d' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm5243' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm5244' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm5245'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Interface> + <UML:Abstraction xmi.id = 'Im75a362c1m1095378ef06mm52a8' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7ab5'/> + </UML:ModelElement.stereotype> + <UML:Dependency.client> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm52bd'/> + </UML:Dependency.supplier> + </UML:Abstraction> + <UML:Association xmi.id = 'I4b51df9bm109d715de8dmm6983' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'I4b51df9bm109d715de8dmm6989' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I4b51df9bm109d715de8dmm6987'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I4b51df9bm109d715de8dmm6988' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'I4b51df9bm109d715de8dmm6986' name = 'maturityGroup' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I4b51df9bm109d715de8dmm6984'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I4b51df9bm109d715de8dmm6985' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im1b146941m10d30239e16mm68ec' name = 'ActiveRule' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im1b146941m10d30239e16mm68d9' name = 'activeRuleDate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a9d'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im1b146941m10d30239e16mm68c8' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im1b146941m10d30239e16mm68b7' name = 'param' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c2d' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c35' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c37'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c39' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ce5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c2f' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c31'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c33' lower = '12' + upper = '12'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'I4b51df9bm109d715de8dmm6937' isSpecification = 'false'> + <UML:TaggedValue.dataValue>month</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'I6fd0e703m109cdb8199dmm6963'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ca1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im3c914382m10e6301c457mm6742' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im3c914382m10e6301c457mm6748' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im3c914382m10e6301c457mm6725'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im3c914382m10e6301c457mm6724' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f3f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im3c914382m10e6301c457mm6745' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im3c914382m10e6301c457mm6743'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im3c914382m10e6301c457mm6744' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f29'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-118--523393cd:10f4d32d651:-8000:0000000000000AD8' + name = 'Set<Cell>' visibility = 'public' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7ab7' name = 'java' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7ae7' name = 'lang' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7b01' name = 'int' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7aff' name = 'void' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7afd' name = 'String' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7afb' name = 'float' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7af9' name = 'double' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7af7' name = 'boolean' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7af5' name = 'int[]' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7af3' name = 'double[]' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7af1' name = 'String[]' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7aef' name = 'Double' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7aed' name = 'Integer' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7aeb' name = 'Object' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ae9' name = 'Exception' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:Namespace.ownedElement> + <UML:Exception xmi.id = 'Im75a362c1m1095378ef06mm52cf' name = 'exception' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Class> + <UML:Class xmi.id = 'I3988abbcm10c212fd60fmm68bb' name = 'Class' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7abd' name = 'util' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ae5' name = 'Collection' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ae3' name = 'Hashtable' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ae1' name = 'HashMap' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7adf' name = 'Set' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7add' name = 'Map' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7adb' name = 'List' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ad9' name = 'Date' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ad7' name = 'List<String>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ad5' name = 'List<Cell>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ad3' name = 'List<Zone>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ad1' name = 'List<Port>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7acf' name = 'List<Gear>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7acd' name = 'List<Metier>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7acb' name = 'List<TripType>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac9' name = 'List<VesselType>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac7' name = 'List<SetOfVessels>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac5' name = 'List<Strategy>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac3' name = 'List<Species>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac1' name = 'List<fr.ifremer.isisfish.types.Month>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7abf' name = 'List<ManagementRuleParameter>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm50c8' name = 'Map<String, Object>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7ab9' name = 'util' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7abb' name = 'ArrayList' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = 'Im75a362c1m1095378ef06mm7ab5' name = 'realize' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:TagDefinition xmi.id = 'Im75a362c1m1095378ef06mm7aaf' name = 'documentation' + isSpecification = 'false' tagType = 'String'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7ab1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7ab3' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7aad' name = 'List[]' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:TagDefinition xmi.id = 'Im75a362c1m1095378ef06mm7aa7' name = 'version' + isSpecification = 'false'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7aa9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7aab' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7aa3' name = 'org.codelutin.math.matrix' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7aa5' name = 'MatrixND' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = 'Im75a362c1m1095378ef06mm7aa1' name = 'ordered' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7a61' name = 'fr.ifremer.isisfish.types' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a9d' name = 'Date' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a9f' name = 'date' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a87' name = 'TimeUnit' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a99' name = 'time' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7a9b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>temps stoké en seconde</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a95' name = 'getHour' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a97' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a91' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a93' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a95'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a8d' name = 'getDay' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a8f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a89' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a8b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a8d'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a73' name = 'Month' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a85' name = 'monthNumber' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a81' name = 'next' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a83' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a7d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a7f' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a81'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a79' name = 'previous' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a7b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a75' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a77' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a79'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im7ac2ea13m109d5712258mm6967' name = 'RangeOfValues' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm694a' name = 'type' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm6939' name = 'values' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm6928' name = 'getPossibleValues' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im7ac2ea13m109d5712258mm6910' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7adb'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm6926' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm6927' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm6928'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = 'Im75a362c1m1095378ef06mm7a5f' name = 'entity' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7a59' name = 'fr.ifremer.isisfish' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a5b' name = 'IsisFishException' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:Namespace.ownedElement> + <UML:Exception xmi.id = 'Im75a362c1m1095378ef06mm7a5d' name = 'exception' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:TagDefinition xmi.id = 'I6fd0e703m109cdb8199dmm6963' name = 'order-by' + isSpecification = 'false'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = 'I6fd0e703m109cdb8199dmm6962'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I6fd0e703m109cdb8199dmm6961' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:Stereotype xmi.id = 'I4b51df9bm109d715de8dmm6960' name = 'indexed' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + </UML:Namespace.ownedElement> + </UML:Model> + <UML:A_context_raisedSignal> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7da9'/> + <UML:Exception xmi.idref = 'Im75a362c1m1095378ef06mm7a5d'/> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e65'/> + <UML:Exception xmi.idref = 'Im75a362c1m1095378ef06mm52cf'/> + </UML:A_context_raisedSignal> + </XMI.content> +</XMI> diff --git a/eugene-demo/sample-lutingen-demo-files/_statics/Test topia2/model-file b/eugene-demo/sample-lutingen-demo-files/_statics/Test topia2/model-file new file mode 100644 index 0000000..3e83f5d --- /dev/null +++ b/eugene-demo/sample-lutingen-demo-files/_statics/Test topia2/model-file @@ -0,0 +1,3523 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' xmlns:UML2 = 'org.omg.xmi.namespace.UML2' + timestamp = 'Mon Jan 09 20:09:29 CET 2006'> + <XMI.header><XMI.documentation> + <XMI.exporter>Netbeans XMI Writer</XMI.exporter> + <XMI.exporterVersion>1.0</XMI.exporterVersion> + <XMI.metaModelVersion>1.4.2</XMI.metaModelVersion></XMI.documentation> + </XMI.header> + <XMI.content> + <UML:Model xmi.id = 'Iadf5bemfcc916e45dmm7f7f' name = 'topiatest' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Iadf5bemfcc916e45dmm7f7e' name = 'org' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Iadf5bemfcc916e45dmm7f7d' name = 'codelutin' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Iadf5bemfcc916e45dmm7f7c' name = 'topiatest' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Iadf5bemfcc916e45dmm7f7b' name = 'test1' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Iadf5bemfcc916e45dmm7ff3' name = 'Employee' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Iadf5bemfcc916e45dmm7fea'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Iadf5bemfcc916e45dmm7fdb' name = 'name' visibility = 'protected' + isSpecification = 'false' ownerScope = 'classifier' changeability = 'frozen'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7fd0'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Iadf5bemfcc916e45dmm7fc3' name = 'Company' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Iadf5bemfcc916e45dmm7fea'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Iadf5bemfcc916e45dmm7fac' name = 'name' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7fd0'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'I1ae939fmfcff785b10mm7ff8' name = 'entier' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Iadf5bemfcc916e45dmm7f78'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'I1ae939fmfcff785b10mm7fe9' name = 'reel' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'I1ae939fmfcff785b10mm7fde'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'I1a697a1mfcff8e7833mm7ff8' name = 'bool' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'I1a697a1mfcff8e7833mm7fed'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Iadf5bemfcc916e45dmm7f97' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Iadf5bemfcc916e45dmm7f94' visibility = 'protected' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I618b08m105aad09046mm7e1b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I618b08m105aad09046mm7e1a' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7ff3'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Iadf5bemfcc916e45dmm7f8b' name = '' visibility = 'protected' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I618b08m105aad09046mm7e1d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I618b08m105aad09046mm7e1c' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7fc3'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'I2c428a6am108b0716cf0mm7e10' name = 'Idea' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Iadf5bemfcc916e45dmm7fea'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'I2c428a6am108b0716cf0mm7db4' name = 'text' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7fd0'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:AssociationClass xmi.id = 'I2c428a6am108b0716cf0mm7ded' name = 'Vote' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Iadf5bemfcc916e45dmm7fea'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'I2c428a6am108b0716cf0mm7df3' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I2c428a6am108b0716cf0mm4720'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I2c428a6am108b0716cf0mm471f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7ff3'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'I2c428a6am108b0716cf0mm7df0' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I2c428a6am108b0716cf0mm7dee'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I2c428a6am108b0716cf0mm7def' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'I2c428a6am108b0716cf0mm7e10'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'I2c428a6am108b0716cf0mm471e' name = 'vote' visibility = 'protected' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'I1a697a1mfcff8e7833mm7fed'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:AssociationClass> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = 'I178920amfd7b205be8mm765a' name = 'test1' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'I178920amfd7b205be8mm765b' name = 'test1' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'I178920amfd7b205be8mm76d5' name = 'A' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = 'I178920amfd7b205be8mm766b'/> + </UML:GeneralizableElement.generalization> + </UML:Class> + <UML:Class xmi.id = 'I178920amfd7b205be8mm76c0' name = 'B' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = 'I178920amfd7b205be8mm7667'/> + </UML:GeneralizableElement.generalization> + </UML:Class> + <UML:Class xmi.id = 'I178920amfd7b205be8mm76ab' name = 'C' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = 'I178920amfd7b205be8mm7663'/> + </UML:GeneralizableElement.generalization> + </UML:Class> + <UML:Class xmi.id = 'I178920amfd7b205be8mm7696' name = 'D' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = 'I178920amfd7b205be8mm765f'/> + </UML:GeneralizableElement.generalization> + </UML:Class> + <UML:Class xmi.id = 'I178920amfd7b205be8mm7681' name = 'Parent' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + <UML:Generalization xmi.id = 'I178920amfd7b205be8mm766b' isSpecification = 'false' + discriminator = 'toto'> + <UML:Generalization.child> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm76d5'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm7681'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = 'I178920amfd7b205be8mm7667' isSpecification = 'false' + discriminator = 'toto'> + <UML:Generalization.child> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm76c0'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm7681'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = 'I178920amfd7b205be8mm7663' isSpecification = 'false' + discriminator = 'tata'> + <UML:Generalization.child> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm76ab'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm7681'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = 'I178920amfd7b205be8mm765f' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm7696'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm7681'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = 'Iadf5bemfcc916e45dmm7fea' name = 'entity' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = 'Iadf5bemfcc916e45dmm7f7a' name = 'java' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Iadf5bemfcc916e45dmm7f79' name = 'lang' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:DataType xmi.id = 'Iadf5bemfcc916e45dmm7f78' name = 'int' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Iadf5bemfcc916e45dmm7f77' name = 'void' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Iadf5bemfcc916e45dmm7fd0' name = 'String' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:DataType xmi.id = 'I1ae939fmfcff785b10mm7fde' name = 'float' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'I1a697a1mfcff8e7833mm7fed' name = 'boolean' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Model> + <UML:Diagram xmi.id = 'Iadf5bemfcc916e45dmm7ff7' isVisible = 'true' name = 'main' + zoom = '1.0'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>440.0</XMI.field> + <XMI.field>189.0</XMI.field> + </UML:GraphNode.size> + <UML:Diagram.viewport> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:Diagram.viewport> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7ff6' presentation = '' + typeInfo = 'ClassDiagram'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7ff5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>130.0</XMI.field> + <XMI.field>180.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>100.0</XMI.field> + <XMI.field>86.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7ff4' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7ff3'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7ff2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>34.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7ff1' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7ff0' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>13.4565</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>71.0869</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fef' presentation = '' + typeInfo = 'StereotypeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fee' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>17.4883</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fed' presentation = '' + typeInfo = 'StereotypeStart'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fec' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>20.4883</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.1104</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7feb' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Stereotype xmi.idref = 'Iadf5bemfcc916e45dmm7fea'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fe9' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.1104</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fe8' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fe7' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>53.5986</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>17.4883</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fe6' presentation = '' + typeInfo = 'StereotypeEnd'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fe5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>21.7659</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>54.4683</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fe4' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fe3' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>35.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fe2' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fe1' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>36.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fe0' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fdf' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fde' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fdd' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>90.0</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7fdc' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Attribute xmi.idref = 'Iadf5bemfcc916e45dmm7fdb'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fda' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9556</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fd9' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fd8' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.9556</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>29.2993</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fd7' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fd6' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>36.2549</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>3.4805</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fd5' presentation = '' + typeInfo = 'TypeSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fd4' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>39.7354</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fd3' presentation = '' + typeInfo = 'StructuralFeatureType'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fd2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7fd1' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7fd0'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fcf' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fce' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fcd' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>60.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fcc' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fcb' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>61.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fca' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fc9' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fc8' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'Iadf5bemfcc916e45dmm7fc7'> + <UML:GraphConnector.position> + <XMI.field>100.0</XMI.field> + <XMI.field>48.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'Iadf5bemfcc916e45dmm7fc6'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + <UML:GraphConnector xmi.id = 'I2c428a6am108b0716cf0mm7dec'> + <UML:GraphConnector.position> + <XMI.field>55.0</XMI.field> + <XMI.field>86.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I2c428a6am108b0716cf0mm7dea'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fc5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>410.0</XMI.field> + <XMI.field>180.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>100.0</XMI.field> + <XMI.field>129.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7fc4' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7fc3'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fc2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>34.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fc1' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fc0' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>13.4565</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>71.0869</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fbf' presentation = '' + typeInfo = 'StereotypeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fbe' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>17.4883</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fbd' presentation = '' + typeInfo = 'StereotypeStart'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fbc' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>20.4883</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.1104</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7fbb' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Stereotype xmi.idref = 'Iadf5bemfcc916e45dmm7fea'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fba' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.1104</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fb9' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fb8' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>53.5986</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>17.4883</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fb7' presentation = '' + typeInfo = 'StereotypeEnd'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fb6' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>22.5393</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>52.9214</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fb5' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fb4' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>35.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fb3' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fb2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>36.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>67.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fb1' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fb0' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>63.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7faf' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fae' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>90.0</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7fad' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Attribute xmi.idref = 'Iadf5bemfcc916e45dmm7fac'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fab' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9556</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7faa' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fa9' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.9556</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>29.2993</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fa8' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fa7' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>36.2549</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>3.4805</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fa6' presentation = '' + typeInfo = 'TypeSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fa5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>39.7354</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fa4' presentation = '' + typeInfo = 'StructuralFeatureType'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fa3' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7fa2' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7fd0'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7fa1' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7fa0' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7ffa' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>17.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>90.0</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I1ae939fmfcff785b10mm7ff9' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Attribute xmi.idref = 'I1ae939fmfcff785b10mm7ff8'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7ff7' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.3647</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7ff6' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7ff5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.3647</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.8784</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7ff4' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7ff3' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>37.2432</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>3.4805</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7ff2' presentation = '' + typeInfo = 'TypeSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7ff1' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>40.7236</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>14.1206</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7ff0' presentation = '' + typeInfo = 'StructuralFeatureType'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7fef' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>14.1206</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I1ae939fmfcff785b10mm7fee' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:DataType xmi.idref = 'Iadf5bemfcc916e45dmm7f78'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7fed' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>14.1206</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7fec' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7feb' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>32.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>90.0</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I1ae939fmfcff785b10mm7fea' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Attribute xmi.idref = 'I1ae939fmfcff785b10mm7fe9'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7fe8' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.3647</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7fe7' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7fe6' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.3647</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>19.9375</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7fe5' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7fe4' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>26.3022</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>3.4805</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7fe3' presentation = '' + typeInfo = 'TypeSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7fe2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>29.7827</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>24.1699</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7fe1' presentation = '' + typeInfo = 'StructuralFeatureType'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7fe0' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>24.1699</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I1ae939fmfcff785b10mm7fdf' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:DataType xmi.idref = 'I1ae939fmfcff785b10mm7fde'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1ae939fmfcff785b10mm7fdd' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>24.1699</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1ae939fmfcff785b10mm7fdc' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1a697a1mfcff8e7833mm7ffa' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>47.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>90.0</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I1a697a1mfcff8e7833mm7ff9' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Attribute xmi.idref = 'I1a697a1mfcff8e7833mm7ff8'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1a697a1mfcff8e7833mm7ff7' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.3647</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1a697a1mfcff8e7833mm7ff6' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1a697a1mfcff8e7833mm7ff5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.3647</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>23.6167</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1a697a1mfcff8e7833mm7ff4' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1a697a1mfcff8e7833mm7ff3' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>29.9814</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>3.4805</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1a697a1mfcff8e7833mm7ff2' presentation = '' + typeInfo = 'TypeSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I1a697a1mfcff8e7833mm7ff1' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>33.4619</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>42.6465</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1a697a1mfcff8e7833mm7ff0' presentation = '' + typeInfo = 'StructuralFeatureType'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1a697a1mfcff8e7833mm7fef' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>42.6465</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I1a697a1mfcff8e7833mm7fee' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:DataType xmi.idref = 'I1a697a1mfcff8e7833mm7fed'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I1a697a1mfcff8e7833mm7fec' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>42.6465</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I1a697a1mfcff8e7833mm7feb' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f9f' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>103.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f9e' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f9d' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>104.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f9c' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f9b' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f9a' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'Iadf5bemfcc916e45dmm7f99'> + <UML:GraphConnector.position> + <XMI.field>0.0</XMI.field> + <XMI.field>48.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'Iadf5bemfcc916e45dmm7fc6'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphEdge xmi.id = 'Iadf5bemfcc916e45dmm7fc6' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphEdge.waypoints> + <XMI.field> + <XMI.field>230.0</XMI.field> + <XMI.field>228.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>410.0</XMI.field> + <XMI.field>228.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + </UML:GraphEdge.waypoints> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7f98' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Association xmi.idref = 'Iadf5bemfcc916e45dmm7f97'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f96' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>230.0</XMI.field> + <XMI.field>228.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7f95' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:AssociationEnd xmi.idref = 'Iadf5bemfcc916e45dmm7f94'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f93' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>12.9904</XMI.field> + <XMI.field>3.5838</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>51.2617</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f92' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f91' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>4.0348</XMI.field> + <XMI.field>3.5838</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9556</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f90' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f8f' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>12.9904</XMI.field> + <XMI.field>-21.5</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>5.3013</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f8e' presentation = '' + typeInfo = 'Multiplicity'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f8d' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>410.0</XMI.field> + <XMI.field>228.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7f8c' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:AssociationEnd xmi.idref = 'Iadf5bemfcc916e45dmm7f8b'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f8a' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>-61.2228</XMI.field> + <XMI.field>-17.7723</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>48.2324</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f89' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f88' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>-70.1784</XMI.field> + <XMI.field>-17.7723</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9556</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f87' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f86' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>-19.946</XMI.field> + <XMI.field>7.5</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9556</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f85' presentation = '' + typeInfo = 'Multiplicity'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f84' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>279.0454</XMI.field> + <XMI.field>238.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>81.9092</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f83' presentation = '' + typeInfo = 'DirectedName'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'Iadf5bemfcc916e45dmm7f82' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>81.9092</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'Iadf5bemfcc916e45dmm7f81' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphEdge.anchor> + <UML:GraphConnector xmi.idref = 'Iadf5bemfcc916e45dmm7fc7'/> + <UML:GraphConnector xmi.idref = 'Iadf5bemfcc916e45dmm7f99'/> + </UML:GraphEdge.anchor> + </UML:GraphEdge> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e18' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>100.0</XMI.field> + <XMI.field>132.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>40.3506</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e17' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e16' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>4.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>26.3506</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e15' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e0f' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>140.0</XMI.field> + <XMI.field>450.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>100.0</XMI.field> + <XMI.field>86.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm7e0e' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'I2c428a6am108b0716cf0mm7e10'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e0d' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>34.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e0c' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dfd' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>13.4565</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>71.0869</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dfc' presentation = '' + typeInfo = 'StereotypeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dfb' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>17.4883</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dfa' presentation = '' + typeInfo = 'StereotypeStart'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7df9' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>20.4883</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.1104</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm7df8' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Stereotype xmi.idref = 'Iadf5bemfcc916e45dmm7fea'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7df7' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.1104</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7df6' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7df5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>53.5986</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>17.4883</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7df4' presentation = '' + typeInfo = 'StereotypeEnd'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e0b' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>37.0762</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>23.8477</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e0a' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e09' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>35.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e08' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e07' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>36.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e06' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e05' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e04' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7db3' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>90.0</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:DiagramElement.property> + <UML:Property xmi.id = 'I2c428a6am108b0716cf0mm7db1' key = 'gentleware-custom-width' + value = '0.0'/> + <UML:Property xmi.id = 'I2c428a6am108b0716cf0mm7db0' key = 'gentleware-custom-height' + value = '0.0'/> + </UML:DiagramElement.property> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm7db2' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Attribute xmi.idref = 'I2c428a6am108b0716cf0mm7db4'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7daf' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9556</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dae' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dad' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.9556</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>21.103</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dac' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dab' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>28.0586</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>3.4805</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7daa' presentation = '' + typeInfo = 'TypeSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7da9' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>31.5391</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7da8' presentation = '' + typeInfo = 'StructuralFeatureType'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7da7' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm7da6' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'Iadf5bemfcc916e45dmm7fd0'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7da5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>31.4048</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7da4' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e03' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>60.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e02' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e01' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>61.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e00' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dff' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dfe' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'I2c428a6am108b0716cf0mm7deb'> + <UML:GraphConnector.position> + <XMI.field>45.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I2c428a6am108b0716cf0mm7dea'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphEdge xmi.id = 'I2c428a6am108b0716cf0mm7dea' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphEdge.waypoints> + <XMI.field> + <XMI.field>185.0</XMI.field> + <XMI.field>266.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>185.0</XMI.field> + <XMI.field>450.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + </UML:GraphEdge.waypoints> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm7de9' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:AssociationClass xmi.idref = 'I2c428a6am108b0716cf0mm7ded'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7de8' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>185.0</XMI.field> + <XMI.field>266.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphNode.size> + <UML:DiagramElement.property> + <UML:Property xmi.id = 'I2c428a6am108b0716cf0mm7de6' key = 'gentleware-custom-width' + value = '0.0'/> + <UML:Property xmi.id = 'I2c428a6am108b0716cf0mm7de5' key = 'gentleware-custom-height' + value = '0.0'/> + </UML:DiagramElement.property> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm7de7' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:AssociationEnd xmi.idref = 'I2c428a6am108b0716cf0mm7df3'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7de4' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>-58.7617</XMI.field> + <XMI.field>12.9904</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>51.2617</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7de3' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7de2' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>-69.5058</XMI.field> + <XMI.field>12.9904</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>8.7441</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7de1' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7de0' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.4506</XMI.field> + <XMI.field>12.9904</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>5.3013</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7ddf' presentation = '' + typeInfo = 'Multiplicity'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dde' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>185.0</XMI.field> + <XMI.field>450.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphNode.size> + <UML:DiagramElement.property> + <UML:Property xmi.id = 'I2c428a6am108b0716cf0mm7ddc' key = 'gentleware-custom-width' + value = '0.0'/> + <UML:Property xmi.id = 'I2c428a6am108b0716cf0mm7ddb' key = 'gentleware-custom-height' + value = '0.0'/> + </UML:DiagramElement.property> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm7ddd' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:AssociationEnd xmi.idref = 'I2c428a6am108b0716cf0mm7df0'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dda' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>7.5</XMI.field> + <XMI.field>-26.9904</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>22.3062</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dd9' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dd8' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>-3.2441</XMI.field> + <XMI.field>-26.9904</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>8.7441</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dd7' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dd6' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>-13.69</XMI.field> + <XMI.field>-26.9904</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9556</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dd5' presentation = '' + typeInfo = 'Multiplicity'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dd4' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>224.8381</XMI.field> + <XMI.field>343.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>85.7754</XMI.field> + <XMI.field>86.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dd3' presentation = '' + typeInfo = 'AssociationClassNode'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dd2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>83.7754</XMI.field> + <XMI.field>34.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dd1' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dbe' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.3442</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>71.0869</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dbd' presentation = '' + typeInfo = 'StereotypeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dbc' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>17.4883</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dbb' presentation = '' + typeInfo = 'StereotypeStart'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dba' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>20.4883</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.1104</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm7db9' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Stereotype xmi.idref = 'Iadf5bemfcc916e45dmm7fea'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7db8' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>30.1104</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7db7' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7db6' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>53.5986</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>17.4883</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7db5' presentation = '' + typeInfo = 'StereotypeEnd'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dcc' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>29.0803</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>25.6147</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dcb' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dca' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>35.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>83.7754</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dc9' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dc8' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>36.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>83.7754</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dc7' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dc6' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>79.7754</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dc5' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm471d' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>75.7754</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:DiagramElement.property> + <UML:Property xmi.id = 'I2c428a6am108b0716cf0mm471b' key = 'gentleware-custom-width' + value = '0.0'/> + <UML:Property xmi.id = 'I2c428a6am108b0716cf0mm471a' key = 'gentleware-custom-height' + value = '0.0'/> + </UML:DiagramElement.property> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm471c' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Attribute xmi.idref = 'I2c428a6am108b0716cf0mm471e'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm4719' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9556</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm4718' presentation = '' + typeInfo = 'Visibility'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm4717' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>6.9556</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>22.6929</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm4716' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm4715' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>29.6484</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>3.4805</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm4714' presentation = '' + typeInfo = 'TypeSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm4713' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>33.1289</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>42.6465</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm4712' presentation = '' + typeInfo = 'StructuralFeatureType'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm4711' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>42.6465</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I2c428a6am108b0716cf0mm4710' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:DataType xmi.idref = 'I1a697a1mfcff8e7833mm7fed'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm470f' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>42.6465</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm470e' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dc4' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>60.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>83.7754</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dc3' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dc2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>61.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>83.7754</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dc1' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7dc0' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>79.7754</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dbf' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'I2c428a6am108b0716cf0mm7dcf'> + <UML:GraphConnector.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I2c428a6am108b0716cf0mm7dce'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphEdge xmi.id = 'I2c428a6am108b0716cf0mm7dce' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphEdge.waypoints> + <XMI.field> + <XMI.field>185.0</XMI.field> + <XMI.field>343.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>224.8381</XMI.field> + <XMI.field>343.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + </UML:GraphEdge.waypoints> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7dcd' presentation = '' + typeInfo = 'AssociationClassEdge'/> + </UML:GraphElement.semanticModel> + <UML:GraphEdge.anchor> + <UML:GraphConnector xmi.idref = 'I2c428a6am108b0716cf0mm7dd0'/> + <UML:GraphConnector xmi.idref = 'I2c428a6am108b0716cf0mm7dcf'/> + </UML:GraphEdge.anchor> + </UML:GraphEdge> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'I2c428a6am108b0716cf0mm7dd0'> + <UML:GraphConnector.position> + <XMI.field>185.0</XMI.field> + <XMI.field>343.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I2c428a6am108b0716cf0mm7dce'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + <UML:GraphEdge.anchor> + <UML:GraphConnector xmi.idref = 'I2c428a6am108b0716cf0mm7dec'/> + <UML:GraphConnector xmi.idref = 'I2c428a6am108b0716cf0mm7deb'/> + </UML:GraphEdge.anchor> + </UML:GraphEdge> + </UML:GraphElement.contained> + <UML:Diagram.owner> + <UML:Uml1SemanticModelBridge xmi.id = 'Iadf5bemfcc916e45dmm7f80' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Package xmi.idref = 'Iadf5bemfcc916e45dmm7f7b'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:Diagram.owner> + </UML:Diagram> + <UML:Diagram xmi.id = 'I178920amfd7b205be8mm76d9' isVisible = 'true' name = 'main' + zoom = '1.0'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>940.0</XMI.field> + <XMI.field>380.0</XMI.field> + </UML:GraphNode.size> + <UML:Diagram.viewport> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:Diagram.viewport> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76d8' presentation = '' + typeInfo = 'ClassDiagram'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76d7' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>210.0</XMI.field> + <XMI.field>330.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>100.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm76d6' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm76d5'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76d4' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76d3' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76d2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>44.9502</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>8.0996</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76d1' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76d0' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>19.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76cf' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76ce' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76cd' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76cc' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76cb' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76ca' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>44.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76c9' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76c8' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>45.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76c7' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76c6' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76c5' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'I178920amfd7b205be8mm76c4'> + <UML:GraphConnector.position> + <XMI.field>100.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I178920amfd7b205be8mm76c3'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76c2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>460.0</XMI.field> + <XMI.field>340.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>100.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm76c1' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm76c0'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76bf' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76be' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76bd' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>45.5356</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>6.9287</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76bc' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76bb' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>19.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76ba' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76b9' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76b8' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76b7' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76b6' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76b5' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>44.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76b4' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76b3' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>45.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76b2' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76b1' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76b0' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'I178920amfd7b205be8mm76af'> + <UML:GraphConnector.position> + <XMI.field>100.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I178920amfd7b205be8mm76ae'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76ad' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>720.0</XMI.field> + <XMI.field>320.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>100.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm76ac' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm76ab'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76aa' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76a9' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76a8' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>45.0818</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>7.8364</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76a7' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76a6' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>19.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76a5' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76a4' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76a3' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76a2' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm76a1' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm76a0' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>44.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm769f' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm769e' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>45.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm769d' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm769c' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm769b' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'I178920amfd7b205be8mm769a'> + <UML:GraphConnector.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I178920amfd7b205be8mm7699'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7698' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>990.0</XMI.field> + <XMI.field>310.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>100.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm7697' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm7696'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7695' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7694' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7693' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>44.6387</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>8.7227</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7692' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7691' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>19.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7690' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm768f' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm768e' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm768d' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm768c' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm768b' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>44.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm768a' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7689' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>45.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7688' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7687' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7686' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'I178920amfd7b205be8mm7685'> + <UML:GraphConnector.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I178920amfd7b205be8mm7684'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7683' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>600.0</XMI.field> + <XMI.field>90.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>100.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm7682' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Class xmi.idref = 'I178920amfd7b205be8mm7681'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7680' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>18.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm767f' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm767e' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>30.8296</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>36.3408</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm767d' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm767c' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>19.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm767b' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm767a' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7679' presentation = '' + typeInfo = 'AttributeCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7678' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7677' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7676' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>44.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>1.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7675' presentation = '' + typeInfo = 'CompartmentSeparator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7674' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>1.0</XMI.field> + <XMI.field>45.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>98.0</XMI.field> + <XMI.field>24.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7673' presentation = '' + typeInfo = 'OperationCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7672' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>2.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>94.0</XMI.field> + <XMI.field>20.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7671' presentation = '' + typeInfo = 'DelimitedSection'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphElement.anchorage> + <UML:GraphConnector xmi.id = 'I178920amfd7b205be8mm7670'> + <UML:GraphConnector.position> + <XMI.field>0.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I178920amfd7b205be8mm76c3'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + <UML:GraphConnector xmi.id = 'I178920amfd7b205be8mm766f'> + <UML:GraphConnector.position> + <XMI.field>0.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I178920amfd7b205be8mm76ae'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + <UML:GraphConnector xmi.id = 'I178920amfd7b205be8mm766e'> + <UML:GraphConnector.position> + <XMI.field>100.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I178920amfd7b205be8mm7699'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + <UML:GraphConnector xmi.id = 'I178920amfd7b205be8mm766d'> + <UML:GraphConnector.position> + <XMI.field>100.0</XMI.field> + <XMI.field>70.0</XMI.field> + </UML:GraphConnector.position> + <UML:GraphConnector.graphEdge> + <UML:GraphEdge xmi.idref = 'I178920amfd7b205be8mm7684'/> + </UML:GraphConnector.graphEdge> + </UML:GraphConnector> + </UML:GraphElement.anchorage> + </UML:GraphNode> + <UML:GraphEdge xmi.id = 'I178920amfd7b205be8mm76c3' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphEdge.waypoints> + <XMI.field> + <XMI.field>310.0</XMI.field> + <XMI.field>330.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>600.0</XMI.field> + <XMI.field>160.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + </UML:GraphEdge.waypoints> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm766c' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Generalization xmi.idref = 'I178920amfd7b205be8mm766b'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm766a' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>460.0572</XMI.field> + <XMI.field>253.627</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>21.7422</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7669' presentation = '' + typeInfo = 'Discriminator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphEdge.anchor> + <UML:GraphConnector xmi.idref = 'I178920amfd7b205be8mm76c4'/> + <UML:GraphConnector xmi.idref = 'I178920amfd7b205be8mm7670'/> + </UML:GraphEdge.anchor> + </UML:GraphEdge> + <UML:GraphEdge xmi.id = 'I178920amfd7b205be8mm76ae' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphEdge.waypoints> + <XMI.field> + <XMI.field>560.0</XMI.field> + <XMI.field>340.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>600.0</XMI.field> + <XMI.field>160.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + </UML:GraphEdge.waypoints> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm7668' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Generalization xmi.idref = 'I178920amfd7b205be8mm7667'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7666' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>589.7619</XMI.field> + <XMI.field>247.9738</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>21.7422</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7665' presentation = '' + typeInfo = 'Discriminator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphEdge.anchor> + <UML:GraphConnector xmi.idref = 'I178920amfd7b205be8mm76af'/> + <UML:GraphConnector xmi.idref = 'I178920amfd7b205be8mm766f'/> + </UML:GraphEdge.anchor> + </UML:GraphEdge> + <UML:GraphEdge xmi.id = 'I178920amfd7b205be8mm7699' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphEdge.waypoints> + <XMI.field> + <XMI.field>720.0</XMI.field> + <XMI.field>320.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>700.0</XMI.field> + <XMI.field>160.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + </UML:GraphEdge.waypoints> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm7664' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Generalization xmi.idref = 'I178920amfd7b205be8mm7663'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm7662' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>719.9228</XMI.field> + <XMI.field>230.0656</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>20.3779</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm7661' presentation = '' + typeInfo = 'Discriminator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphEdge.anchor> + <UML:GraphConnector xmi.idref = 'I178920amfd7b205be8mm769a'/> + <UML:GraphConnector xmi.idref = 'I178920amfd7b205be8mm766e'/> + </UML:GraphEdge.anchor> + </UML:GraphEdge> + <UML:GraphEdge xmi.id = 'I178920amfd7b205be8mm7684' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphEdge.waypoints> + <XMI.field> + <XMI.field>990.0</XMI.field> + <XMI.field>310.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>700.0</XMI.field> + <XMI.field>160.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + <XMI.field> + <XMI.field>0.0</XMI.field> + <XMI.field>0.0</XMI.field> + </XMI.field> + </UML:GraphEdge.waypoints> + <UML:GraphElement.semanticModel> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm7660' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Generalization xmi.idref = 'I178920amfd7b205be8mm765f'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I178920amfd7b205be8mm765e' isVisible = 'false'> + <UML:GraphElement.position> + <XMI.field>849.5942</XMI.field> + <XMI.field>212.6198</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>77.9023</XMI.field> + <XMI.field>14.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I178920amfd7b205be8mm765d' presentation = '' + typeInfo = 'Discriminator'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:GraphEdge.anchor> + <UML:GraphConnector xmi.idref = 'I178920amfd7b205be8mm7685'/> + <UML:GraphConnector xmi.idref = 'I178920amfd7b205be8mm766d'/> + </UML:GraphEdge.anchor> + </UML:GraphEdge> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e14' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>180.0</XMI.field> + <XMI.field>41.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>42.7461</XMI.field> + <XMI.field>19.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e13' presentation = '' + typeInfo = 'NameCompartment'/> + </UML:GraphElement.semanticModel> + <UML:GraphElement.contained> + <UML:GraphNode xmi.id = 'I2c428a6am108b0716cf0mm7e12' isVisible = 'true'> + <UML:GraphElement.position> + <XMI.field>4.0</XMI.field> + <XMI.field>2.0</XMI.field> + </UML:GraphElement.position> + <UML:GraphNode.size> + <XMI.field>28.7461</XMI.field> + <XMI.field>15.0</XMI.field> + </UML:GraphNode.size> + <UML:GraphElement.semanticModel> + <UML:SimpleSemanticModelElement xmi.id = 'I2c428a6am108b0716cf0mm7e11' presentation = '' + typeInfo = 'Name'/> + </UML:GraphElement.semanticModel> + </UML:GraphNode> + </UML:GraphElement.contained> + </UML:GraphNode> + </UML:GraphElement.contained> + <UML:Diagram.owner> + <UML:Uml1SemanticModelBridge xmi.id = 'I178920amfd7b205be8mm765c' presentation = ''> + <UML:Uml1SemanticModelBridge.element> + <UML:Package xmi.idref = 'I178920amfd7b205be8mm765b'/> + </UML:Uml1SemanticModelBridge.element> + </UML:Uml1SemanticModelBridge> + </UML:Diagram.owner> + </UML:Diagram> + </XMI.content> +</XMI> diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/LutinGenDemoProperties.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/LutinGenDemoProperties.java new file mode 100644 index 0000000..a8e9c15 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/LutinGenDemoProperties.java @@ -0,0 +1,31 @@ +package org.codelutin.generator.demo; + +import java.io.IOException; +import java.util.Properties; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.util.RecursiveProperties; +import org.codelutin.util.Resource; + +public class LutinGenDemoProperties { + + private static Log log = LogFactory.getLog(LutinGenDemoProperties.class); + private static Properties properties; + private static String propertiesFileName = "system.properties"; + + public static Properties getProperties() { + if (properties == null) { + try { + properties = Resource.getConfigProperties(propertiesFileName); + properties = new RecursiveProperties(properties); + } catch (IOException ioe) { + if (log.isFatalEnabled()) { + log.fatal("Unable to read file " + propertiesFileName, ioe); + } + } + } + return properties; + } + +} //LutinGenDemoProperties diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ChooseGeneratorController.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ChooseGeneratorController.java new file mode 100644 index 0000000..08a27cf --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ChooseGeneratorController.java @@ -0,0 +1,107 @@ +package org.codelutin.generator.demo.controller; + +import java.io.File; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.generator.Generator; +import org.codelutin.generator.demo.files.FileHandler; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.Controller; + +/** + * Ce controller enregistre le générator choisi. C'est la fin de la première étape. + * Ensuite, on ira sur {@link ListModelsController} + * + * @author thimel + */ +public class ChooseGeneratorController implements Controller { + + protected final Log log = LogFactory.getLog(getClass()); + + public ModelAndView handleRequest(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + if (log.isDebugEnabled()) { + log.debug("chooseGenerator called"); + } + + String id = request.getParameter("id"); + if (id == null) { + if (log.isDebugEnabled()) { + log.debug("no ID specified"); + } + return sendError(null); + } + + FileHandler handler = FileHandler.getInstance(); + String isolator; + String key; + if (id.startsWith("static-")) { + isolator = "_statics"; + key = id.substring(7); + } else { + isolator = request.getSession().getId(); + if (id.startsWith("user-")) { + key = id.substring(5); + } else { + key = id; + } + } + if (log.isDebugEnabled()) { + log.debug("isolator: " + isolator); + log.debug("key: " + key); + } + + if (key.startsWith("class-")) { + String className = key.substring(6); + try { + if (log.isDebugEnabled()) { + log.debug("Trying to load class: " + className); + } + Class clazz = Class.forName(className); + if (log.isDebugEnabled()) { + log.debug("Class loaded: " + clazz.getName()); + } + if (!Generator.class.isAssignableFrom(clazz)) { + return sendError("errors.generatorClassNotCompatible"); + } + try { + clazz.getConstructor((Class[])null); + } catch (NoSuchMethodException nsme) { + return sendError("errors.generatorNeedsDefaulConstructor"); + } + } catch (Exception eee) { + return sendError("errors.generatorClassNotFound"); + } + } else { + File f = handler.getGenerator(isolator, key); + if (log.isDebugEnabled()) { + log.debug("model: " + f.getAbsolutePath()); + } + if (!f.exists()) { + return sendError("errors.generatorNotFound"); + } + } + + HttpSession session = request.getSession(); + session.setAttribute("generatorIsolator", isolator); + session.setAttribute("generatorKey", key); + + return new ModelAndView("forward:/listModels.htm"); + } + + private ModelAndView sendError(String error) { + if (error != null) { + String[] errors = {error}; + return new ModelAndView("forward:/listGenerators.htm", "errors", errors); + } else { + return new ModelAndView("forward:/listGenerators.htm"); + } + } + +} //ChooseGeneratorController diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ChooseModelController.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ChooseModelController.java new file mode 100644 index 0000000..142eac0 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ChooseModelController.java @@ -0,0 +1,74 @@ +package org.codelutin.generator.demo.controller; + +import java.io.File; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.generator.demo.files.FileHandler; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.Controller; + +/** + * Ce controller enregistre le choix du modèle. C'est la fin de la deuxième étape. + * Ensuite, on ira sur {@link GenerateController} + * + * @author thimel + */ +public class ChooseModelController implements Controller { + + protected final Log log = LogFactory.getLog(getClass()); + + public ModelAndView handleRequest(HttpServletRequest request, + HttpServletResponse response) throws Exception { + if (log.isDebugEnabled()) { + log.debug("chooseModel called"); + } + + String id = request.getParameter("id"); + if (id == null) { + if (log.isDebugEnabled()) { + log.debug("no ID specified"); + } + return new ModelAndView("redirect:/listModels.htm"); + } + + FileHandler handler = FileHandler.getInstance(); + String isolator; + String key; + if (id.startsWith("static-")) { + isolator = "_statics"; + key = id.substring(7); + } else { + isolator = request.getSession().getId(); + if (id.startsWith("user-")) { + key = id.substring(5); + } else { + key = id; + } + } + if (log.isDebugEnabled()) { + log.debug("isolator: " + isolator); + log.debug("key: " + key); + } + + File f = handler.getModel(isolator, key); + if (log.isDebugEnabled()) { + log.debug("model: " + f.getAbsolutePath()); + } + if (!f.exists()) { + String[] errors = {"errors.modelNotFound"}; + return new ModelAndView("forward:/listModels.htm", "errors", errors); + } + + HttpSession session = request.getSession(); + session.setAttribute("modelIsolator", isolator); + session.setAttribute("modelKey", key); + + return new ModelAndView("forward:/generate.htm"); + } + +} //ChooseModelController diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/FileUploadController.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/FileUploadController.java new file mode 100644 index 0000000..e7c088c --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/FileUploadController.java @@ -0,0 +1,127 @@ +package org.codelutin.generator.demo.controller; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.generator.demo.entities.FileUploadBean; +import org.codelutin.generator.demo.files.FileHandler; +import org.codelutin.generator.demo.files.FileHandlerException; +import org.codelutin.util.FileUtil; +import org.codelutin.util.ZipUtil; +import org.springframework.validation.BindException; +import org.springframework.web.bind.ServletRequestDataBinder; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.SimpleFormController; + +public class FileUploadController extends SimpleFormController { + + protected final Log log = LogFactory.getLog(getClass()); + + protected ModelAndView onSubmit( + HttpServletRequest request, + HttpServletResponse response, + Object command, + BindException errors) throws ServletException, IOException { + + // cast the bean + FileUploadBean bean = (FileUploadBean) command; + +// let's see if there's content there + MultipartFile file = bean.getFile(); + log.info("File name: " + file.getName()); + log.info("File has: " + file.getSize() + " bytes"); + log.info("File was: " + file.getOriginalFilename()); + log.info("File content type: " + file.getContentType()); + log.info("Type: " + bean.getType()); + + String extension = FileUtil.extension(file.getOriginalFilename(), null); + + String isolatorKey = request.getSession().getId(); + + File tmpFile = File.createTempFile(bean.getType() + "Upload", "." + extension); + file.transferTo(tmpFile); + + try { + if ("model".equals(bean.getType())) { + addModel(isolatorKey, tmpFile, file.getOriginalFilename(), extension); + } else { + FileHandler fh = FileHandler.getInstance(); + fh.addGenerator(isolatorKey, file.getOriginalFilename(), tmpFile); + } + } catch (FileHandlerException fhe) { + log.error(fhe); + } + if ("model".equals(bean.getType())) { + return new ModelAndView("forward:/listModels.htm"); + } else { + return new ModelAndView("forward:/listGenerators.htm"); + } + } + + private static final int BUFFER_SIZE = 8 * 1024; + + protected void addModel(String isolatorKey, File file, String originalFilename, String extension) throws FileHandlerException, IOException { + if (log.isDebugEnabled()) { + log.debug("Attempt to add a new model from: " + originalFilename); + } + FileHandler fh = FileHandler.getInstance(); + File target = file; + if ("zargo".equals(extension) || "zuml".equals(extension) || "zip".equals(extension)) { + if (log.isDebugEnabled()) { + log.debug("\tFile needs to be extracted"); + } + ZipInputStream in = new ZipInputStream(new FileInputStream(file)); + ZipEntry entry; + while ((entry = in.getNextEntry()) != null) { + String name = ZipUtil.convertToLocalEntryName(entry.getName()); + if (name.endsWith(".xmi")) { + if (log.isDebugEnabled()) { + log.debug("\tModel found: " + name); + } + target = File.createTempFile("zipExtract", name); + if (log.isDebugEnabled()) { + log.debug("\tExtracting to: " + target.getAbsolutePath()); + } + originalFilename = name; + OutputStream out = new BufferedOutputStream(new FileOutputStream(target)); + byte[] buffer = new byte[BUFFER_SIZE]; + int len; + while ((len = in.read(buffer, 0, BUFFER_SIZE)) != -1) { + out.write(buffer, 0, len); + } + out.close(); + } + } + in.close(); + //Zip file must be deleted + file.delete(); + } + if (log.isDebugEnabled()) { + log.debug("\tAdding new model: " + target.getAbsolutePath() + " as " + originalFilename); + } + fh.addModel(isolatorKey, originalFilename, target); + } + + protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) + throws ServletException { + // to actually be able to convert Multipart instance to byte[] + // we have to register a custom editor + binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor()); + // now Spring knows how to handle multipart object and convert them + } + +} \ No newline at end of file diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/GenerateController.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/GenerateController.java new file mode 100644 index 0000000..e77e473 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/GenerateController.java @@ -0,0 +1,166 @@ +package org.codelutin.generator.demo.controller; + +import static org.codelutin.generator.demo.LutinGenDemoProperties.getProperties; + +import java.io.File; +import java.io.FileFilter; +import java.io.IOException; +import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.generator.Generator; +import org.codelutin.generator.ObjectModelGenerator; +import org.codelutin.generator.StateModelGenerator; +import org.codelutin.generator.demo.files.FileHandler; +import org.codelutin.util.FileUtil; +import org.codelutin.util.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.Controller; + +/** + * Ce controller prend le générateur et le modèle choisi. Si besoin, il applique + * les transformations XSL puis excécute la génération. + * + * @author thimel + */ +public class GenerateController implements Controller { + + public static final String GEN_DIR_NAME = getProperties().getProperty("GEN_DIR_NAME", "/tmp/lutingen-demo-files"); + public static final File GEN_DIR; + static { + GEN_DIR = new File(GEN_DIR_NAME); + if (!GEN_DIR.exists()) { + GEN_DIR.mkdirs(); + } + } + + protected final Log log = LogFactory.getLog(getClass()); + + public ModelAndView handleRequest(HttpServletRequest request, + HttpServletResponse response) throws Exception { + Map<String, Object> args = new HashMap<String, Object>(); + + HttpSession session = request.getSession(); + + String isolator = (String)session.getAttribute("modelIsolator"); + String key = (String)session.getAttribute("modelKey"); + File model = FileHandler.getInstance().getModel(isolator, key); + + String className = ObjectModelGenerator.class.getName(); //default + String tplKey = (String)session.getAttribute("generatorKey"); + if (tplKey.startsWith("class-")) { + className = tplKey.substring(6); + } + + if (log.isDebugEnabled()) { + log.debug("Trying to load class: " + className); + } + Class clazz = Class.forName(className); + Generator generator = (Generator)clazz.newInstance(); + + boolean generateForObjectModel = true; + boolean generateForStateModel = true; + + if (!ObjectModelGenerator.class.isAssignableFrom(clazz)) { + generateForObjectModel = false; + } + if (!StateModelGenerator.class.isAssignableFrom(clazz)) { + generateForStateModel = false; + } + + String suffix = "" + System.currentTimeMillis(); + File destDir = new File(GEN_DIR, getPrefix(session.getId()) + suffix); + destDir.mkdir(); + if (log.isDebugEnabled()) { + log.debug("Output folder ready: " + destDir.getAbsolutePath()); + log.debug("\texists: " + destDir.exists()); + log.debug("\tisDirectory: " + destDir.isDirectory()); + } + if (generateForObjectModel) { + File output = applyXSL(model, "objectmodel", destDir.getName()); + args.put("objectmodel", FileUtil.readAsString(output)); + generator.generate(output, destDir); + } + if (generateForStateModel) { + File output = applyXSL(model, "statemodel", destDir.getName()); + args.put("statemodel", FileUtil.readAsString(output)); + generator.generate(output, destDir); + } + + args.put("id", suffix); + List<File> files = FileUtil.getFilteredElements(destDir, ALL_FILE_FILTER, true); + args.put("files", files); + args.put("dirPath", destDir.getAbsolutePath() + File.separator); + if (log.isDebugEnabled()) { + log.debug("Generation done. " + files.size() + " files/directories generated."); +// for (File file : files) { +// if (!file.isDirectory()) { +// log.debug("\t" + file.getCanonicalPath()); +// } +// } + } + + return new ModelAndView("generationResult", args); + } + + static private FileFilter ALL_FILE_FILTER = new FileFilter() { + public boolean accept(File pathname) { + return true; + } + }; + + public static String getPrefix(String isolator) { + return "model-" + isolator + "-"; + } + + private File applyXSL(File model, String type, String path) throws IOException, TransformerException { + TransformerFactory factory = TransformerFactory.newInstance(); + + URL url; + if ("objectmodel".equals(type)) { + url = Resource.getURL("xmi1.2ToObjectModel.xsl"); + } else if("statemodel".equals(type)) { + url = Resource.getURL("xmi1.2ToStateModel.xsl"); + } else { + //Default + url = Resource.getURL("xmi1.2ToObjectModel.xsl"); + } + if (log.isInfoEnabled()) { + log.info("xsl: " + url.getPath()); + } + StreamSource source = new StreamSource(new UrlResource(url).getInputStream()); + + File output = new File(GEN_DIR, path + "." + type); + + if (log.isDebugEnabled()) { + log.debug("Ready to apply " + type + " XSL"); + log.debug("\tSource: " + model.getAbsolutePath()); + log.debug("\tOutput: " + output.getAbsolutePath()); + } + if (!output.exists()) { + output.createNewFile(); + } + Transformer tranformer = factory.newTransformer(source); + tranformer.transform(new StreamSource(model), new StreamResult(output)); + + if (log.isDebugEnabled()) { + log.debug(type + " XSLT done"); + } + return output; + } + +} //GenerateController diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ListGeneratorsController.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ListGeneratorsController.java new file mode 100644 index 0000000..69dd3d8 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ListGeneratorsController.java @@ -0,0 +1,56 @@ +package org.codelutin.generator.demo.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.generator.demo.entities.GeneratorMgr; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.Controller; + +/** + * Ce controller liste les générators disponibles. C'est la première étape. + * Ensuite, on ira sur {@link ChooseGeneratorController} + * + * @author thimel + */ +public class ListGeneratorsController implements Controller { + + protected final Log log = LogFactory.getLog(getClass()); + + private GeneratorMgr generatorMgr; + + public GeneratorMgr getGeneratorMgr() { + return generatorMgr; + } + + public void setGeneratorMgr(GeneratorMgr templateMgr) { + this.generatorMgr = templateMgr; + } + + public ModelAndView handleRequest(HttpServletRequest request, + HttpServletResponse response) throws Exception { + if (log.isDebugEnabled()) { + log.debug("listGenerators called"); + } + + HttpSession session = request.getSession(); + session.removeAttribute("generatorIsolator"); + session.removeAttribute("generatorKey"); + //On est à la première étape alors on vide tous les paramètres + session.removeAttribute("modelIsolator"); + session.removeAttribute("modelKey"); + + Map<String, Object> args = new HashMap<String, Object>(2); + args.put("staticGenerators", generatorMgr.getStaticGenerators()); + args.put("userGenerators", generatorMgr.getUserGenerators()); + + return new ModelAndView("listGenerators", args); + } + +} //ListGeneratorsController diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ListModelsController.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ListModelsController.java new file mode 100644 index 0000000..5c9ed93 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/controller/ListModelsController.java @@ -0,0 +1,53 @@ +package org.codelutin.generator.demo.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.generator.demo.entities.ModelMgr; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.Controller; + +/** + * Ce controller liste les modèles disponibles. C'est la deuxième étape. + * Ensuite, on ira sur {@link ChooseModelController} + * + * @author thimel + */ +public class ListModelsController implements Controller { + + protected final Log log = LogFactory.getLog(getClass()); + + private ModelMgr modelMgr; + + public ModelMgr getModelMgr() { + return modelMgr; + } + + public void setModelMgr(ModelMgr modelMgr) { + this.modelMgr = modelMgr; + } + + public ModelAndView handleRequest(HttpServletRequest request, + HttpServletResponse reponse) throws Exception { + if (log.isDebugEnabled()) { + log.debug("listModels called"); + } + + HttpSession session = request.getSession(); + session.removeAttribute("modelIsolator"); + session.removeAttribute("modelKey"); + + Map<String, Object> args = new HashMap<String, Object>(2); + args.put("staticModels", modelMgr.getStaticModels()); + args.put("userModels", modelMgr.getUserModels(request.getSession().getId())); + + return new ModelAndView("listModels", args); + } + +} //ListModelsController diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/Entity.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/Entity.java new file mode 100644 index 0000000..d360409 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/Entity.java @@ -0,0 +1,22 @@ +package org.codelutin.generator.demo.entities; + +public class Entity { + + private String name; + private String id; + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + +} //Entity diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/FileManager.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/FileManager.java new file mode 100644 index 0000000..290542f --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/FileManager.java @@ -0,0 +1,23 @@ +package org.codelutin.generator.demo.entities; + +import java.util.ArrayList; +import java.util.List; + +import org.codelutin.generator.demo.files.FileHandler; + +public class FileManager { + + protected List<Entity> getModels(String isolatorKey) { + FileHandler fh = FileHandler.getInstance(); + List<String> modelNames = fh.getModelNames(isolatorKey); + List<Entity> result = new ArrayList<Entity>(modelNames.size()); + for (String name: modelNames) { + Entity ent = new Entity(); + ent.setId(name); + ent.setName(name); + result.add(ent); + } + return result; + } + +} diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/FileUploadBean.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/FileUploadBean.java new file mode 100644 index 0000000..3ca2ab8 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/FileUploadBean.java @@ -0,0 +1,26 @@ +package org.codelutin.generator.demo.entities; + +import org.springframework.web.multipart.MultipartFile; + +public class FileUploadBean { + + private MultipartFile file; + private String type; + + public void setFile(MultipartFile file) { + this.file = file; + } + + public MultipartFile getFile() { + return file; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + +} //FileUploadBean diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/GeneratorMgr.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/GeneratorMgr.java new file mode 100644 index 0000000..eb0bef0 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/GeneratorMgr.java @@ -0,0 +1,23 @@ +package org.codelutin.generator.demo.entities; + +import java.util.List; + +public class GeneratorMgr { + + private List<Entity> staticGenerators; + private List<Entity> userGenerators; + + public List<Entity> getStaticGenerators() { + return staticGenerators; + } + public void setStaticGenerators(List<Entity> staticGenerators) { + this.staticGenerators = staticGenerators; + } + public List<Entity> getUserGenerators() { + return userGenerators; + } + public void setUserGenerators(List<Entity> userGenerators) { + this.userGenerators = userGenerators; + } + +} //GeneratorMgr diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/ModelMgr.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/ModelMgr.java new file mode 100644 index 0000000..44b3e18 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/entities/ModelMgr.java @@ -0,0 +1,14 @@ +package org.codelutin.generator.demo.entities; + +import java.util.List; + +public class ModelMgr extends FileManager { + + public List<Entity> getStaticModels() { + return getModels("_statics"); + } + public List<Entity> getUserModels(String sessionId) { + return getModels(sessionId); + } + +} //ModelMgr diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/files/FileHandler.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/files/FileHandler.java new file mode 100644 index 0000000..f2f2faf --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/files/FileHandler.java @@ -0,0 +1,194 @@ +package org.codelutin.generator.demo.files; + +import static org.codelutin.generator.demo.LutinGenDemoProperties.getProperties; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.channels.FileChannel; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.util.FileUtil; + +/** + * Cette classe est responsable de gérer des fichiers. Les fichiers sont + * regroupés dans des isaltors. Le but étant d'isoler les fichiers des + * utilisateurs en fonction de leurs sessions HTTP + * + * @author thimel + */ +public class FileHandler { + + public static final String DEFAULT_LOCATION; + static { + if (System.getProperty("user.home") != null) { + DEFAULT_LOCATION = System.getProperty("user.home") + File.pathSeparator + "lutingen-demo-files"; + } else { + DEFAULT_LOCATION = "/var/local/lutingen-demo-files"; + } + } + public static final String FS_FILE_LOCATION = getProperties().getProperty( + "FS_FILE_LOCATION", DEFAULT_LOCATION); + + public static final String FS_FILENAME = "file"; + + public static final String FS_PREFIX_MODEL = "model-"; + + public static final String FS_PREFIX_GENERATOR = "generator-"; + + private static final Log log = LogFactory.getLog(FileHandler.class); + + private static FileHandler instance; + + public static FileHandler getInstance() { + if (instance == null) { + instance = new FileHandler(); + } + return instance; + } + + private File getFileIsolatorLocation(String isolatorKey) { + File filesFolder = new File(FS_FILE_LOCATION); + if (!filesFolder.exists()) { + filesFolder.mkdir(); + } + File isolationFolder = new File(filesFolder, isolatorKey); + if (!isolationFolder.exists()) { + isolationFolder.mkdir(); + } + return isolationFolder; + } + + private File findFile(File isolatorFolder, String prefix, String name) { + File modelFoder = new File(isolatorFolder, name); + if (!modelFoder.exists()) { + modelFoder.mkdir(); + } + return new File(modelFoder, prefix + FS_FILENAME); + + } + + private File findModel(File isolatorFolder, String name) { + return findFile(isolatorFolder, FS_PREFIX_MODEL, name); + } + + private File findGenerator(File isolatorFolder, String name) { + return findFile(isolatorFolder, FS_PREFIX_GENERATOR, name); + } + + public void addModel(String isolatorKey, String name, File o) + throws FileHandlerException { + addFile(isolatorKey, FS_PREFIX_MODEL, name, o); + } + + public void addGenerator(String isolatorKey, String name, File o) + throws FileHandlerException { + addFile(isolatorKey, FS_PREFIX_GENERATOR, name, o); + } + + private void addFile(String isolatorKey, String prefix, String name, File o) + throws FileHandlerException { + File isolatorFolder = getFileIsolatorLocation(isolatorKey); + File file = findFile(isolatorFolder, prefix, name); + if (file.exists()) { + throw new FileHandlerException("File \"" + prefix + name + + "\" already exists"); + } + boolean result = deplacer(o, file); + if (log.isDebugEnabled()) { + log.debug("Résultat du déplacement: " + result); + } + } + + public boolean deplacer(File source, File destination) { + if (!destination.exists()) { + // On essaye avec renameTo + boolean result = source.renameTo(destination); + if (!result) { + // On essaye de copier + result = true; + result &= copier(source, destination); + if (result) + result &= source.delete(); + } + return (result); + } else { + // Si le fichier destination existe, on annule ... + return (false); + } + } + + public boolean copier(File source, File destination) { + boolean resultat = false; + FileChannel in = null; // canal d'entrée + FileChannel out = null; // canal de sortie + + try { + // Init + in = new FileInputStream(source).getChannel(); + out = new FileOutputStream(destination).getChannel(); + + // Copie depuis le in vers le out + in.transferTo(0, in.size(), out); + resultat = true; + } catch (Exception e) { + e.printStackTrace(); // n'importe quelle exception + } finally { // finalement on ferme + if (in != null) { + try { + in.close(); + } catch (IOException e) { + } + } + if (out != null) { + try { + out.close(); + } catch (IOException e) { + } + } + } + return (resultat); + } + + public File getModel(String isolatorKey, String name) { + File isolatorFolder = getFileIsolatorLocation(isolatorKey); + return findModel(isolatorFolder, name); + } + + public File getGenerator(String isolatorKey, String name) { + File isolatorFolder = getFileIsolatorLocation(isolatorKey); + return findGenerator(isolatorFolder, name); + } + + public void unvalidateIsolator(String isolatorKey) { + if (log.isInfoEnabled()) { + log.info("Unvalidating isolator: " + isolatorKey); + } + File loc = getFileIsolatorLocation(isolatorKey); + FileUtil.deleteRecursively(loc); + } + + public List<String> getModelNames(String isolatorKey) { + return getFileNames(isolatorKey, FS_PREFIX_MODEL); + } + + public List<String> getGeneratorNames(String isolatorKey) { + return getFileNames(isolatorKey, FS_PREFIX_GENERATOR); + } + + private List<String> getFileNames(String isolatorKey, String prefix) { + File isolatorFolder = getFileIsolatorLocation(isolatorKey); + List<String> fileNames = new ArrayList<String>(); + for (String fileName : isolatorFolder.list()) { + if (findFile(isolatorFolder, prefix, fileName).exists()) { + fileNames.add(fileName); + } + } + return fileNames; + } + +} // FileHandler diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/files/FileHandlerException.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/files/FileHandlerException.java new file mode 100644 index 0000000..99f2bb4 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/files/FileHandlerException.java @@ -0,0 +1,9 @@ +package org.codelutin.generator.demo.files; + +public class FileHandlerException extends Exception { + + public FileHandlerException(String message) { + super(message); + } + +} //FileHandlerException diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/http/DownloadResultServlet.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/http/DownloadResultServlet.java new file mode 100644 index 0000000..b133b86 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/http/DownloadResultServlet.java @@ -0,0 +1,45 @@ +package org.codelutin.generator.demo.http; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.OutputStream; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.codelutin.generator.demo.controller.GenerateController; +import org.codelutin.util.ZipUtil; + +public class DownloadResultServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String id = request.getParameter("id"); + File folder = new File(GenerateController.GEN_DIR, GenerateController.getPrefix(request.getSession().getId()) + id); + File zipFile = File.createTempFile("model-"+id, ".zip"); + ZipUtil.compress(zipFile, folder, null); + + String mimeType = "multipart/x-zip"; + response.addHeader("Content-disposition", "attachment; filename=\"" + zipFile.getName() + "\""); + response.setContentType(mimeType); + + // Set content size + response.setContentLength((int) zipFile.length()); + + // Open the file and output streams + FileInputStream in = new FileInputStream(zipFile); + OutputStream out = response.getOutputStream(); + + // Copy the contents of the file to the output stream + byte[] buf = new byte[1024]; + int count = 0; + while ((count = in.read(buf)) >= 0) { + out.write(buf, 0, count); + } + in.close(); + out.close(); + } + +} //DownloadResultServlet diff --git a/eugene-demo/src/main/java/org/codelutin/generator/demo/http/UploadedFileSessionListener.java b/eugene-demo/src/main/java/org/codelutin/generator/demo/http/UploadedFileSessionListener.java new file mode 100644 index 0000000..bd35045 --- /dev/null +++ b/eugene-demo/src/main/java/org/codelutin/generator/demo/http/UploadedFileSessionListener.java @@ -0,0 +1,21 @@ +package org.codelutin.generator.demo.http; + +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; + +import org.codelutin.generator.demo.files.FileHandler; + +public class UploadedFileSessionListener implements + HttpSessionListener { + + public void sessionCreated(HttpSessionEvent evt) { + //Nothing to do + } + + public void sessionDestroyed(HttpSessionEvent evt) { + String sessionId = evt.getSession().getId(); + FileHandler fh = FileHandler.getInstance(); + fh.unvalidateIsolator(sessionId); + } + +} //UploadedFileSessionListener diff --git a/eugene-demo/src/main/resources/log4j.properties b/eugene-demo/src/main/resources/log4j.properties new file mode 100644 index 0000000..86492df --- /dev/null +++ b/eugene-demo/src/main/resources/log4j.properties @@ -0,0 +1,16 @@ +log4j.rootLogger=INFO, stdout, logfile + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n + +log4j.appender.logfile=org.apache.log4j.RollingFileAppender +log4j.appender.logfile.File=/opt/repository/tomcat/apache-tomcat-5.5.25/logs/springapp.log +log4j.appender.logfile.MaxFileSize=512KB +# Keep three backup files. +log4j.appender.logfile.MaxBackupIndex=3 +# Pattern to output: date priority [category] - message +log4j.appender.logfile.layout=org.apache.log4j.PatternLayout +log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n + +log4j.logger.org.codelutin.generator.demo=DEBUG diff --git a/eugene-demo/src/main/resources/messages.properties b/eugene-demo/src/main/resources/messages.properties new file mode 100644 index 0000000..618db18 --- /dev/null +++ b/eugene-demo/src/main/resources/messages.properties @@ -0,0 +1,39 @@ +title.general=LutinGenerator Démo + +step.1=Etape 1 +step.2=Etape 2 +step.3=Etape 3 + +step.selectModel=Etape 2: Choix du modèle +staticModels=Modèles statiques ({0}) +userModels=Modèles utilisateurs ({0}) +model=Modèle +model_statics=Modèle statique +model_users=Modèle utilisateur +addModel=Ajouter un modèle +selectModelToAdd=Sélectionnez le modèle à ajouter (.xmi, .zuml, .zargo, .zip) +selectModelToAddNote=Note: Vos modèles sont supprimés à la fin de votre session utilisateur + +step.selectGenerator=Etape 1: Choix du générateur +staticGenerators=Générateurs statiques ({0}) +userGenerators=Générateurs utilisateurs ({0}) +generator=Générateur + +details=Détails + +step.generate=Génération +step.result=Résultat de la génération +objectmodel.generated=.objectmodel généré +statemodel.generated=.statemodel généré +files.generated=Fichiers générés +download=Télécharger +zipContent=Contenu du fichier ZIP + +errors=Une erreur est survenue +errors.modelNotFound=Le modèle choisi n'est pas sur le système +errors.generatorNotFound=Le générateur choisi n'est pas sur le système +errors.generatorClassNotCompatible=Le générateur choisi n'est pas un générateur compatible +errors.generatorClassNotFound=Le générateur choisi n'est pas disponible dans le classpath +errors.generatorNeedsDefaulConstructor=Le générateur choisi n'a pas de constructeur par défaut + +done=Terminé diff --git a/eugene-demo/src/main/resources/system.properties b/eugene-demo/src/main/resources/system.properties new file mode 100644 index 0000000..347809f --- /dev/null +++ b/eugene-demo/src/main/resources/system.properties @@ -0,0 +1,2 @@ +GEN_DIR_NAME=/tmp/lutingen-demo-files +FS_FILE_LOCATION=/home/thimel/lutingen-demo-files diff --git a/eugene-demo/src/main/webapp/META-INF/MANIFEST.MF b/eugene-demo/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/eugene-demo/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/eugene-demo/src/main/webapp/WEB-INF/.cvsignore b/eugene-demo/src/main/webapp/WEB-INF/.cvsignore new file mode 100644 index 0000000..90b07e9 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/.cvsignore @@ -0,0 +1 @@ +classes diff --git a/eugene-demo/src/main/webapp/WEB-INF/dispatcher-servlet.xml b/eugene-demo/src/main/webapp/WEB-INF/dispatcher-servlet.xml new file mode 100644 index 0000000..0152a7a --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/dispatcher-servlet.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> + +<beans> + <bean id="listModelsController" class="org.codelutin.generator.demo.controller.ListModelsController"> + <property name="modelMgr"> + <ref bean="modelMgr"/> + </property> + </bean> + <bean id="chooseModelController" class="org.codelutin.generator.demo.controller.ChooseModelController"/> + <bean id="listGeneratorsController" class="org.codelutin.generator.demo.controller.ListGeneratorsController"> + <property name="generatorMgr"> + <ref bean="generatorMgr"/> + </property> + </bean> + <bean id="chooseGeneratorController" class="org.codelutin.generator.demo.controller.ChooseGeneratorController"/> + <bean id="generateController" class="org.codelutin.generator.demo.controller.GenerateController"/> + + <bean id="modelMgr" class="org.codelutin.generator.demo.entities.ModelMgr"/> + + <bean id="generatorMgr" class="org.codelutin.generator.demo.entities.GeneratorMgr"> + <property name="staticGenerators"> + <list> + <ref bean="staticTpl1"/> + <ref bean="staticTpl2"/> + <ref bean="staticTpl3"/> + </list> + </property> + </bean> + <bean id="staticTpl1" class="org.codelutin.generator.demo.entities.Entity"> + <property name="name"><value>Générateur n°1 (ToPIA / EntityInterfaceGenerator)</value></property> + <property name="id"><value>class-org.codelutin.topia.generator.EntityInterfaceGenerator</value></property> + </bean> + <bean id="staticTpl2" class="org.codelutin.generator.demo.entities.Entity"> + <property name="name"><value>Générateur n°2 (ToPIA / EntityHibernateMappingGenerator)</value></property> + <property name="id"><value>class-org.codelutin.topia.generator.EntityHibernateMappingGenerator</value></property> + </bean> + <bean id="staticTpl3" class="org.codelutin.generator.demo.entities.Entity"> + <property name="name"><value>Générateur n°3 (ObjectModelGenerator)</value></property> + <property name="id"><value>class-org.codelutin.generator.ObjectModelGenerator</value></property> + </bean> + + <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> + <property name="mappings"> + <props> + <prop key="/listModels.htm">listModelsController</prop> + <prop key="/addFile.htm">fileUploadController</prop> + <prop key="/chooseModel.htm">chooseModelController</prop> + <prop key="/listGenerators.htm">listGeneratorsController</prop> + <prop key="/chooseGenerator.htm">chooseGeneratorController</prop> + <prop key="/generate.htm">generateController</prop> + </props> + </property> + </bean> + + <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> + <property name="basename"><value>messages</value></property> + </bean> + + <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> + <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> + <property name="prefix"><value>/WEB-INF/jsp/</value></property> + <property name="suffix"><value>.jsp</value></property> + </bean> + + <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> + <!-- one of the properties available; the maximum file size in bytes --> + <property name="maxUploadSize" value="10240000"/> + </bean> + + <bean id="fileUploadController" class="org.codelutin.generator.demo.controller.FileUploadController"> + <property name="commandClass" value="org.codelutin.generator.demo.entities.FileUploadBean"/> + </bean> + +</beans> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/block/display.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/display.jsp new file mode 100644 index 0000000..2ba4a76 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/display.jsp @@ -0,0 +1,12 @@ +<!-- begin of display.jsp --> +<%@ include file="../common.jsp" %> + +<div class="genDetails"> +<fmt:message key="details"/> : +<ul> + <li><fmt:message key="step.selectGenerator"/> : <c:if test="${! empty generatorIsolator}"><img src="images/valide-true.gif" title="<fmt:message key="done"/>"/></c:if></li> + <li><fmt:message key="step.selectModel"/> : <c:if test="${! empty modelIsolator}"><img src="images/valide-true.gif" title="<fmt:message key="done"/>"/></c:if></li> + <li><fmt:message key="step.generate"/> : <c:if test="${! empty id}"><img src="images/valide-true.gif" title="<fmt:message key="done"/>"/></c:if></li> +</ul> +</div> +<!-- end of display.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/block/explanations.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/explanations.jsp new file mode 100644 index 0000000..509eb7a --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/explanations.jsp @@ -0,0 +1,67 @@ +<!-- begin of explanations.jsp --> +<%@ include file="../common.jsp" %> + +<button id="showExplanations" class="shown" onclick="document.getElementById('explanations').className='explanations';document.getElementById('hideExplanations').className='shown';document.getElementById('showExplanations').className='hidden';">Afficher les explications</button> +<button id="hideExplanations" class="hidden" onclick="document.getElementById('explanations').className='hidden';document.getElementById('hideExplanations').className='hidden';document.getElementById('showExplanations').className='shown';">Masquer les explications</button> +<div class="hidden" id="explanations"> + +<h2>Lutin Generator</h2> + +<pre> +La g�n�ration de code prend maintenant une place importante dans le d�veloppement d'applications. +Que ce soit pour une r�duction des temps de d�veloppement ou pour l'automtisation de t�ches, la g�n�ration de code couvre tellement de domaines que des milliers de g�n�rateurs �mergent. +Chaque g�n�rateur a ses sp�cificit�s : le format de la source, le language utilis� pour son d�veloppement, le format cible, ... + +Lutin Generator est un socle de g�n�rateurs. +Chaque g�n�rateur est une classe Java autonome. +Il prend un ensemble de fichiers en entr�e et �crit le resultat de la g�n�ration dans un dossier. + +Le format d'entr�e de chaque g�n�rateur doit �tre bien d�finit pour que celui-ci soit capable de le comprendre. + +Pour pouvoir effectuer la g�n�ration, le g�n�rateur doit dans un premier temps lire le format d'entr�e et le charger en m�moire. +Il interpr�tera ensuite son contenu du mod�le charg� et fera la g�n�reration de code en fonction des �l�ments de ce mod�le. +</pre> + +<h2>Le cas UML</h2> + +<pre> +La r�alisation de mod�les UML est une phase importante dans la vie d'un projet, elle permet d'�claircir les zones d'ombres qui peuvent exister pendant la conception. +L'UML joue un r�le interm�diaire entre la d�finition des besoins et le code source. +Les diagrammes UML (diagrammes de classes, d'�tats, de s�quences...) sont donc souvent proches du contenu esp�r� du code source. +Il est donc possible de g�n�rer une partie plus ou moins importante du code source. + +En l'occurence, � partir de diagrammes de classes il est possible de g�n�rer la couche de persistance ou encore de distribution d'une application. +Les diagrammes d'�tat transition peuvent servir � mod�liser la navigation entre les �crans. +</pre> + +<h4>Transformation du mod�le</h4> + +<pre> +Lutin Generator contient des g�n�rateurs types capables de prendre en entr�e des diagrammes de classes ou d'�tat. +Cependant, les diff�rents outils de mod�lisation UML poss�dent chacun leur propre format, mais la plupart permettent d'enregistrer directement ou d'exporter en XMI (XML Metadata Interchange) qui est un format standard d'export UML. +Le XMI est un bon format pour les outils UML mais il est trop verbeux pour �tre �crit � la main, c'est pourquoi on utilise des transformations XSL permettant de transformer le XMI en un format pivot simple et �pur�. + +Les diagrammes de classes donneront lieu � des fichiers .objectmodel alors que les diagrammes d'�tat donneront des fichiers .statemodel +</pre> + +<h4>Chargement en m�moire</h4> + +<pre> +Chaque g�n�rateur va utiliser un format d'entr�e d�fini, il est donc cod� pour pouvoir interpr�ter ce format. +Par exemple, les g�n�rateurs se basant sur des diagrammes de classes vont pouvoir lire les fichiers .objectmodel. De m�me pour les diagrammes d'�tat avec les fichiers .statemodel. + +Pour faciliter la manipulaton du mod�le, il peut �tre enti�rement repr�sent� par des classes Java. +</pre> + +<h2>Processus de g�n�ration</h2> + +<pre> +La premi�re �tape pour pouvoir effectuer la g�n�ration est de choisir un g�n�rateur. + +Chaque g�n�rateur �tant compatible avec un format donn�, on doit ensuite choisir le fichier correspondant au bon format d'entr�e. + +La derni�re �tape enfin est la g�n�ration de code � proprement parler. +</pre> + +</div> +<!-- end of explanations.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/block/footer.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/footer.jsp new file mode 100644 index 0000000..8a98e95 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/footer.jsp @@ -0,0 +1,4 @@ +<!-- begin of footer.jsp --> +<%@ include file="display.jsp" %> +<%@ include file="explanations.jsp" %> +<!-- end of footer.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/block/header.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/header.jsp new file mode 100644 index 0000000..c887990 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/header.jsp @@ -0,0 +1,8 @@ +<!-- begin of header.jsp --> +<%@ include file="../common.jsp" %> + +<head> +<title><fmt:message key="title.general"/> - <fmt:message key="step.${step}"/></title> +<link rel="stylesheet" href="css/layout.css" type="text/css"> +</head> +<!-- end of header.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/block/title.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/title.jsp new file mode 100644 index 0000000..ad137e1 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/block/title.jsp @@ -0,0 +1,21 @@ +<!-- begin of title.jsp --> +<%@ include file="../common.jsp" %> + +<h1> +<c:choose> + <c:when test='${step == "selectGenerator"}'><span class="stepSelected"><fmt:message key="step.selectGenerator"/></span></c:when> + <c:otherwise><a href="listGenerators.htm"><fmt:message key="step.selectGenerator"/></a></c:otherwise> +</c:choose> + > +<c:choose> + <c:when test='${step == "selectGenerator"}'><fmt:message key="step.selectModel"/></c:when> + <c:when test='${step == "selectModel"}'><span class="stepSelected"><fmt:message key="step.selectModel"/></span></c:when> + <c:otherwise><a href="listModels.htm"><fmt:message key="step.selectModel"/></a></c:otherwise> +</c:choose> +> +<c:choose> + <c:when test='${step == "result"}'><span class="stepSelected"><fmt:message key="step.result"/></span></c:when> + <c:otherwise><fmt:message key="step.result"/></c:otherwise> +</c:choose> +</h1> +<!-- end of title.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/common.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/common.jsp new file mode 100644 index 0000000..ad45574 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/common.jsp @@ -0,0 +1,8 @@ +<!-- begin of common.jsp --> +<%@ page session="true"%> +<%@ page isELIgnored ="false" %> + +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<!-- end of common.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/generationResult.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/generationResult.jsp new file mode 100644 index 0000000..dff53c9 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/generationResult.jsp @@ -0,0 +1,33 @@ +<!-- begin of generationResult.jsp --> +<%@ include file="common.jsp" %> + +<c:set scope="request" var="step" value="result"/> +<html> +<%@ include file="block/header.jsp" %> +<body> +<%@ include file="block/title.jsp" %> +<c:if test="${!empty objectmodel }"> +<h2><fmt:message key="objectmodel.generated"/></h2> +<textarea cols="150" rows="30"> +${objectmodel} +</textarea> +</c:if> +<c:if test="${!empty statemodel }"> +<h2><fmt:message key="statemodel.generated"/></h2> +<textarea cols="150" rows="30"> +${statemodel} +</textarea> +</c:if> +<h2><fmt:message key="files.generated"/></h2> +<a href="downloadResultServlet?id=${id}"><fmt:message key="download"/></a> +<h4><fmt:message key="zipContent"/></h4> +<ul> +<c:forEach items="${files}" var="file"> + <li>${fn:substringAfter(file.canonicalPath, dirPath)}</li> +</c:forEach> +</ul> + +<%@ include file="block/footer.jsp" %> +</body> +</html> +<!-- end of generationResult.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/listGenerators.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/listGenerators.jsp new file mode 100644 index 0000000..263abf7 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/listGenerators.jsp @@ -0,0 +1,38 @@ +<!-- begin of listGenerators.jsp --> +<%@ include file="common.jsp" %> + +<c:set scope="request" var="step" value="selectGenerator"/> +<html> +<%@ include file="block/header.jsp" %> +<body> +<%@ include file="block/title.jsp" %> + +<c:if test="${!empty errors}"> +<div class="errors"> +<h2><fmt:message key="errors"/> :</h2> +<ul> +<c:forEach items="${errors}" var="error"> + <li><fmt:message key="${error}"/></li> +</c:forEach> +</ul> +</div> +</c:if> + +<h2><fmt:message key="staticGenerators"><fmt:param value="${ fn:length(staticGenerators) }"/></fmt:message></h2> +<ul> +<c:forEach items="${staticGenerators}" var="tpl"> + <li><a href="chooseGenerator.htm?id=static-<c:out value="${tpl.id}"/>"><c:out value="${tpl.name}"/></a></li> +</c:forEach> +</ul> + +<h2><fmt:message key="userGenerators"><fmt:param value="${ fn:length(userGenerators) }"/></fmt:message></h2> +<ul> +<c:forEach items="${userGenerators}" var="tpl"> + <li><a href="chooseGenerator.htm?id=user-<c:out value="${tpl.id}"/>"><c:out value="${tpl.name}"/></a></li> +</c:forEach> +</ul> + +<%@ include file="block/footer.jsp" %> +</body> +</html> +<!-- end of listGenerators.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/jsp/listModels.jsp b/eugene-demo/src/main/webapp/WEB-INF/jsp/listModels.jsp new file mode 100644 index 0000000..e07a1a3 --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/jsp/listModels.jsp @@ -0,0 +1,48 @@ +<!-- begin of listModels.jsp --> +<%@ include file="common.jsp" %> + +<c:set scope="request" var="step" value="selectModel"/> +<html> +<%@ include file="block/header.jsp" %> +<body> +<%@ include file="block/title.jsp" %> + +<c:if test="${!empty errors}"> +<div class="errors"> +<h2><fmt:message key="errors"/> :</h2> +<ul> +<c:forEach items="${errors}" var="error"> + <li><fmt:message key="${error}"/></li> +</c:forEach> +</ul> +</div> +</c:if> + +<h2><fmt:message key="staticModels"><fmt:param value="${ fn:length(staticModels) }"/></fmt:message></h2> +<ul> +<c:forEach items="${staticModels}" var="model"> + <li><a href="chooseModel.htm?id=static-<c:out value="${model.id}"/>"><c:out value="${model.name}"/></a></li> +</c:forEach> +</ul> + +<h2><fmt:message key="userModels"><fmt:param value="${ fn:length(userModels) }"/></fmt:message></h2> +<ul> +<c:forEach items="${userModels}" var="model"> + <li><a href="chooseModel.htm?id=user-<c:out value="${model.id}"/>"><c:out value="${model.name}"/></a></li> +</c:forEach> +</ul> +<button onclick="document.getElementById('addModel').className='shown';"><fmt:message key="addModel"/></button> +<div id="addModel" class="hidden"> +<fmt:message key="selectModelToAdd"/><br/> +<i><fmt:message key="selectModelToAddNote"/></i> + <form action="addFile.htm" method="post" enctype="multipart/form-data"> + <input type="file" name="file"/> + <input type="hidden" name="type" value="model" /> + <input type="submit"/> + </form> +</div> + +<%@ include file="block/footer.jsp" %> +</body> +</html> +<!-- end of listModels.jsp --> diff --git a/eugene-demo/src/main/webapp/WEB-INF/web.xml b/eugene-demo/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..0405d9f --- /dev/null +++ b/eugene-demo/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'> + +<web-app> + + <listener> + <listener-class>org.codelutin.generator.demo.http.UploadedFileSessionListener</listener-class> + </listener> + + <servlet> + <servlet-name>dispatcher</servlet-name> + <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> + <load-on-startup>1</load-on-startup> + </servlet> + <servlet> + <servlet-name>downloadResult</servlet-name> + <servlet-class>org.codelutin.generator.demo.http.DownloadResultServlet</servlet-class> + <load-on-startup>1</load-on-startup> + </servlet> + + <servlet-mapping> + <servlet-name>dispatcher</servlet-name> + <url-pattern>*.htm</url-pattern> + </servlet-mapping> + <servlet-mapping> + <servlet-name>downloadResult</servlet-name> + <url-pattern>/downloadResultServlet</url-pattern> + </servlet-mapping> + + <!-- session-config> + <session-timeout>45</session-timeout> + </session-config--> + + <welcome-file-list> + <welcome-file> + index.jsp + </welcome-file> + </welcome-file-list> + +</web-app> diff --git a/eugene-demo/src/main/webapp/css/layout.css b/eugene-demo/src/main/webapp/css/layout.css new file mode 100644 index 0000000..c32cd83 --- /dev/null +++ b/eugene-demo/src/main/webapp/css/layout.css @@ -0,0 +1,86 @@ +/* Layout */ +body { + background-image: url("../images/lutin.gif"); + background-repeat: no-repeat; + background-position: right top; + margin:0px; + padding:15px; + color:#333; + background-color:white; + font-size: 85%; +} + +.Message { + font-size: 14px; + font-weight: bold; + font-family: verdana, arial, helvetica, sans-serif; + border:1px solid black; + background-color:#deecf1; + padding: 5px; + margin-bottom: 5px; +} + +.Error { + font-size: 14px; + font-weight: bold; + font-family: verdana, arial, helvetica, sans-serif; + border:1px solid black; + background-color:#ffecf1; + padding: 5px; + margin-bottom: 5px; +} + +li a { + font-style: italic; +} +a { + color: blue; + text-decoration: none; +} +a:hover { + color: orange; + text-decoration: underline; +} + +.errors { + color: red; +} + +.genDetails { + padding: 5px; + border: 1px dashed black; + width: 400px; + margin-top: 10px; +} + +.genDetails ul { + margin-top: 2px; + margin-bottom: 2px; +} + +.left { + float: left; + width: 40%; + margin: 0; + padding: 0; + text-align: left; +} + +.right { + float: left; + width: 60%; + margin: 0; + padding: 0; + text-align: right; +} +.explanations { + padding: 5px; + border: 1px dashed black; + margin-top: 10px; +} +.hidden { + display: none; +} +.stepSelected { + color: orange; +} diff --git a/eugene-demo/src/main/webapp/images/flags/en.gif b/eugene-demo/src/main/webapp/images/flags/en.gif new file mode 100644 index 0000000..c3265c9 Binary files /dev/null and b/eugene-demo/src/main/webapp/images/flags/en.gif differ diff --git a/eugene-demo/src/main/webapp/images/flags/fr.gif b/eugene-demo/src/main/webapp/images/flags/fr.gif new file mode 100644 index 0000000..5ed337b Binary files /dev/null and b/eugene-demo/src/main/webapp/images/flags/fr.gif differ diff --git a/eugene-demo/src/main/webapp/images/flags/it.gif b/eugene-demo/src/main/webapp/images/flags/it.gif new file mode 100644 index 0000000..0b4fd13 Binary files /dev/null and b/eugene-demo/src/main/webapp/images/flags/it.gif differ diff --git a/eugene-demo/src/main/webapp/images/flags/zh.gif b/eugene-demo/src/main/webapp/images/flags/zh.gif new file mode 100644 index 0000000..d32a21a Binary files /dev/null and b/eugene-demo/src/main/webapp/images/flags/zh.gif differ diff --git a/eugene-demo/src/main/webapp/images/lutin.gif b/eugene-demo/src/main/webapp/images/lutin.gif new file mode 100644 index 0000000..d2377a5 Binary files /dev/null and b/eugene-demo/src/main/webapp/images/lutin.gif differ diff --git a/eugene-demo/src/main/webapp/images/lutin.png b/eugene-demo/src/main/webapp/images/lutin.png new file mode 100644 index 0000000..2e26f29 Binary files /dev/null and b/eugene-demo/src/main/webapp/images/lutin.png differ diff --git a/eugene-demo/src/main/webapp/images/valide-false.gif b/eugene-demo/src/main/webapp/images/valide-false.gif new file mode 100644 index 0000000..f16854c Binary files /dev/null and b/eugene-demo/src/main/webapp/images/valide-false.gif differ diff --git a/eugene-demo/src/main/webapp/images/valide-true.gif b/eugene-demo/src/main/webapp/images/valide-true.gif new file mode 100644 index 0000000..c85de8d Binary files /dev/null and b/eugene-demo/src/main/webapp/images/valide-true.gif differ diff --git a/eugene-demo/src/main/webapp/index.jsp b/eugene-demo/src/main/webapp/index.jsp new file mode 100644 index 0000000..09022ef --- /dev/null +++ b/eugene-demo/src/main/webapp/index.jsp @@ -0,0 +1,3 @@ +<%@ include file="/WEB-INF/jsp/common.jsp" %> + +<c:redirect url="/listGenerators.htm"/> diff --git a/eugene-demo/src/site/fr/rst/index.rst b/eugene-demo/src/site/fr/rst/index.rst new file mode 100644 index 0000000..18f35de --- /dev/null +++ b/eugene-demo/src/site/fr/rst/index.rst @@ -0,0 +1,58 @@ +Lutin Generator +=============== + +.. contents:: + + +Présentation +------------ + +La génération de code prend maintenant une place importante dans le développement d'applications. +Que ce soit pour une réduction des temps de développement ou pour l'automtisation de tâches, la génération de code couvre tellement de domaines que des milliers de générateurs émergent. +Chaque générateur a ses spécificités : le format de la source, le language utilisé pour son développement, le format cible, ... + +Lutin Generator est un socle de générateurs. +Chaque générateur est une classe Java autonome. +Il prend un ensemble de fichiers en entrée et écrit le resultat de la génération dans un dossier. + +Le format d'entrée de chaque générateur doit être bien définit pour que celui-ci soit capable de le comprendre. + +Pour pouvoir effectuer la génération, le générateur doit dans un premier temps lire le format d'entrée et le charger en mémoire. +Il interprètera ensuite son contenu du modèle chargé et fera la généreration de code en fonction des éléments de ce modèle. + +Le cas UML +---------- + +La réalisation de modèles UML est une phase importante dans la vie d'un projet, elle permet d'éclaircir les zones d'ombres qui peuvent exister pendant la conception. +L'UML joue un rôle intermédiaire entre la définition des besoins et le code source. +Les diagrammes UML (diagrammes de classes, d'états, de séquences...) sont donc souvent proches du contenu espéré du code source. +Il est donc possible de générer une partie plus ou moins importante du code source. + +En l'occurence, à partir de diagrammes de classes il est possible de générer la couche de persistance ou encore de distribution d'une application. +Les diagrammes d'état transition peuvent servir à modéliser la navigation entre les écrans. + +Transformation du modèle +~~~~~~~~~~~~~~~~~~~~~~~~ + +Lutin Generator contient des générateurs types capables de prendre en entrée des diagrammes de classes ou d'état. +Cependant, les différents outils de modélisation UML possèdent chacun leur propre format, mais la plupart permettent d'enregistrer directement ou d'exporter en XMI (XML Metadata Interchange) qui est un format standard d'export UML. +Le XMI est un bon format pour les outils UML mais il est trop verbeux pour être écrit à la main, c'est pourquoi on utilise des transformations XSL permettant de transformer le XMI en un format pivot simple et épuré. + +Les diagrammes de classes donneront lieu à des fichiers .objectmodel alors que les diagrammes d'état donneront des fichiers .statemodel + +Chargement en mémoire +~~~~~~~~~~~~~~~~~~~~~ + +Chaque générateur va utiliser un format d'entrée défini, il est donc codé pour pouvoir interpréter ce format. +Par exemple, les générateurs se basant sur des diagrammes de classes vont pouvoir lire les fichiers .objectmodel. De même pour les diagrammes d'état avec les fichiers .statemodel. + +Pour faciliter la manipulaton du modèle, il peut être entièrement représenté par des classes Java. + +Processus de génération +----------------------- + +La première étape pour pouvoir effectuer la génération est de choisir un générateur. + +Chaque générateur étant compatible avec un format donné, on doit ensuite choisir le fichier correspondant au bon format d'entrée. + +La dernière étape enfin est la génération de code à proprement parler. diff --git a/eugene-demo/src/test/java/org/codelutin/generator/demo/files/FileHandlerTest.java b/eugene-demo/src/test/java/org/codelutin/generator/demo/files/FileHandlerTest.java new file mode 100644 index 0000000..5811bea --- /dev/null +++ b/eugene-demo/src/test/java/org/codelutin/generator/demo/files/FileHandlerTest.java @@ -0,0 +1,39 @@ +package org.codelutin.generator.demo.files; + +import java.io.File; + +import junit.framework.TestCase; + +public class FileHandlerTest extends TestCase { + + private File srcFile; + private String isolator; + private FileHandler fh; + + @Override + protected void setUp() throws Exception { + srcFile = File.createTempFile("testFileHandlerFile", "file"); + if (!srcFile.exists()) { + srcFile.createNewFile(); + } + isolator = "" + System.currentTimeMillis(); + fh = FileHandler.getInstance(); + } + + @Override + protected void tearDown() throws Exception { + if (srcFile.exists()) { + srcFile.delete(); + } + fh.unvalidateIsolator(isolator); + } + + public void testModel() throws Exception { + assertTrue(srcFile.exists()); + fh.addModel(isolator, "testName", srcFile); + File f = fh.getModel(isolator, "testName"); + assertNotNull(f); + assertTrue(f.exists()); + } + +} diff --git a/eugene/LICENSE.txt b/eugene/LICENSE.txt new file mode 100644 index 0000000..3f7b8b1 --- /dev/null +++ b/eugene/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/eugene/README.txt b/eugene/README.txt new file mode 100644 index 0000000..d2e50d3 --- /dev/null +++ b/eugene/README.txt @@ -0,0 +1,2 @@ +To deploy new version of pom: mvn deploy +To install localy: mvn install diff --git a/eugene/TODO b/eugene/TODO new file mode 100644 index 0000000..c834686 --- /dev/null +++ b/eugene/TODO @@ -0,0 +1,31 @@ +avant de faire des """new FileWriter(outputFile)""" il faudrait etre sur que +le repertoire dans lequel on souhaite ecrire existe et donc faire un +outputFile.getParentFile().mkdirs() + +Les interfaces ObjectModelXXX ne permettent que la lecture... Il est impossible +de les modifier sans passer par une implémenation. Par exemple +org.codelutin.generator.models.object.xml.ObjectModelClassImpl pour +ObjectModelClass. Ainsi, il faut choisir un type d'implémentation pour pouvoir +modifier un objet censé en être indépendant. L'idée serait donc de généraliser +les méthodes non spécifiques à une implémentation, transformer les interfaces +en classes (éventuellement abstraites, à étudier...) gérant la lecture et +l'écriture sur les données du modèle. + +Etudier les faisabilité de rajouter des ModelModifier dans lutingenerator. +Principe : Après la génération de l'ObjectModel et avant la génération de code, +appliquer au modèle un modificateur qui modifie le modèle afin de le rendre +conforme aux besoins de l'application à l'instar de TopiaObjectModelModifier +(dans ToPIA) qui rajoute au modèle des classe d'association là où il y a des +relatinos entre deux entités du modèle. + +2005/07/28 (poussin) +- utiliser http://jakarta.apache.org/commons/digester pour le parsage XML a la + place de XMLObjetParser. +2007/05/25 (chatellier) +- passage à digester effectué +- Seul l'implementation UIModel n'est pas complète (pas de regles digester) + @see DigesterUIModelRuleSet.addRuleInstances(Digester) + +2007/06/01 (chatellier) +La feuille xmi1.2ToObjectModel est difficilement validée par ant 1.7. +Erreurs bloquantes corrigées, mais il reste des warnings. \ No newline at end of file diff --git a/eugene/changelog.txt b/eugene/changelog.txt new file mode 100644 index 0000000..d08f709 --- /dev/null +++ b/eugene/changelog.txt @@ -0,0 +1,99 @@ +1.0.0 xxx xxx + * Add multiple models loading and restricted package generation + * Add Enumeration support + * Add Dependency support + * Add ImportsManager + * Add useful methods in 'GeneratorUtil' + * Improve ant task + * Move to org.nuiton groupid + * Rename project to Eugene + +0.65 chatellier 200903xx + * Format all code, add generic + +0.64 chemit 20090218 + * 20090218 [chatellier] Move test to junit 4 + * 20090129 [thimel] rename Util class to GeneratorUtil + * 20090129 [chemit] use lutinproject 3.4 (suppress javadoc plugin invocation) + +0.63 chemit 20081215 + * 20081215 [chemit] fix up to date regression on generation + +0.62 chemit 20081210 + * 20081210 [chemit] use lutinproject 3.2 and lutinutil 1.0 + * 20081208 [chorlet] - correction bug #1737: Prise en compte du MetaModel UML dans les fichiers XMI + - ajout du support des fichiers default-java.xml et default-uml14.xmi + + * 20081203 [chemit] add a encoding property on generator to control file generation encoding + * 20081118 [chemit] use lutinproject 3.1 + * 20081117 [chemit] : GeneratorTask can have a dedicated classLoader to be used to instanciate generator implementations + +0.61 chatellier 20081114 + * 20081101 [chemit] + - add a parent setter on ChildGenerator + - add an excludeTemplates property on Generator and GeneratorTask to permit exclusion of generators for some composite generator + +0.60 chemit 20081013 + * 20081013 [chemit] + - make tests works again + - clean pom + +ver-0-51 thimel 20080925 + + * 20080925 [thimel] super pom in version 3.0 + * 20080901 [chatellier] Maven2 layout and LGPL3 + * 20070528 [chatellier] add tag values support to stateModel + * 20070528 [chatellier] modify defaut stateModel generation + * 20070523 [chatellier] remove lutinxml dependency + * 20070523 [chatellier] UIModel implementation over digester : + - use generics + - non tested + - no digester rules definided (no samples available) + * 20070523 [chatellier] change property reverveAttribute to + reverveAttributeName to resolve conflict in objectModel model. + * 20070522 [chatellier] modify ObjectModel implementation : + - to use JavaBeans conventions + - parsed with commons-digester + - to use generics + * 20070520 [chatellier] add stateModel (parsed with commons-digester) + * 20070520 [chatellier] correct generic type error on objectModel interfaces + +ver-0-50 poussin 20070425 + + * add associationType for all attributes + * 20070420 [chatellier] Ajout de l'export de la version du modèle xmi dans + xmi1.2ToObjectModel.xsl + * 20070420 [chatellier] ajout de la DTD objectModel + +ver-0-31 thimel 20060825 + + * ajout de isIndexed sur les attributs + * isOrdered est vrai si isIndexed est vrai ou que le tagValue order-by est + present ou que ordering fixe sur ordered + * Ajout de validateurs de modele + impl de validateur "basiques" base sur des + noms (attributs, classes, ...). + +ver-0-30 thimel 20060303 + + * Ajout des exceptions pour les operations + * Correction du support des interfaces et classes abstraites + * Double compatibilite Poseidon 3.2 / 4 + +ver-0-29 thimel 20060228 + + * Support de l'hértage pour les classes d'association + +ver-0-28 thimel 20060224 + + * Support de Poseidon4 + * Possibilite d'avoir des tagValues sur les modeles + * Ajout de l'extraction de ordered et de la navigabilite + +ver-0-27 thimel 20051213 + + * Ajout d'une methode pour avoir la liste des attributs d'une classe + * Correction erreur de fonctionnement dans ObjectModelImpl(XML).getInterface (doit renvoyer null si non trouve) + +0.26 + + * Ajout du support des stereotypes sur les attributs diff --git a/eugene/pom.xml b/eugene/pom.xml new file mode 100644 index 0000000..f242060 --- /dev/null +++ b/eugene/pom.xml @@ -0,0 +1,235 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <parent> + <groupId>org.nuiton</groupId> + <artifactId>eugene</artifactId> + <version>1.0.0</version> + </parent> + + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene</artifactId> + + <!-- POM Relationships : Inheritance : Dependencies --> + <dependencies> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + </dependency> + + <dependency> + <groupId>commons-digester</groupId> + <artifactId>commons-digester</artifactId> + </dependency> + + <!-- JAXP parser impl for digester --> + <dependency> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + </dependency> + + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant</artifactId> + </dependency> + + <dependency> + <groupId>dom4j</groupId> + <artifactId>dom4j</artifactId> + <!--exclusions> + <exclusion> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + </exclusion> + </exclusions--> + </dependency> + + <!-- dom4j dep --> + <dependency> + <groupId>jaxen</groupId> + <artifactId>jaxen</artifactId> + <!--exclusions> + <exclusion> + <groupId>com.ibm.icu</groupId> + <artifactId>icu4j</artifactId> + </exclusion> + <exclusion> + <groupId>xerces</groupId> + <artifactId>xmlParserAPIs</artifactId> + </exclusion> + </exclusions--> + </dependency> + + <!-- Meta model uml d'eclipse --> + <dependency> + <groupId>org.eclipse.uml2.uml</groupId> + <artifactId>resources</artifactId> + <!--exclusions> + <exclusion> + <groupId>org.eclipse.uml2</groupId> + <artifactId>uml</artifactId> + </exclusion> + </exclusions--> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + + </dependencies> + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + <name>EUGene</name> + + <description>Efficient Universal Generator.</description> + <inceptionYear>2004</inceptionYear> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + <packaging>jar</packaging> + + <build> + + <defaultGoal>install</defaultGoal> + + <resources> + <resource> + <directory>${maven.src.dir}/main/xsl</directory> + <includes> + <include>**/*.xsl</include> + </includes> + </resource> + </resources> + + </build> + + <!-- ************************************************************* --> + <!-- *** Build Environment ************************************** --> + <!-- ************************************************************* --> + + <!-- Developers --> + <developers> + <developer> + <name>Benjamin Poussin</name> + <id>bpoussin</id> + <email>poussin@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + <role>Debian packager</role> + </roles> + </developer> + + <developer> + <name>Arnaud Thimel</name> + <id>athimel</id> + <email>thimel@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + + <developer> + <name>Julien Ruchaud</name> + <id>jruchaud</id> + <email>ruchaud@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + + <developer> + <name>Eric Chatellier</name> + <id>echatellier</id> + <email>chatellier@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + + <developer> + <name>Stéphane Chorlet</name> + <id>schorlet</id> + <email>chorlet@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + + <developer> + <name>Tony Chemit</name> + <id>tchemit</id> + <email>chemit@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + </developers> + + <profiles> + <!-- perform only on a release stage when using the maven-release-plugin --> + <profile> + <id>release-profile</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + + <!-- launch in a release the assembly automaticly --> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>create-assemblies</id> + <phase>verify</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + <configuration> + <attach>false</attach> + <descriptorRefs> + <descriptorRef>deps</descriptorRef> + <descriptorRef>full</descriptorRef> + </descriptorRefs> + </configuration> + </plugin> + + </plugins> + </build> + </profile> + </profiles> + +</project> + diff --git a/eugene/src/main/assembly/deps.xml b/eugene/src/main/assembly/deps.xml new file mode 100644 index 0000000..2aeaf6d --- /dev/null +++ b/eugene/src/main/assembly/deps.xml @@ -0,0 +1,45 @@ +<assembly> + <id>deps</id> + <formats> + <format>zip</format> + </formats> + <!-- This don't support SNAPSHOT --> + <dependencySets> + <dependencySet> + <outputDirectory>lib</outputDirectory> + <excludes> + <exclude>junit:junit</exclude> + <exclude>${artifact.groupId}:${artifact.artifactId}</exclude> + </excludes> + <scope>runtime</scope> + </dependencySet> + </dependencySets> + <fileSets> + <fileSet> + <directory>target</directory> + <outputDirectory>/</outputDirectory> + <includes> + <include>*.jar</include> + </includes> + <excludes> + <exclude>*-sources.jar</exclude> + <exclude>*-javadoc.jar</exclude> + </excludes> + </fileSet> + <fileSet> + <outputDirectory>/</outputDirectory> + <includes> + <include>README*</include> + <include>LICENSE*</include> + <include>pom.xml</include> + </includes> + </fileSet> + <fileSet> + <outputDirectory>/</outputDirectory> + <directory>target/classes</directory> + <includes> + <include>THIRD-PARTY.txt</include> + </includes> + </fileSet> + </fileSets> +</assembly> \ No newline at end of file diff --git a/eugene/src/main/assembly/full.xml b/eugene/src/main/assembly/full.xml new file mode 100644 index 0000000..656976f --- /dev/null +++ b/eugene/src/main/assembly/full.xml @@ -0,0 +1,47 @@ +<assembly> + <id>full</id> + <formats> + <format>zip</format> + </formats> + <!-- This don't support SNAPSHOT --> + <dependencySets> + <dependencySet> + <outputDirectory>lib</outputDirectory> + <excludes> + <exclude>${artifact.groupId}:${artifact.artifactId}</exclude> + </excludes> + <scope>runtime</scope> + </dependencySet> + </dependencySets> + <fileSets> + <fileSet> + <directory>target</directory> + <outputDirectory>/</outputDirectory> + <includes> + <include>*.jar</include> + </includes> + <excludes> + <exclude>*-sources.jar</exclude> + </excludes> + </fileSet> + <fileSet> + <outputDirectory>/</outputDirectory> + <includes> + <include>README*</include> + <include>LICENSE*</include> + <include>pom.xml</include> + </includes> + </fileSet> + <fileSet> + <outputDirectory>/</outputDirectory> + <directory>target/classes</directory> + <includes> + <include>THIRD-PARTY.txt</include> + </includes> + </fileSet> + <fileSet> + <directory>src</directory> + <!--useDefaultExcludes>true</useDefaultExcludes--> + </fileSet> + </fileSets> +</assembly> \ No newline at end of file diff --git a/eugene/src/main/java/org/nuiton/eugene/AbstractObjectModelGenerator.java b/eugene/src/main/java/org/nuiton/eugene/AbstractObjectModelGenerator.java new file mode 100644 index 0000000..c3e847c --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/AbstractObjectModelGenerator.java @@ -0,0 +1,54 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +import org.nuiton.eugene.models.object.ObjectModelElement; + +/** + * AbstractObjectModelGenerator. + * + * Created: Jun 25, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class AbstractObjectModelGenerator extends ObjectModelGenerator { // AbstractObjectModelGenerator + + public AbstractObjectModelGenerator() { + super(); + } + + public AbstractObjectModelGenerator(Generator parent) { + super(parent); + } + + public String capitalizeName(ObjectModelElement e) { + String name = e.getName(); + if (name == null) { + throw new GeneratorException("Element " + e + + " must have an valid name"); + } + return GeneratorUtil.capitalize(name); + } + +} // AbstractObjectModelGenerator + diff --git a/eugene/src/main/java/org/nuiton/eugene/ChildGenerator.java b/eugene/src/main/java/org/nuiton/eugene/ChildGenerator.java new file mode 100644 index 0000000..02b5f7d --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/ChildGenerator.java @@ -0,0 +1,94 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +/** + * ChildGenerator. + * + * Created: 5 août 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public abstract class ChildGenerator extends Generator { // ChildGenerator + + protected Generator parent = null; + + public ChildGenerator() { + super(); + } + + public ChildGenerator(Generator parent) { + setParent(parent); + } + + @Override + public String getProperty(String name) { + String propName = null; + if (parent == null) { + propName = super.getProperty(name); + } else { + propName = parent.getProperty(name); + } + return propName; + } + + @Override + public boolean getOverwrite() { + boolean result; + if (parent == null) { + result = super.getOverwrite(); + } else { + result = parent.getOverwrite(); + } + return result; + } + + @Override + protected long getLastModifiedSource() { + long lastModified = 0; + if (parent == null) { + lastModified = super.getLastModifiedSource(); + } else { + lastModified = parent.getLastModifiedSource(); + } + return lastModified; + } + + @Override + protected boolean canGeneratePackage(String packageName) { + boolean canGenerate = true; + + if (parent == null) { + canGenerate = super.canGeneratePackage(packageName); + } else { + canGenerate = parent.canGeneratePackage(packageName); + } + + return canGenerate; + } + + public void setParent(Generator parent) { + this.parent = parent; + setEncoding(parent.getEncoding()); + } + +} // ChildGenerator diff --git a/eugene/src/main/java/org/nuiton/eugene/Generator.java b/eugene/src/main/java/org/nuiton/eugene/Generator.java new file mode 100644 index 0000000..f82b2b6 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/Generator.java @@ -0,0 +1,231 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.util.List; +import java.util.Properties; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Generator. + * + * Created: 5 août 2004 + * + * @author Cedric Pineau <pineau@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public abstract class Generator { + + protected static Log log = LogFactory.getLog(Generator.class); + + protected Properties properties = new Properties(); + protected boolean overwrite = true; + /** date de derniere modification de la source la plus recente */ + protected long lastModifiedSource = 0; + + protected List<String> excludeTemplates; + + /** + * List of package to allow generation. + * + * If {@code null} or empty, generate all packages. + */ + protected List<String> generatedPackages; + + protected String encoding; + + public Generator() { + } + + public void generate(File file, File destDir) { + generate(new File[] { file }, destDir); + } + + public void generate(File file) { + generate(new File[] { file }, new File(".")); + } + + public void setProperties(Properties p) { + this.properties = p; + } + + public void setOverwrite(boolean v) { + overwrite = v; + } + + public boolean getOverwrite() { + return overwrite; + } + + public String getEncoding() { + return encoding; + } + + public void setEncoding(String encoding) { + this.encoding = encoding; + } + + /** + * Set list of package to allow generation. + * + * If {@code null} or empty, generate all packages. + * + * @param generatedPackages list of package to generate + */ + public void setGeneratedPackages(List<String> generatedPackages) { + this.generatedPackages = generatedPackages; + } + + /** + * Permet de recuperer la proprieté passé en argument + * + * @param name le nom de la propriete + * @return la valeur de la propriété + */ + public String getProperty(String name) { + return properties.getProperty(name); + } + + protected void setLastModifiedSource(File[] files) { + for (File file : files) { + if (isNewerThanSource(file)) { + lastModifiedSource = file.lastModified(); + log.debug("source date: " + lastModifiedSource + + " files[i] date: " + file.lastModified() + "(" + file + + ")"); + } + } + } + + protected long getLastModifiedSource() { + + return lastModifiedSource; + } + + /** + * @param file fichier a tester + * @return vrai si le fichier passé en parametre est plus recent que + * les sources sur generateur. + */ + protected boolean isNewerThanSource(File file) { + if (log.isDebugEnabled()) { + log.debug("source date: " + getLastModifiedSource() + + " file date: " + file.lastModified() + "(" + file + ")"); + } + return file.lastModified() > getLastModifiedSource(); + } + + protected File getDestinationFile(File destDir, String filename) { + return new File(destDir, filename); + } + + protected void write(File outputFile, MonitorWriter out) { + File write0utputFile = outputFile; + if (out.isModified()) { + try { + write0utputFile = outputFile.getCanonicalFile(); + write0utputFile.getParentFile().mkdirs(); + + Writer output = null; + + if (encoding != null) { + if (log.isDebugEnabled()) { + log.debug("Force encoding to " + encoding + " : " + + this); + } + output = new OutputStreamWriter(new FileOutputStream( + write0utputFile), encoding); + } else { + output = new OutputStreamWriter(new FileOutputStream( + write0utputFile)); + } + + output.write(out.getBuffer().toString()); + output.close(); + } catch (IOException eee) { + if (log.isWarnEnabled()) { + log.warn("Unable to write file : " + + write0utputFile.getAbsolutePath(), eee); + } + throw new RuntimeException(eee); + } + } + } + + public List<String> getExcludeTemplates() { + return excludeTemplates; + } + + public void setExcludeTemplates(List<String> excludeTemplates) { + this.excludeTemplates = excludeTemplates; + } + + public abstract void generate(File[] file, File destDir); + + /** + * Test if given package is allowed for generation. + * + * An element can be generated if his package is in the {@link generatedPackages} list + * or if {@link generatedPackages} is null or empty. + * + * @param packageName package name to test + * @return generation allowed + */ + protected boolean canGeneratePackage(String packageName) { + boolean canGenerate = true; + + // if not generation restriction, generate everything + if (generatedPackages != null && !generatedPackages.isEmpty()) { + canGenerate = false; + + // on doit donc tester que le package courant + // soit est egal a un des element de la liste + // soit commence par ca + for (String generatedPackage : generatedPackages) { + + // cas egalité parfaites + if (packageName != null && packageName.equals(generatedPackage)) { + canGenerate = true; + } + + // cas commence par (on ajout un point à la fin) + String localGeneratedPackage = generatedPackage; + if (!localGeneratedPackage.endsWith(".")) { + localGeneratedPackage += "."; + } + if (packageName != null && packageName.startsWith(localGeneratedPackage)) { + canGenerate = true; + } + + } + } + + return canGenerate; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/GeneratorException.java b/eugene/src/main/java/org/nuiton/eugene/GeneratorException.java new file mode 100644 index 0000000..38671c1 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/GeneratorException.java @@ -0,0 +1,46 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +/** + * GeneratorException. + * + * Created: 21 juin 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class GeneratorException extends RuntimeException { // GeneratorException + + /** serialVersionUID */ + private static final long serialVersionUID = 5861583066249595300L; + + public GeneratorException(String msg) { + super(msg); + } + + public GeneratorException(String msg, Throwable e) { + super(msg, e); + } + +} // GeneratorException + diff --git a/eugene/src/main/java/org/nuiton/eugene/GeneratorTask.java b/eugene/src/main/java/org/nuiton/eugene/GeneratorTask.java new file mode 100644 index 0000000..eb57600 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/GeneratorTask.java @@ -0,0 +1,723 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Properties; +import java.util.ServiceLoader; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.URIResolver; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.taskdefs.MatchingTask; +import org.apache.tools.ant.types.Path; +import org.nuiton.util.FileUtil; +import org.nuiton.util.Resource; +import org.nuiton.util.ZipUtil; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +/** + * Ant generator Task. + * + * Exemple d'utilisation dans ant : + * + * <pre> + * <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask" + * classpath="${compile.classpath}:${targetbuild}:${resources}" /> + * + * <target name="generate" description="generate"> + * <generator srcdir="${modelDir}" destdir="${targetgen}" + * resolver="org.nuiton.exemple.ResourceResolver" + * templates="org.nuiton.example.JavaBeanGenerator" + * properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton" + * classpath="${compile.classpath}:${targetbuild}:${resources}" /> + * </target> + * </pre> + * + * Created: 14 janv. 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ par : + * $Author$ + */ +public class GeneratorTask extends MatchingTask { // GeneratorTask + + /** Ant classpath to use. */ + protected Path classpath; + + /** Template used in generation (comma separated). */ + protected String templates; + + /** Model directory. */ + protected File srcDir; + + /** Single model file. */ + protected File srcFile; + + /** Destination directory. */ + protected File destDir; + + /** + * Transformation to do on model (comma separated). + * + * Values are : - object (transform into object model) - state (transform + * into state model) + */ + protected String transformations = "object"; + + /** URI Resolver. */ + protected String resolver; + + /** + * Additional generator properties. + * + * Values are : - fullPackagePath : full package path - extraPackages : + * extra package path - defaultPackage (extra generated model files) + */ + protected Properties properties = new Properties(); + + /** Overwrite already existing generated files. */ + protected boolean overwrite; + + /** Encoding. Default to UTF-8. */ + protected String encoding = "UTF-8"; + + /** Generation directory (default to 'build') */ + protected String buildDirectory = "build"; + + /** + * Set the optional classpath to the XSL processor + * + * @param classpath + * the classpath to use when loading the XSL processor + */ + public void setClasspath(Path classpath) { + Path antDefaulClasspath = createClasspath(); + antDefaulClasspath.append(classpath); + } + + /** + * Set templates (fully-qualified-name) to use + * + * (comma-separated). + * + * @param templates + * template to use. + */ + public void setTemplates(String templates) { + this.templates = templates; + } + + /** + * Transformation to do. + * + * Values are : - object (transform into object model) - state (transform + * into state model) + * + * @param transformations + * transformations + */ + public void setTransformations(String transformations) { + this.transformations = transformations; + } + + /** + * Set the optional classpath to the XSL processor + * + * @return a path instance to be configured by the Ant core. + */ + protected Path createClasspath() { + if (classpath == null) { + classpath = new Path(getProject()); + } + return classpath.createPath(); + } + + /** + * Permet d'ajouter des properties. exemple: toto=1,package=org.nuiton + * + * @param properties + * properties + */ + public void setProperties(String properties) { + String[] props = properties.split(","); + for (String prop : props) { + String[] pv = prop.split("="); + this.properties.put(pv[0], pv[1]); + } + } + + /** + * Set overwrite value. + * + * @param overwrite + * overwrite value + */ + public void setOverwrite(boolean overwrite) { + this.overwrite = overwrite; + } + + /** + * Set encoding. + * + * @param encoding + * encoding + */ + public void setEncoding(String encoding) { + this.encoding = encoding; + } + + /** + * Set source directory. + * + * @param srcDir + * source directory + */ + public void setSrcdir(File srcDir) { + this.srcDir = srcDir; + } + + /** + * Set source file. + * + * @param srcFile + * source file + */ + public void setSrcfile(File srcFile) { + this.srcFile = srcFile; + } + + /** + * Set destination directory + * + * @param destDir + * destination directory + */ + public void setDestdir(File destDir) { + this.destDir = destDir; + } + + /** + * Set build directory. + * + * @param buildDirectory + * build directory + */ + public void setBuilddirectory(String buildDirectory) { + this.buildDirectory = buildDirectory; + } + + /** + * Set URI resolver (FQN). + * + * @param resolver + * uri resolver + */ + public void setResolver(String resolver) { + this.resolver = resolver; + } + + @Override + public void execute() throws BuildException { + + // check + if (templates == null) { + throw new BuildException("templates attribute must be set!", + getLocation()); + } + + if (destDir == null) { + throw new BuildException("destDir attribute must be set!", + getLocation()); + } + + if (!destDir.isDirectory()) { + throw new BuildException("destination directory \"" + destDir + + "\" does not exist or is not a directory", getLocation()); + } + + if (srcFile == null && srcDir == null) { + throw new BuildException( + "srcFile or srcDir attribute must be set!", getLocation()); + } + + if (srcFile != null && !srcFile.isFile()) { + throw new BuildException("src file \"" + srcFile + + "\" does not exist or is not a file", getLocation()); + } + + String[] templateGenerators = templates.split(","); + Generator[] generators = new Generator[templateGenerators.length]; + for (int i = 0; i < templateGenerators.length; i++) { + String templateName = templateGenerators[i].trim(); + try { + generators[i] = (Generator) Class.forName(templateName) + .newInstance(); + generators[i].setEncoding(encoding); + generators[i].setProperties(properties); + generators[i].setOverwrite(overwrite); + + } catch (ClassCastException e) { + log("Generator don't herite Generator Class", e, + Project.MSG_ERR); + } catch (ClassNotFoundException e) { + log("Unable to find generator" + templateName, e, + Project.MSG_ERR); + } catch (InstantiationException e) { + log("Unable to instanciate template" + templateName, e, + Project.MSG_ERR); + } catch (IllegalAccessException e) { + log("Unable to parse topia input file" + templateName, e, + Project.MSG_ERR); + } + } + + if (srcFile != null) { + // generate the source files + doExecute(srcFile, destDir, generators); + } else { + DirectoryScanner scanner; + scanner = getDirectoryScanner(srcDir); + + // Process all the files marked for styling + String[] includedFilenames = scanner.getIncludedFiles(); + List<File> includedFiles = new ArrayList<File>( + includedFilenames.length); + for (int i = 0; i < includedFilenames.length; ++i) { + includedFiles.add(new File(srcDir, includedFilenames[i])); + } + doExecute(includedFiles, destDir, generators); + } + } + + /** + * Equivalent to + * <tt>doExecute(new File[] { srcFile }, destDir, generators)</tt>. + * + * @param srcFile + * file to apply generator to + * @param destDir + * destination directory + * @param generators + * generators to apply + * @throws BuildException + * if can't generate + */ + protected void doExecute(File srcFile, File destDir, Generator[] generators) + throws BuildException { + doExecute(Collections.singletonList(srcFile), destDir, generators); + } + + /** + * Execute generation on specified files. + * + * @param srcFiles + * files to apply generator to + * @param destDir + * destination directory + * @param generators + * generators to apply + * @throws BuildException + * if can't generate + */ + protected void doExecute(List<File> srcFiles, File destDir, + Generator[] generators) throws BuildException { + + // log classpath + log("Using classpath : " + classpath); + + List<File> modelFiles = doConvertFiles(srcFiles, destDir); + + for (Generator generator : generators) { + if (generator != null) { + for (File modelFile : modelFiles) { + log("Applying " + generator.getClass().getSimpleName() + + " on " + modelFile.getAbsolutePath(), + Project.MSG_INFO); + generator.generate(modelFile, destDir); + } + } + } + } + + /** + * Convert srcFiles and return only eugene models files. + * + * Do following convertions : - unzip archive (zipped files) - xslt + * transformation (xmi files) - do nothing on model files + * + * @param srcFiles + * @param destDir + * @return model file list + */ + protected List<File> doConvertFiles(List<File> srcFiles, File destDir) { + + List<File> result = new ArrayList<File>(); + + // transform tranformations list + String[] transformationsArray = transformations.split(","); + + for (File file : srcFiles) { + + File currentFile = file; + + // unzip if needed + // after loop file is xmi + if (isArchiveFile(currentFile)) { + + File unzipDirectory = new File(buildDirectory, "xmi"); + if (unzipDirectory.exists()) { + unzipDirectory.mkdirs(); + } + // log + log("Unzip " + currentFile.getAbsolutePath() + " into " + + unzipDirectory.getAbsolutePath(), Project.MSG_INFO); + try { + ZipUtil.uncompress(file, unzipDirectory); + } catch (IOException e) { + throw new BuildException("Error on unzip archive", e); + } + + String xmiName = currentFile.getName().substring(0, + currentFile.getName().lastIndexOf('.')) + + ".xmi"; + currentFile = new File(unzipDirectory, xmiName); + } + + // transform file if needed + // after loop file is model (object, state, ui) + if (isXmiFile(currentFile)) { + String xmiVersion = getXmiVersion(currentFile); + + if (xmiVersion != null) { + + // model directory + File outputDirectory = new File(buildDirectory, "models"); + outputDirectory.mkdirs(); + // single model name + String modelName = currentFile.getName().substring(0, + currentFile.getName().lastIndexOf('.')); + + // copy .properties file + String propertyPath = currentFile.getParent(); + File propertyFile = new File(propertyPath, modelName + + ".properties"); + + if (propertyFile.exists()) { + File propertyOutputFile = new File(outputDirectory, + propertyFile.getName()); + try { + FileUtil.copy(propertyFile, propertyOutputFile); + } catch (IOException ioe) { + log("Cannot copy .properties file", ioe, + Project.MSG_ERR); + } + } + + for (String transformation : transformationsArray) { + + // object + if (transformation.trim().equalsIgnoreCase("object")) { + File outputFile = new File(outputDirectory, + modelName + ".objectmodel"); + if (xmiVersion.equals("1.2")) { + log("Apply XMI 1.2 to object model XSLT on " + + currentFile.getAbsolutePath(), + Project.MSG_INFO); + executeXSLT(currentFile, outputFile, + "xmi1.2ToObjectModel.xsl"); + } else if (xmiVersion.equals("2.1")) { + log("Apply XMI 2.1 to object model XSLT on " + + currentFile.getAbsolutePath(), + Project.MSG_INFO); + executeXSLT(currentFile, outputFile, + "xmi2.1ToObjectModel.xsl"); + } + + // can have more than one model file + // for one xmi + result.add(outputFile); + } + + // state + else if (transformation.trim() + .equalsIgnoreCase("state")) { + File outputFile = new File(outputDirectory, + modelName + ".statemodel"); + if (xmiVersion.equals("1.2")) { + log("Apply XMI 1.2 to state model XSLT on " + + currentFile.getAbsolutePath(), + Project.MSG_INFO); + executeXSLT(currentFile, outputFile, + "xmi1.2ToStateModel.xsl"); + } else if (xmiVersion.equals("2.1")) { + throw new BuildException( + "State model transformation is not supported for xmi 2.1"); + } + + // can have more than one model file + // for one xmi + result.add(outputFile); + } + } + } else { + throw new BuildException( + "Can't get xmi version from file : " + + currentFile.getAbsolutePath()); + } + } + + // others files + // we can have model files or non model file + else if (isModelFile(currentFile)) { + result.add(currentFile); + } + + } + + return result; + } + + /** + * Test if file is an archive. + * + * @param file + * file to test + * @return test result + */ + protected boolean isArchiveFile(File file) { + String fileName = file.getName(); + + boolean result = fileName.endsWith(".zargo") + || fileName.endsWith(".zuml"); + return result; + } + + /** + * Test if file is a xmi. + * + * @param file + * file to test + * @return test result + */ + protected boolean isXmiFile(File file) { + String fileName = file.getName(); + + boolean result = fileName.endsWith(".uml") || fileName.endsWith(".xmi"); + return result; + } + + /** + * Test if file is a model + * + * @param file + * file to test + * @return test result + */ + protected boolean isModelFile(File file) { + String fileName = file.getName(); + + boolean result = fileName.endsWith(".objectmodel") + || fileName.endsWith(".statemodel"); + return result; + } + + /** + * Try to find xmi version on a file. + * + * @param xmiFile + * file to inspect + * @return version or null if version can't have been found + */ + protected String getXmiVersion(File xmiFile) { + String version = null; + + SAXParserFactory factory = SAXParserFactory.newInstance(); + + try { + SAXParser parser = factory.newSAXParser(); + + XmiVersionHandler handler = new XmiVersionHandler(); + parser.parse(xmiFile, handler); + + version = handler.getVersion(); + } catch (ParserConfigurationException e) { + log("Can't parse file as xmi", e, Project.MSG_DEBUG); + } catch (SAXException e) { + log("Can't parse file as xmi", e, Project.MSG_DEBUG); + } catch (IOException e) { + log("Can't parse file as xmi", e, Project.MSG_DEBUG); + } + + return version; + } + + /** + * Sax handler to find xmi version into xmi document. + */ + protected class XmiVersionHandler extends DefaultHandler { + + public String version = null; + + public XmiVersionHandler() { + super(); + } + + public String getVersion() { + return version; + } + + @Override + public void startElement(String uri, String localName, String qName, + Attributes attributes) throws SAXException { + + if (qName.equals("XMI")) { + version = attributes.getValue("xmi.version"); + log("XMI version found : " + version, Project.MSG_DEBUG); + } + + if (version == null) { + version = attributes.getValue("xmi:version"); + log("XMI version found : " + version, Project.MSG_DEBUG); + } + + } + } + + /** + * Do XSLT transformation on given file using specific stylesheet. + * + * @param xmiFile + * xmi file to transform + * @param modelFile + * result of transformation + * @param stylesheet + * stylesheet to use + */ + protected void executeXSLT(File xmiFile, File modelFile, String stylesheet) { + + // Transformation XSL + try { + + // transform ant classpath into + // URLclassloader + ClassLoader urlLoader = null; + if (classpath != null) { + String[] jars = classpath.list(); + URL[] jarsURL = new URL[jars.length]; + for (int i = 0; i < jars.length; i++) { + jarsURL[i] = new File(jars[i]).toURI().toURL(); + } + urlLoader = new URLClassLoader(jarsURL); + } else { + urlLoader = Thread.currentThread().getContextClassLoader(); + } + + // Load Transformer with service loader + Iterator<TransformerFactory> itTransformerFactory = ServiceLoader + .load(TransformerFactory.class, urlLoader).iterator(); + if (!itTransformerFactory.hasNext()) { + throw new BuildException("No XSLT Transformer found"); + } + + TransformerFactory transformerFactory = itTransformerFactory.next(); + URL uxsl = Resource.getURL(stylesheet); + StreamSource stylesource = new StreamSource(uxsl.openStream()); + Transformer transformer = transformerFactory + .newTransformer(stylesource); + + if (properties.containsKey("fullPackagePath")) { + transformer.setParameter("fullPackagePath", properties + .getProperty("fullPackagePath")); + } + + if (properties.containsKey("extraPackages")) { + transformer.setParameter("extraPackages", properties + .getProperty("extraPackages")); + } + + if (resolver != null && !resolver.isEmpty()) { + Class<?> clazz = (Class<?>) Class.forName(resolver, true, + urlLoader); + URIResolver tresolver = null; + + // Try to set the base using the constructor + try { + // Look for a constructor with a String parameter (base) + Constructor<?> withBaseConstructor = clazz + .getConstructor(String.class); + // Set the xmi folder as the base + String base = xmiFile.getParentFile().getAbsolutePath(); + // Instantiate + tresolver = (URIResolver) withBaseConstructor + .newInstance(base); + } catch (Exception eee) { + log("Unable to instantiate resolver with String parameter", + eee, Project.MSG_WARN); + } + + // If resolver is still not created, create it using the default + // constructor + if (tresolver == null) { + tresolver = (URIResolver) clazz.newInstance(); + } + transformer.setURIResolver(tresolver); + } + + transformer.transform(new StreamSource(xmiFile.getAbsolutePath()), + new StreamResult(modelFile.getAbsolutePath())); + } catch (TransformerException e) { + throw new BuildException("Transformation exception (xslt)", e); + } catch (MalformedURLException e) { + throw new BuildException("Invalid jar url", e); + } catch (InstantiationException e) { + throw new BuildException("Can't init resolver", e); + } catch (IllegalAccessException e) { + throw new BuildException("Can't access resolver", e); + } catch (ClassNotFoundException e) { + throw new BuildException("Can't find resolver", e); + } catch (IOException e) { + throw new BuildException("Error while trying to access stylesheet", + e); + } + } + +} // GeneratorTask diff --git a/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java b/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java new file mode 100644 index 0000000..51558bf --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java @@ -0,0 +1,583 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ + +package org.nuiton.eugene; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.nuiton.eugene.models.Model; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + +/** + * GeneratorUtil. + * + * Created: 25 aout 2003 + * + * @author Benjamin Poussin <poussin@codelutin.com> Copyright Code Lutin + * @version $Revision$ + * Mise à jour: $Date$ + * By : $Author$ + */ +public class GeneratorUtil { + + /** + * return parent package of given package (return given package if it is a root package) + * eg : org.nuiton.eugene.models -> org.nuiton.eugene + * eg : org -> org + * warning : org.nuiton.eugene. -> org.nuiton.eugene + * + * @param packageName package + * @return parent package of given package + */ + public static String getParentPackageName(String packageName) { + String parentPackageName = packageName; + int index = packageName.lastIndexOf('.'); + if (index != -1) { + parentPackageName = packageName.substring(0, index); + } + return parentPackageName; + } + + /** + * return class name fr given fully qualified name (return given name if it is not fully qualified) + * eg : org.nuiton.eugene.models.ObjectClass -> ObjectClass + * eg : ObjectClass-> ObjectClass + */ + public static String getClassNameFromQualifiedName(String qualifiedName) { + String className = qualifiedName; + int index = qualifiedName.lastIndexOf('.'); + if (index != -1) { + className = qualifiedName.substring(index + 1); + } + return className; + } + + /** + * + * @param qualifiedName + * @return + */ + public static String getFilenameFromQualifiedName(String qualifiedName) { + return qualifiedName.replace('.', File.separatorChar); + } + + /** + * return all classifiers belonging to the given package recursively. The Collection may be empty. + * @param model + * @param packageName + * @see ObjectModelClassifier + * + * @return a Collection containing all classifiers belonging to the given package recursively. + */ + public static Collection<ObjectModelClassifier> getClassifiers( + ObjectModel model, String packageName) { + List<ObjectModelClassifier> classifiers = new ArrayList<ObjectModelClassifier>(); + for (ObjectModelClassifier classifier : model.getClassifiers()) { + if (classifier.getPackageName().startsWith(packageName)) { + classifiers.add(classifier); + } + } + return classifiers; + } + + /** + * @param attribute + * @return + * @see #getAttributeType(ObjectModelParameter, boolean) + */ + public static String getAttributeType(ObjectModelParameter attribute) { + return getAttributeType(attribute, false); + } + + /** + * Retourne le type de l'attribut, c-a-d une List ou une collection + * ou le type defini si la cardinalité n'est pas multiple + * + * @param attribute + * @param useGenerics + * @return attribute type + */ + public static String getAttributeType(ObjectModelParameter attribute, + boolean useGenerics) { + String result; + if (attribute instanceof ObjectModelAttribute + && isNMultiplicity((ObjectModelAttribute) attribute)) { + if (((ObjectModelAttribute) attribute).isOrdered()) { + result = "java.util.List"; + } else { + result = "java.util.Collection"; + } + if (useGenerics) { + result += "<" + attribute.getType() + ">"; + } + } else { + result = attribute.getType(); + } + return result; + } + + /** + * Indicates if the specified attribute has a primitive type (byte, boolean, ...) + * @param attribute + * @return true if the attribute has a primitive type + */ + public static boolean isPrimitiveAttributeType( + ObjectModelAttribute attribute) { + if (isNMultiplicity(attribute)) { + return false; + } + String type = attribute.getType(); + return ("byte".equals(type) || "short".equals(type) + || "int".equals(type) || "long".equals(type) + || "float".equals(type) || "double".equals(type) + || "char".equals(type) || "boolean".equals(type)); + } + + /** + * return an init value for the specified attribute + * @param attribute + * @return a String with the corresponding attribute init value + */ + public static String getInitValue(ObjectModelAttribute attribute) { + if (isNMultiplicity(attribute)) { + return "new java.util.ArrayList()"; + } + return getInitValue(attribute.getType()); + } + + public static String getInitValue(String type) { + if ("byte".equals(type)) { + return "0"; + } + if ("short".equals(type)) { + return "0"; + } + if ("int".equals(type)) { + return "0"; + } + if ("long".equals(type)) { + return "0"; + } + if ("float".equals(type)) { + return "0"; + } + if ("double".equals(type)) { + return "0"; + } + if ("char".equals(type)) { + return "\u0000"; + } + if ("boolean".equals(type)) { + return "false"; + } + if ("java.lang.String".equals(type)) { + return null; + } + if ("java.lang.Date".equals(type)) { + return null; + } + return null; + } + + public static String getCastValue(String type, String o) { + if ("byte".equals(type)) { + return "((Byte)" + o + ").byteValue()"; + } + if ("short".equals(type)) { + return "((Short)" + o + ").shortValue()"; + } + if ("int".equals(type)) { + return "((Integer)" + o + ").intValue()"; + } + if ("long".equals(type)) { + return "((Long)" + o + ").longValue()"; + } + if ("float".equals(type)) { + return "((Float)" + o + ").floatValue()"; + } + if ("double".equals(type)) { + return "((Double)" + o + ").doubleValue()"; + } + if ("char".equals(type)) { + return "((Character)" + o + ").charValue()"; + } + if ("boolean".equals(type)) { + return "((Boolean)" + o + ").booleanValue()"; + } + if ("void".equals(type)) { + return ""; + } + return "(" + type + ")" + o; + } + + public static String getHashCodeExpression(String type, String o) { + String result = o; + if ("byte".equals(type)) { + result = "new Byte(" + o + ")"; + } + if ("short".equals(type)) { + result = "new Short(" + o + ")"; + } + if ("int".equals(type)) { + result = "new Integer(" + o + ")"; + } + if ("long".equals(type)) { + result = "new Long(" + o + ")"; + } + if ("float".equals(type)) { + result = "new Float(" + o + ")"; + } + if ("double".equals(type)) { + result = "new Double(" + o + ")"; + } + if ("char".equals(type)) { + result = "new Character(" + o + ")"; + } + if ("boolean".equals(type)) { + result = "new Boolean(" + o + ")"; + } + return result + ".hashCode()"; + } + + /** + * @param params + * @return la chaine de caractere dont on a besoin pour la declaration + * des parametres d'une methode. + */ + public static String getMethodParameterDeclaration( + Collection<ObjectModelParameter> params) { + StringBuffer result = new StringBuffer(); + for (Iterator<ObjectModelParameter> j = params.iterator(); j.hasNext();) { + ObjectModelParameter parameter = j.next(); + result.append(getAttributeType(parameter) + " " + + parameter.getName()); + if (j.hasNext()) { + result.append(", "); + } + } + return result.toString(); + } + + /** + * @param params + * @return la chaine de caractere qui represente chaque nom de parametre + * separer par des ','. + */ + public static String getMethodParameterListName( + Collection<ObjectModelParameter> params) { + StringBuffer result = new StringBuffer(); + for (Iterator<ObjectModelParameter> j = params.iterator(); j.hasNext();) { + ObjectModelParameter parameter = j.next(); + result.append(parameter.getName()); + if (j.hasNext()) { + result.append(", "); + } + } + return result.toString(); + } + + /** + * @param attribute + * @return vrai si la cardinalite de l'attribut est superieur a 1, c-a-d + * si MaxMultiplicity == -1 ou > 1 + */ + public static boolean isNMultiplicity(ObjectModelAttribute attribute) { + return isNMultiplicity(attribute.getMaxMultiplicity()); + } + + public static boolean isNMultiplicity(int multiplicity) { + return (multiplicity == -1) || (multiplicity > 1); + } + + /** + * @param attribute + * @return true is the multiplicity of the given attribute is exactly 1 + */ + public static boolean isOneMultiplicity(ObjectModelAttribute attribute) { + if (attribute == null) { + return false; + } + return ((attribute.getMinMultiplicity() == 1) && (attribute + .getMaxMultiplicity() == 1)); + } + + /** + * + * @param word + * @return + */ + public static String toUpperCaseFirstLetter(String word) { + return capitalize(word); + } + + /** + * Capitalizes a String changing the first letter to title case. + * + * @param word word to Capitalize + * @return Capitalized word + */ + public static String capitalize(String word) { + return StringUtils.capitalize(word); + } + + /** + * + * @param word + * @return + */ + public static String toLowerCaseFirstLetter(String word) { + return word.substring(0, 1).toLowerCase() + word.substring(1); + } + + /** + * @param attribute + * @return true if the given attribute is a composition (composant of the reverse attribute) + */ + public static boolean isComposition(ObjectModelAttribute attribute) { + + boolean composition = false; + if (attribute != null && attribute.getReverseAttribute() != null) { + composition = attribute.getReverseAttribute().isComposite(); + } + return composition; + } + + public static String getParsingExpression(String type, + String attributeStringName) { + if ("byte".equals(type)) { + return "Byte.parseByte(" + attributeStringName + ")"; + } + if ("short".equals(type)) { + return "Short.parseShort(" + attributeStringName + ")"; + } + if ("int".equals(type)) { + return "Integer.parseInt(" + attributeStringName + ")"; + } + if ("long".equals(type)) { + return "Long.parseLong(" + attributeStringName + ")"; + } + if ("float".equals(type)) { + return "Float.parseFloat(" + attributeStringName + ")"; + } + if ("double".equals(type)) { + return "Double.parseDouble(" + attributeStringName + ")"; + } + if ("char".equals(type)) { + return attributeStringName + ".charAt(0)"; + } + if ("boolean".equals(type)) { + return "Boolean.parseBoolean(" + attributeStringName + ")"; + } + if ("java.lang.String".equals(type)) { + return attributeStringName; + } + if ("java.util.Date".equals(type)) { + return "dateParser.parse(" + attributeStringName + ")"; + } + return null; + } + + public static String getFormatingExpression(String type, + String attributeStringName) { + if ("byte".equals(type)) { + return "Byte.toString(" + attributeStringName + ")"; + } + if ("short".equals(type)) { + return "Short.toString(" + attributeStringName + ")"; + } + if ("int".equals(type)) { + return "Integer.toString(" + attributeStringName + ")"; + } + if ("long".equals(type)) { + return "Long.toString(" + attributeStringName + ")"; + } + if ("float".equals(type)) { + return "Float.toString(" + attributeStringName + ")"; + } + if ("double".equals(type)) { + return "Double.toString(" + attributeStringName + ")"; + } + if ("char".equals(type)) { + return "Character.toString(" + attributeStringName + ")"; + } + if ("boolean".equals(type)) { + return "Boolean.parseBoolean(" + attributeStringName + ")"; + } + if ("java.lang.String".equals(type)) { + return attributeStringName; + } + if ("java.util.Date".equals(type)) { + return "dateParser.format(" + attributeStringName + ")"; + } + return null; + } + + /** + * @param operation + * @return la chaine de caractere dont on a besoin pour la declaration + * des parametres d'une methode. + */ + public static String getOperationParametersListDeclaration( + ObjectModelOperation operation) { + StringBuffer result = new StringBuffer(); + + Collection<ObjectModelParameter> params = operation.getParameters(); + for (Iterator<ObjectModelParameter> j = params.iterator(); j.hasNext();) { + ObjectModelParameter parameter = j.next(); + result.append(getAttributeType(parameter) + " " + + parameter.getName()); + if (j.hasNext()) { + result.append(", "); + } + } + return result.toString(); + } + + /** + * @param operation + * @return la chaine de caractere qui represente chaque nom de parametre + * separer par des ','. + */ + public static String getOperationParametersListName( + ObjectModelOperation operation) { + Collection<ObjectModelParameter> params = operation.getParameters(); + StringBuffer result = new StringBuffer(); + for (Iterator<ObjectModelParameter> j = params.iterator(); j.hasNext();) { + ObjectModelParameter parameter = j.next(); + result.append(parameter.getName()); + if (j.hasNext()) { + result.append(", "); + } + } + return result.toString(); + } + + /** + * @param clazz + * @return sous forme de String la liste des déclarations des attributes d'une classe donnée + */ + public static String getClassAttributesListDeclaration( + ObjectModelClass clazz) { + StringBuffer result = new StringBuffer(); + + Collection<ObjectModelAttribute> params = clazz.getAttributes(); + for (Iterator<ObjectModelAttribute> j = params.iterator(); j.hasNext();) { + ObjectModelAttribute attr = j.next(); + result.append(getAttributeType(attr, true) + " " + attr.getName()); + if (j.hasNext()) { + result.append(", "); + } + } + return result.toString(); + } + + /** + * Renvoie si l'attribut passé en paramètre est premier lexicographiquement + * par rapport à son attribut inverse (si celui ci existe). + * @param attr L'attribut dont on veut savoir s'il est le premier + * @return true, si l'attribut est premier (lexico ou pas de reverse attribute), false dans les autres cas + */ + public static boolean isFirstAttribute(ObjectModelAttribute attr) { + boolean firstAttribute = true; + if (attr.getReverseAttribute() != null) { + firstAttribute = (attr.getName().compareTo( + attr.getReverseAttribute().getName()) < 0); + } + return firstAttribute; + } + + /** + * Indique si l'élément spécifié dispose de documentation + * + * @param element l'élément à tester + * @return true s'il y a documentation, false sinon + */ + public static boolean hasDocumentation(ObjectModelElement element) { + return notEmpty(element.getDocumentation()); + } + + /** + * Indique si la chaine de caratère n'est pas vide (null ou "") + * + * @param s la chaine de caractères à tester + * @return true si <code>s</code> n'est pas vide + */ + public static boolean notEmpty(String s) { + return (s != null && !"".equals(s)); + } + + /** + * Cherches et renvoie la valeur du tagvalue indique sur cet element, + * sinon sur le model. + * + * @param tagName le nom du tag + * @param element l'élément à tester + * @param model le modele utilisé + * @return la valeur du tagValue ou null + */ + public static String findTagValue(String tagName, + ObjectModelElement element, Model model) { + if (element == null) { + if (model != null) { + if (notEmpty(model.getTagValue(tagName))) { + return model.getTagValue(tagName); + } + } + return null; + } + if (notEmpty(element.getTagValue(tagName))) { + return element.getTagValue(tagName); + } + //On va chercher sur l'element declarant + return findTagValue(tagName, element.getDeclaringElement(), model); + } + + public static boolean hasStereotype(ObjectModelElement element, + String stereotype) { + return element.hasStereotype(stereotype) || element.hasStereotype(stereotype.toLowerCase()); + } + + /** + * For the given class and its attributes, this method computes a + * serialVersionUID. Exemple, returns "123456789L". + * This id will change only if the type or the order of an attribute + * changes. + * @param clazz + * @return the generated serialVersionUID + */ + public static String computeSerialVersionUID(ObjectModelClass clazz) { + String query = clazz.getQualifiedName() + "#"; + for (ObjectModelAttribute attr : clazz.getAttributes()) { + query += "-" + attr.getType(); + } + String result = query.hashCode() + "L"; + return result; + } + +} // GeneratorUtil diff --git a/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java b/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java new file mode 100644 index 0000000..3da74fd --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java @@ -0,0 +1,157 @@ +package org.nuiton.eugene; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Class used in generators that allows to manage easily imports. A first-pass + * allow to register imports, and in a second-pass, returns the type to use in + * generated code. + * + * @author thimel, chemit + */ +public class ImportsManager { + + private static Set<String> primitiveTypes; + + static { + primitiveTypes = new HashSet<String>(); + + primitiveTypes.add("byte"); + primitiveTypes.add("Byte"); + primitiveTypes.add("short"); + primitiveTypes.add("Short"); + primitiveTypes.add("int"); + primitiveTypes.add("Integer"); + primitiveTypes.add("long"); + primitiveTypes.add("Long"); + primitiveTypes.add("float"); + primitiveTypes.add("Float"); + primitiveTypes.add("double"); + primitiveTypes.add("Double"); + + primitiveTypes.add("char"); + primitiveTypes.add("Char"); + primitiveTypes.add("String"); + + primitiveTypes.add("boolean"); + primitiveTypes.add("Boolean"); + + primitiveTypes.add("void"); + + } + private Map<String, String> imports = new HashMap<String, String>(); + private State state = State.FILLING; + + /** + * From the given class, add it to the imports list. + * @param clazz the class to import + * @return true if import add was successful + * @see ImportsManager#addImport(String) + */ + public boolean addImport(Class<?> clazz) { + return addImport(clazz.getName()); + } + + /** + * From the given fqn (fully qualified name), add it to the imports list. + * If there is a conflict adding this import, will return false. + * If reading of the imports has started, this method will return false, + * unless type does not need to be imported. + * @param fqn the fully qualified name to import + * @return true if import add was successful + */ + public boolean addImport(String fqn) { + // if no package don't include it + if (fqn.indexOf(".") == -1) { + return true; + } + + // Exclude java.lang classes + if (fqn == null || fqn.trim().isEmpty() || + (fqn.startsWith("java.lang.") && fqn.lastIndexOf(".") == 9)) { + return true; + } + // Exclude primitive types + if (primitiveTypes.contains(fqn)) { + return true; + } + // Reject generics + if (fqn.indexOf("<") != -1 || fqn.indexOf(">") != -1) { + return false; + } + String name = fqn.substring(fqn.lastIndexOf(".") + 1); + String inPlaceFqn = imports.get(name); + if (inPlaceFqn == null) { + // Someone has started to read imports, impossible to add some more + if (state == State.READING) { + return false; + } else { + imports.put(name, fqn); + return true; + } + } + // if fqn is not the same, return false. Otherwise, no need to override. + return inPlaceFqn.equals(fqn); + } + + /** + * Accorging to the already added types, returns the type to write in file. + * If there is a conflict, returns the fully qualified name, otherwise + * returns the simple name + * @param fqn the fully qualified name to add + * @return the fqn or simple name according to in-place imports + */ + public String getType(String fqn) { + boolean importResult = addImport(fqn); + if (!importResult) { + // There is a conflict, do not use simple name + return fqn; + } else { + // No conflict, use simple name + int packageEndIndex = fqn.lastIndexOf("."); + if (packageEndIndex == -1) { + return fqn; + } else { + return fqn.substring(packageEndIndex + 1); + } + } + } + + /** + * List the imports. This method will remove the useless imports according + * to the given packageName (no need to import a class in the same package) + * @param packageName the current package name (to avoid useless imports) + * @return the imports alphabeticaly sorted + */ + public List<String> getImports(String packageName) { + state = State.READING; + List<String> result = new ArrayList<String>(); + for (String fqn : imports.values()) { + if (!(fqn.lastIndexOf(".") == packageName.length() && fqn.startsWith(packageName + "."))) { + result.add(fqn); + } + } + Collections.sort(result); + return result; + } + + /** + * Method to reset imports list. If imports has been listed, it becomes back + * possible to add imports. + */ + public void clearImports() { + imports.clear(); + state = State.FILLING; + } + + private enum State { + + FILLING, READING + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/MonitorWriter.java b/eugene/src/main/java/org/nuiton/eugene/MonitorWriter.java new file mode 100644 index 0000000..eec559c --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/MonitorWriter.java @@ -0,0 +1,76 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +import java.io.FilterWriter; +import java.io.IOException; +import java.io.StringWriter; + +/** + * Permet de savoir si on a ecrit dans le flux ou non. L'ecriture d'une chaine + * vide a le meme comportement que l'ecriture d'une vrai chaine. + * De cette façon meme les fichiers peuvent être créer. + * + * Created: Jun 8, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class MonitorWriter extends FilterWriter { // MonitorWriter + + boolean modified = false; + //FIXME : ca sert a quoi duplique cette propriete qui existe dans FilterWriter ? + StringWriter out = null; + + public MonitorWriter(StringWriter out) { + super(out); + this.out = out; + } + + public StringBuffer getBuffer() { + return out.getBuffer(); + } + + public boolean isModified() { + return modified; + } + + @Override + public void write(int c) throws IOException { + super.write(c); + modified = true; + } + + @Override + public void write(char[] cbuf, int off, int len) throws IOException { + super.write(cbuf, off, len); + modified = true; + } + + @Override + public void write(String str, int off, int len) throws IOException { + super.write(str, off, len); + modified = true; + } + +}// MonitorWriter + diff --git a/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java b/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java new file mode 100644 index 0000000..35488f0 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java @@ -0,0 +1,528 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Enumeration; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.commons.digester.Digester; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet; +import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImplRef; +import org.nuiton.eugene.models.object.xml.ObjectModelImplTagValue; +import org.nuiton.util.FileUtil; +import org.nuiton.util.RecursiveProperties; +import org.nuiton.util.StringUtil; +import org.xml.sax.SAXException; + +/** + * Pour utiliser ce type de générateur il faut implanter au moins une des trois + * méthodes generateFrom... et le getFilenameFor... associé si l'on souhaite un + * nom de fichier convenable. Si dans une méthode generateFrom... on utilise pas + * le Writer alors aucun fichier n'est généré. + * + * <pre> + * public String getFilenameForClass(ObjectModelClass clazz){ + * return super.getFilenameForClass(Clazz) + "Service.java"; + * } + * + * public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException{ + * if(clazz.getType().equals("service")){ + * / *{ + * public class .... { + * + * } + * }* / + * } + * } + * </pre> + * + * Le nom de l'argument writer doit absolument etre output et pas autre chose si + * vous souhaitez utiliser le processeur + * org.codelutin.processor.filters.GeneratorTemplatesFilter pour vous + * s'implifier l'écriture des templates. + * + * Created: 14 mars 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> Copyright Code Lutin + * + * @version $Revision$ + * + * Mise a jour: $Date$ par : $Author$ + */ +public class ObjectModelGenerator extends ChildGenerator { + + /** Logger for this class. */ + private static Log log = LogFactory.getLog(ObjectModelGenerator.class); + + protected ObjectModel model = null; + + /** + * L'expression réguliere match les chaines de type + * <package.ClassName>.<class|attribute|operation>.[name].<stereotype|tagvalue>.[tag] + * fr.isisfish.entities.Population.class.stereotype=entity + * fr.isisfish.entities.Population.class.tagvalue.persistenceType=flatfile + * fr.isisfish.entities.Population.attribute.name.stereotype=... + * fr.isisfish.entities.Population.attribute.name.tagvalue.pk=topiaId + * fr.isisfish.entities.Population.operation.getRegion.stereotype=... + * fr.isisfish.entities.Population.operation.getRegion.tagvalue.pk=... + */ + protected Pattern propertiesPattern = Pattern + .compile("((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation)\\.)(?:([_a-z0-9][_a-zA-Z0-9]*)\\.)?(?:(stereotype|tagvalue)\\.?)([_a-z0-9][_a-zA-Z0-9]*)?"); + + public ObjectModelGenerator() { + super(); + } + + public ObjectModelGenerator(Generator parent) { + super(parent); + } + + public ObjectModel getModel() { + return model; + } + + /** + * @param files les noms des fichiers existant contenant du XML représentant + * des ObjectModel. Il est automatiquement recherche un fichier de + * propriété associé a ce fichier pour pouvoir ajouter des + * stereotype ou des tag value sur les class, attribute ou operation + * @param destDir le répertoire dans lequel il faudra mettre les fichiers + * générés + */ + @Override + public void generate(File[] files, File destDir) { + setLastModifiedSource(files); + ObjectModel objectModel = new ObjectModelImpl(); + + // Digester parser configuration + Digester digester = new Digester(); + digester.addRuleSet(new DigesterObjectModelRuleSet()); + + for (File file : files) { + try { + digester.push(objectModel); + objectModel = (ObjectModel) digester.parse(file); + digester.pop(); + } catch (IOException e) { + log.warn("Unable to parse ObjectModel input file : " + file, e); + } catch (SAXException e) { + log.warn("Unable to parse ObjectModel input file : " + file, e); + } + + // recherche est charge le fichier propriete associe au modele + File dir = file.getParentFile(); + String ext = FileUtil.extension(file); + String name = FileUtil.basename(file, "." + ext); + File propFile = new File(dir, name + ".properties"); + RecursiveProperties prop = new RecursiveProperties(); + if (!propFile.exists()) { + if (log.isInfoEnabled()) { + log.info("Pas de fichier de propriete " + propFile + + " associé au model"); + } + } else { + if (log.isInfoEnabled()) { + log.info("Lecture du fichier de propriete " + propFile + + " associé au model"); + } + try { + prop.load(new FileInputStream(propFile)); + } catch (IOException eee) { + log.warn("Impossible de lire le fichier de propriete " + + propFile, eee); + } + + // on ajoute les proprietes du fichier associe au model + for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) { + String key = (String) e.nextElement(); + String value = prop.getProperty(key); + + if (key.startsWith("model")) { + if (!key.startsWith("model.tagvalue.")) { + log.warn("only tagvalue is allowed on model in properties"); + } else { + String tag = key.substring("model.tagvalue." + .length()); + + ObjectModelImplTagValue tagvalue = new ObjectModelImplTagValue(); + tagvalue.setName(tag); + tagvalue.setValue(value); + ((ObjectModelImpl) objectModel) + .addTagValue(tagvalue); + } + } else { + + Matcher matcher = propertiesPattern.matcher(key); + + if (log.isDebugEnabled()) { + log.debug("Propriete: '" + key + "'"); + } + + if (matcher.find()) { + // fqn is fully qualified name of class + String fqn = matcher.group(1); + fqn = StringUtil.substring(fqn, 0, -1); // remove ended + // . + // target is class, attribute or operation + String target = matcher.group(2); + String targetName = matcher.group(3); + // type is stereotype or tagvalue + String type = matcher.group(4); + String tag = matcher.group(5); + + if (log.isDebugEnabled()) { + log.debug("Propriete: '" + key + "' => " + + "fqn:" + fqn + " target:" + target + + " targetName:" + targetName + + " type:" + type + " tag:" + tag); + } + + ObjectModelClassifier omc = objectModel + .getClassifier(fqn); + if (omc instanceof ObjectModelClassifierImpl) { + // on utilise une liste car il peut y avoir plusieur + // operation avec le nom donné + List<ObjectModelElement> elems = new ArrayList<ObjectModelElement>(); + if ("class".equals(target)) { + elems.add(omc); + } else if ("attribute".equals(target)) { + ObjectModelClass classmodel = (ObjectModelClass) omc; + elems.add(classmodel + .getAttribute(targetName)); + } else if ("operation".equals(target)) { + elems.addAll(omc.getOperations(targetName)); + } + for (Object elem1 : elems) { + ObjectModelElementImpl elem = (ObjectModelElementImpl) elem1; + if ("stereotype".equals(type)) { + // pour les stereotypes + ObjectModelImplRef stereotype = new ObjectModelImplRef(); + stereotype.setName(value); + elem.addStereotype(stereotype); + continue; + } + + if ("tagvalue".equals(type)) { + // pour les tagvalues + ObjectModelImplTagValue tagvalue = new ObjectModelImplTagValue(); + tagvalue.setName(tag); + tagvalue.setValue(value); + if (log.isDebugEnabled()) { + log.debug("tagValue:" + tagvalue + + ", tag:" + tag + + ", value:" + value + + ", element:" + elem); + } + if (elem == null) { + log.warn("can not attach tagValue " + + key); + } else { + elem.addTagValue(tagvalue); + } + } + } + } else { + // TODO il faudra avoir des methodes d'acces en + // Set sur l'interface pour eviter ce message + if (log.isWarnEnabled()) { + log.warn("Can't add properties to model, it's not an ObjectModelClassifierImpl"); + } + } + } + } + } + } + } + if (log.isDebugEnabled()) { + for (ObjectModelClass m : objectModel.getClasses()) { + log.debug("loaded class in objectmodel : " + m.getName()); + } + } + try { + generate(objectModel, destDir); + } catch (IOException eee) { + if (log.isWarnEnabled()) { + log.warn("Unable to generate for file", eee); + } + } + } + + /** + * Par defaut la methode appelle la methode + * {@link #generateFromModel(Writer, ObjectModel)} puis boucle sur chaque + * class en appelant la m?thode + * {@link #generateFromClass(Writer, ObjectModelClass)} puis boucle sur chaque + * interface en appelant a méthode + * {@link #generateFromInterface(Writer, ObjectModelInterface)} et enfin sur chaque + * énumération en appelant la méthode + * {@link #generateFromEnumeration(Writer, ObjectModelEnumeration)} + * Le nom de fichier est récupérer pour chacun d'eux en appelant la méthode + * getFilenameFor.... La methode generateFrom... n'utilise pas le Writer + * alors le fichier n'est pas généré, si on l'utilise m?me pour ne rien + * écrire alors le fichier sera généré. + * @param model + * @param destDir + * @throws IOException + */ + public void generate(ObjectModel model, File destDir) throws IOException { + + // generateFromModel + this.model = model; + + String filename = getFilenameForModel(model); + generateFromElement(model, destDir, filename, + ObjectModelType.OBJECT_MODEL); + + // generateFromClassifier + generateFromElements(model.getClassifiers(), destDir, + ObjectModelType.OBJECT_MODEL_CLASSIFIER); + + // generateFromInterface + generateFromElements(model.getInterfaces(), destDir, + ObjectModelType.OBJECT_MODEL_INTERFACE); + + // generateFromClass + generateFromElements(model.getClasses(), destDir, + ObjectModelType.OBJECT_MODEL_CLASS); + + // generateFromEnumeration + generateFromElements(model.getEnumerations(), destDir, + ObjectModelType.OBJECT_MODEL_ENUMERATION); + } + + /** + * Parcours une collection d'éléments pour la génération suivant un type d'éléments. + * Types possibles : ObjectModelClassifier, ObjectModelClass, ObjectModelInterface et + * ObjectModelEnumeration. + * Deux méthodes dépendent du type et peuvent être surchargées : + * getFilenameForXXX et generateFromXXX (XXX étant un type prédéfini pour une méthode existante). + * + * @see ObjectModelType + * + * @param elements Collection d'éléments d'un des types ci-dessus + * @param destDir dossier de destination pour le fichier généré + * @param type type explicite d'ObjectModel + */ + private void generateFromElements(Collection<? extends ObjectModelElement> elements, File destDir, + ObjectModelType type) { + + for (ObjectModelElement element : elements) { + String filename = ""; + // Filename depends on type of element (Classifier, Class, Interface or Enumeration) + switch (type) { + case OBJECT_MODEL_CLASSIFIER: + filename = getFilenameForClassifier((ObjectModelClassifier)element); break; + case OBJECT_MODEL_INTERFACE: + filename = getFilenameForInterface((ObjectModelInterface)element); break; + case OBJECT_MODEL_CLASS: + filename = getFilenameForClass((ObjectModelClass)element); break; + case OBJECT_MODEL_ENUMERATION: + filename = getFilenameForEnumeration((ObjectModelEnumeration)element); + } + + generateFromElement(element, destDir, filename, type); + } + } + + /** + * Génération pour un élément du modèle (ou le modèle lui-même). + * Types possibles : ObjectModel, ObjectModelClassifier, ObjectModelClass, + * ObjectModelInterface et ObjectModelEnumeration. + * La méthode generateFromXXX dépend du type d'élément et peut être surchargée. + * + * @see ObjectModelType + * + * @param element element à généré + * @param destDir dossier de destination + * @param filename nom du fichier de sortie + * @param type type d'ObjectModel + */ + protected void generateFromElement(Object element, File destDir, String filename, + ObjectModelType type) { + + // on a maintenant une restriction des elements a generer + // c'est à dire un filtrage par package + // effectue un appel pour savoir si on a le droit de generer l'element + // courant + if (canGenerateElement(element)) { + + File outputFile = getDestinationFile(destDir, filename); + if (!getOverwrite() && isNewerThanSource(outputFile)) { + if (log.isDebugEnabled()) { + log.debug("file " + outputFile + " is up-to-date"); + } + return; + } else { + if (!outputFile.exists() && log.isDebugEnabled()) { + log.debug("not up-to-date " + outputFile.lastModified() + + " <" + outputFile + ">"); + } + try { + StringWriter out = new StringWriter(); + MonitorWriter monitorOut = new MonitorWriter(out); + + switch (type) { + case OBJECT_MODEL: + generateFromModel(monitorOut,(ObjectModel)element); + break; + case OBJECT_MODEL_CLASSIFIER: + generateFromClassifier(monitorOut, (ObjectModelClassifier)element); + break; + case OBJECT_MODEL_INTERFACE: + generateFromInterface(monitorOut, (ObjectModelInterface)element); + break; + case OBJECT_MODEL_CLASS: + generateFromClass(monitorOut, (ObjectModelClass)element); + break; + case OBJECT_MODEL_ENUMERATION: + generateFromEnumeration(monitorOut, (ObjectModelEnumeration)element); + break; + } + + write(outputFile, monitorOut); + } catch (Exception eee) { + log.warn("Erreur lors de la génération du fichier " + + outputFile); + throw new RuntimeException( + "Erreur lors de la génération du fichier " + + outputFile, eee); + } + } + } + } + + /** + * Test if given element can be generated. + * + * An element can be generated if his package is in the {@link generatedPackages} list + * or if {@link generatedPackages} is null or empty. + * + * @param element element to test + * @return generation allowed + */ + protected boolean canGenerateElement(Object element) { + + boolean canGenerate = true; + + // can get package only for Classifiers + if (element instanceof ObjectModelClassifier) { + ObjectModelClassifier classifier = (ObjectModelClassifier)element; + String classifierPackage = classifier.getPackageName(); + + canGenerate = super.canGeneratePackage(classifierPackage); + } + + return canGenerate; + } + + /** + * Par defaut cette methode retourne le getName du model. Si l'on souhaite + * utiliser la methode generateFromModel il vaut mieux surcharger cette + * methode + * @param model + * @return + */ + public String getFilenameForModel(ObjectModel model) { + return model.getName(); + } + + /** + * Par defaut cette methode retourne le QualifiedName convertie en chemin + * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto + * @param model + * @param packageName + * @return + */ + public String getFilenameForPackage(ObjectModel model, String packageName) { + return packageName.replace('.', File.separatorChar); + } + + /** + * Par defaut cette methode retourne le QualifiedName convertie en chemin + * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto + * @param interfacez + * @return + */ + public String getFilenameForInterface(ObjectModelInterface interfacez) { + return interfacez.getQualifiedName().replace('.', File.separatorChar); + } + + /** + * Par defaut cette methode retourne le QualifiedName convertie en chemin + * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto + * @param clazz + * @return + */ + public String getFilenameForClass(ObjectModelClass clazz) { + return clazz.getQualifiedName().replace('.', File.separatorChar); + } + + /** + * Par defaut cette methode retourne le QualifiedName convertie en chemin + * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto + * @param clazz + * @return + */ + public String getFilenameForClassifier(ObjectModelClassifier clazz) { + return clazz.getQualifiedName().replace('.', File.separatorChar); + } + + public String getFilenameForEnumeration(ObjectModelEnumeration enumeration) { + return enumeration.getQualifiedName().replace('.', File.separatorChar); + } + + public void generateFromModel(Writer output, ObjectModel model) + throws IOException { + } + + public void generateFromInterface(Writer output, + ObjectModelInterface interfacez) throws IOException { + } + + public void generateFromClass(Writer output, ObjectModelClass clazz) + throws IOException { + } + + public void generateFromClassifier(Writer output, + ObjectModelClassifier clazz) throws IOException { + } + + public void generateFromEnumeration(Writer output, + ObjectModelEnumeration enumeration) throws IOException { + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/ObjectModelType.java b/eugene/src/main/java/org/nuiton/eugene/ObjectModelType.java new file mode 100644 index 0000000..1f4431e --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/ObjectModelType.java @@ -0,0 +1,35 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +/** + * Enumeration for ObjectModelGenerator. + * Contains all types available for generating specific ObjectModelElement file. + * Needed because of inheritance between class, interface and classifier. + * Method instanceof (previously used) is inadequat so expliciting the ObjectModel type is much better. + * + * Created: may 4th 2009 + * + * @author Florian DESBOIS <fdesbois@codelutin.com> + * + * @version $Revision: 496 $ + */ +public enum ObjectModelType { + OBJECT_MODEL, OBJECT_MODEL_ENUMERATION, OBJECT_MODEL_CLASSIFIER, + OBJECT_MODEL_CLASS, OBJECT_MODEL_INTERFACE +} diff --git a/eugene/src/main/java/org/nuiton/eugene/PackageValidator.java b/eugene/src/main/java/org/nuiton/eugene/PackageValidator.java new file mode 100644 index 0000000..8f50879 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/PackageValidator.java @@ -0,0 +1,87 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +/** + * The PackageValidator class is used by the xmi1.2ToObjectModel.xsl + * stylesheet and Xalan-Java to extend the stylesheet functionnalities. + * Allows to include external classes and interfaces to the generated + * ObjectModel. + * + * Created: 21 avr. 2005 + * + * @author Arnaud Thimel <thimel@codelutin.com> + * @version $Revision$ + */ +public class PackageValidator { + + /** + * The <code>toContinue</code> method indicates if the package + * <code>localPackageNameDot</code> has to be iterated by the stylesheet. + * @param fullPackagePath the full package path + * @param localPackageNameDot the current package to evaluate + * @param extraPackages the list of extra packages + * @return true if there is to iterate on <code>localPackageNameDot</code> + */ + public static boolean toContinue(String fullPackagePath, + String localPackageNameDot, String extraPackages) { + if (fullPackagePath.startsWith(localPackageNameDot)) { + return true; + } + String[] packages = extraPackages.split(","); + for (int i = 0; i < packages.length; i++) { + packages[i] = packages[i].trim(); + if (packages[i].startsWith(localPackageNameDot)) { + if (localPackageNameDot.length() < (packages[i] + .lastIndexOf(".") + 1)) { + return true; + } + return false; + } + } + return false; + } + + /** + * <code>isValid</code> indicates if the current package + * (<code>localPackageNameDot</code>) is valid according to the extra + * packages list (<code>extraPackages</code>). + * @param fullPackagePath + * @param localPackageName the current package to evaluate + * @param extraPackages the list of extra packages + * @return true is the current package is valid + */ + public static boolean isValid(String fullPackagePath, + String localPackageName, String extraPackages) { + if (localPackageName.startsWith(fullPackagePath)) { + return true; + } + if (localPackageName.length() == 0) { + return false; + } + String[] packages = extraPackages.split(","); + for (int i = 0; i < packages.length; i++) { + packages[i] = packages[i].trim(); + if ((localPackageName).matches(packages[i]) + || packages[i].startsWith(localPackageName)) { + return true; + } + } + return false; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java b/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java new file mode 100644 index 0000000..0b6d103 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java @@ -0,0 +1,294 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.Enumeration; + +import org.apache.commons.digester.Digester; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.state.StateModel; +import org.nuiton.eugene.models.state.StateModelState; +import org.nuiton.eugene.models.state.StateModelStateChart; +import org.nuiton.eugene.models.state.xml.DigesterStateModelRuleSet; +import org.nuiton.eugene.models.state.xml.StateModelImpl; +import org.nuiton.util.FileUtil; +import org.nuiton.util.RecursiveProperties; +import org.xml.sax.SAXException; + +/** + * StateModelGenerator. + * + * Pour utiliser ce type de générateur, il faut implanter au moins une des + * méthodes generateFrom... et le getFilenameFor... associé si l'on souhaite un + * nom de fichier convenable. Si dans une méthode generateFrom... on utilise pas + * le writer (output) alors aucun fichier n'est généré. + * + * Le nom de l'argument writer doit absolument etre output et pas autre chose si + * vous souhaitez utiliser le processeur + * {@link org.codelutin.processor.filters.GeneratorTemplatesFilter} pour vous + * s'implifier l'écriture des templates. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ By : $Author$ + */ +public class StateModelGenerator extends ChildGenerator { + + /** Logger for this class */ + private static Log log = LogFactory.getLog(StateModelGenerator.class); + + /** Model */ + protected StateModel model; + + /** + * Empty constructor + */ + public StateModelGenerator() { + } + + /** + * Constructor with parent generator. + * + * @param parent parent generator + */ + public StateModelGenerator(Generator parent) { + super(parent); + } + + /** + * @return the model + */ + public StateModel getModel() { + return model; + } + + /* + * @see org.nuiton.eugene.Generator#generate(java.io.File[], java.io.File) + */ + @Override + public void generate(File[] files, File destDir) { + + Digester digester = new Digester(); + digester.addRuleSet(new DigesterStateModelRuleSet()); + + StateModelImpl stateModel = new StateModelImpl(); + + // process each file + for (File file : files) { + + // fin a deplacer + try { + digester.push(stateModel); + digester.parse(file); + + // try to load property file + loadPropertyFile(file, stateModel); + } catch (IOException e) { + log.warn("Can't read model file", e); + } catch (SAXException e) { + log.warn("Can't read model file", e); + } + } + + // generate code + try { + generate(stateModel, destDir); + } catch (IOException e) { + log.warn("Can't generate code for files", e); + } + } + + /** + * Try to load property file, associated to current statemodel file + * + * @param stateModelFile + * @param stateModel + */ + protected void loadPropertyFile(File stateModelFile, + StateModelImpl stateModel) { + // recherche et charge le fichier propriete associe au modele + File dir = stateModelFile.getParentFile(); + String ext = FileUtil.extension(stateModelFile); + String name = FileUtil.basename(stateModelFile, "." + ext); + File propFile = new File(dir, name + ".properties"); + RecursiveProperties prop = new RecursiveProperties(); + + if (!propFile.exists()) { + if (log.isInfoEnabled()) { + log.info("No property file associated to model : " + propFile); + } + } else { + if (log.isInfoEnabled()) { + log.info("Reading model property file " + propFile); + } + try { + prop.load(new FileInputStream(propFile)); + } catch (IOException e) { + log.warn("Cannot read property file " + propFile, e); + } + + // on ajoute les proprietes du fichier associe au model + for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) { + String key = (String) e.nextElement(); + String value = prop.getProperty(key); + + if (!key.startsWith("model.tagvalue.")) { + log.warn("only tagvalue is allowed on model in properties"); + } else { + String tag = key.substring("model.tagvalue.".length()); + stateModel.addTagValue(tag, value); + } + } + } + } + + /** + * Par défaut, appel {@link #generateFromModel(MonitorWriter, org.nuiton.eugene.models.state.StateModel)} pour le + * model et {@link #generateFromState(Writer,StateModelState)} pour tous les + * etats du modele. + * + * @param stateModel Le modele d'état + * @param destDir le dossier de destination + * @throws IOException + */ + public void generate(StateModel stateModel, File destDir) + throws IOException { + + model = stateModel; + + String filename = getFilenameFromModel(stateModel); + File outputFile = getDestinationFile(destDir, filename); + if (getOverwrite() || !isNewerThanSource(outputFile)) { + try { + StringWriter out = new StringWriter(); + MonitorWriter monitorOut = new MonitorWriter(out); + generateFromModel(monitorOut, stateModel); + write(outputFile, monitorOut); + } catch (Exception eee) { + log.warn("Erreur lors de la génération du fichier " + + outputFile); + throw new RuntimeException( + "Erreur lors de la génération du fichier " + outputFile, + eee); + } + } + + // pour tous les diagrammes du modele + for (StateModelStateChart chart : stateModel.getStateCharts()) { + + // elements can be restricted in package + if (canGenerateElement(chart)) { + + // et tous les états de ces diagrammes + for (Object oState : chart.getStates().toArray()) { + StateModelState state = (StateModelState) oState; + String filenameState = getFilenameFromState(state, chart + .getName()); + File outputFiletate = getDestinationFile(destDir, filenameState); + if (getOverwrite() || !isNewerThanSource(outputFiletate)) { + try { + StringWriter out = new StringWriter(); + MonitorWriter monitorOut = new MonitorWriter(out); + generateFromState(monitorOut, state); + write(outputFiletate, monitorOut); + } catch (Exception eee) { + log.warn("Erreur lors de la génération du fichier " + + outputFiletate); + throw new RuntimeException( + "Erreur lors de la génération du fichier " + + outputFiletate, eee); + } + } + } + } + } + } + + /** + * Test if given element can be generated. + * + * @param chart chart to test + * @return generation allowed + */ + protected boolean canGenerateElement(StateModelStateChart chart) { + + boolean canGenerate = true; + + // disabled until tested + //String chartPackage = chart.getPackageName(); + //canGenerate = super.canGeneratePackage(chartPackage); + + return canGenerate; + } + + /** + * Generate model code + * + * @param monitorOut + * @param stateModel + */ + protected void generateFromModel(MonitorWriter monitorOut, + StateModel stateModel) { + + } + + /** + * Return filename from model + * + * @param stateModel + * @return model file name + */ + protected String getFilenameFromModel(StateModel stateModel) { + return stateModel.getName(); + } + + /** + * Return filename from state + * + * @param state + * the state + * @param packageName + * @return the filename + */ + public String getFilenameFromState(StateModelState state, String packageName) { + return (packageName + '.' + state.getName()).replace('.', + File.separatorChar); + } + + /** + * Generate a state code + * + * @param monitorOut + * the output writer + * @param state + * the state + * @throws IOException + */ + public void generateFromState(Writer monitorOut, StateModelState state) + throws IOException { + + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/UIModelGenerator.java b/eugene/src/main/java/org/nuiton/eugene/UIModelGenerator.java new file mode 100644 index 0000000..c2167d3 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/UIModelGenerator.java @@ -0,0 +1,176 @@ +/* + * \*##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.apache.commons.digester.Digester; +import org.dom4j.DocumentException; +import org.nuiton.eugene.models.ui.UIModel; +import org.nuiton.eugene.models.ui.UIModelObject; +import org.nuiton.eugene.models.ui.UIModelProperty; +import org.nuiton.eugene.models.ui.impl.UIModelImpl; +import org.nuiton.eugene.models.ui.javaxml.JavaXMLParser; +import org.nuiton.util.ResourceNotFoundException; +import org.xml.sax.SAXException; + +/** + * UIModelGenerator.java + * + * @author cecrid + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class UIModelGenerator extends ChildGenerator { + + protected UIModel model = null; + + public UIModelGenerator() { + super(); + + } + + public UIModelGenerator(Generator parent) { + super(parent); + + } + + public UIModel getModel() { + return model; + } + + @Override + public void generate(File[] tabUIFilesName, File destDir) { + setLastModifiedSource(tabUIFilesName); + for (int i = 0; i < tabUIFilesName.length; i++) { + try { + String fileName = tabUIFilesName[i].getName(); + UIModel ui = null; + if (fileName.endsWith(".javaxml")) { + JavaXMLParser parser = new JavaXMLParser(); + ui = parser.parse(tabUIFilesName[i]); + } else { + + // New parser : commons-digester + Digester digester = new Digester(); + ui = new UIModelImpl(); + digester.push(ui); + digester.parse(tabUIFilesName[i]); + } + if (ui != null) { + generate(ui, destDir); + } + } catch (ResourceNotFoundException eee) { + System.out.println("Unable to parse topiaUI input file : " + i); + eee.printStackTrace(); + } catch (IOException eee) { + System.out.println("Unable to generate for file"); + eee.printStackTrace(); + } catch (DocumentException eee) { + System.out.println("Error during the processing of a DOM4J"); + eee.printStackTrace(); + } catch (SAXException e) { + System.out.println("Error during the parsing with digester"); + e.printStackTrace(); + } + } + } + + public void generate(UIModel ui, File destDir) throws IOException { + { + this.model = ui; + + String filename = getFilenameForUIModel(ui); + File outputFile = getDestinationFile(destDir, filename); + if (getOverwrite() || !isNewerThanSource(outputFile)) { + StringWriter out = new StringWriter(); + MonitorWriter monitorOut = new MonitorWriter(out); + generateFromUIModel(monitorOut, model); + write(outputFile, monitorOut); + } else { + Logger.getLogger(getClass().getName() + ".generate").log( + Level.FINE, "file " + outputFile + "is up-to-date"); + } + } + + for (UIModelObject uimodelobject : ui.getObjects()) { + + String filename = getFilenameForUIModelObject(uimodelobject); + File outputFile = getDestinationFile(destDir, filename); + if (getOverwrite() || !isNewerThanSource(outputFile)) { + StringWriter out = new StringWriter(); + MonitorWriter monitorOut = new MonitorWriter(out); + generateFromUIModelObject(monitorOut, uimodelobject); + write(outputFile, monitorOut); + } else { + Logger.getLogger(getClass().getName() + ".generate").log( + Level.FINE, "file " + outputFile + "is up-to-date"); + } + } + } + + /** + * Par defaut cette methode retourne le getName du model. Si l'on souhaite + * utiliser la methode generateFromUIModel il vaut mieux surcharger cette + * methode + * @param model le modele a utiliser + * @return le getName du model + */ + public String getFilenameForUIModel(UIModel model) { + return model.getRoot().getName().concat(".java"); + } + + public String getFilenameForUIModelObject(UIModelObject object) { + return object.getName().concat(".java"); + } + + public void generateFromUIModel(Writer output, UIModel model) + throws IOException { + } + + public void generateFromUIModelObject(Writer output, UIModelObject object) + throws IOException { + } + + public String capitalizeName(UIModelObject o) { + String name = o.getName(); + if (name == null) { + throw new GeneratorException("L'objet " + o.getType() + + " doit avoir un nom valide"); + } + return GeneratorUtil.capitalize(name); + } + + public String capitalizeName(UIModelProperty p) { + String name = p.getName(); + if (name == null) { + throw new GeneratorException("La propriete " + p + + " doit avoir un nom valide"); + } + return GeneratorUtil.capitalize(name); + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/Model.java b/eugene/src/main/java/org/nuiton/eugene/models/Model.java new file mode 100644 index 0000000..2314305 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/Model.java @@ -0,0 +1,55 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models; + +import java.util.Map; + +/** + * Model. + * + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public interface Model { + + /** + * Returns the name of this model. + * + * @return the name of this model. + */ + public abstract String getName(); + + /** + * Returns the tagValues associated with this element. + * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-) + * + * @return a Map containing all tagValues associated with this element + */ + public abstract Map<String, String> getTagValues(); + + /** + * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name. + * + * @param tagValue tag value key + * @return the value of the found tagValue, or null if the element has no associated tagValue for this name. + */ + public abstract String getTagValue(String tagValue); + +} //Model diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java new file mode 100644 index 0000000..752e4b2 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java @@ -0,0 +1,123 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +import java.util.Collection; +import java.util.List; + +import org.nuiton.eugene.models.Model; + +/** + * Abstraction for the root node of object model trees. + * This an entry point for browsing a model tree. This object offers + * as well several facilities for a direct access to some of the object model elements. + * + * Created: 14 janv. 2004 + * + * @author Cedric Pineau <pineau@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public interface ObjectModel extends Model { + + /** + * Returns all classifiers defined in this model. + * @see ObjectModelClassifier + * + * @return a Collection containing all ObjectModelClassifier for this model. + */ + public Collection<ObjectModelClassifier> getClassifiers(); + + /** + * Returns the classifier corresponding to the given qualified name, or null if the model contains no classifier for this qualified name. + * @param qualifiedClassifierName - the qualified name of the classifier to retrieve. + * + * @return the ObjectModelClassifier of the found classifier, or null if the model contains no classifier for this qualified name. + */ + public ObjectModelClassifier getClassifier( + String qualifiedClassifierName); + + /** + * Returns all classes defined in this model. + * @see ObjectModelClass + * + * @return a Collection containing all ObjectModelClass for this model. + */ + public Collection<ObjectModelClass> getClasses(); + + /** + * Returns the class corresponding to the given qualified name, or null if the model contains no class for this qualified name. + * @param qualifiedClassName - the qualified name of the class to retrieve. + * + * @return the ObjectModelClass of the found class, or null if the model contains no class for this qualified name. + */ + public ObjectModelClass getClass(String qualifiedClassName); + + + /** + * Indicates whether the model contains the class associated to the given className + * @param qualifiedClassName - the qualified name of the class to retrieve. + * + * @return true if the class has been found. + */ + public boolean hasClass(String qualifiedClassName); + + /** + * Returns all interfaces defined in this model. + * @see ObjectModelInterface + * + * @return a Collection containing all ObjectModelInterface for this model. + */ + public Collection<ObjectModelInterface> getInterfaces(); + + /** + * Returns the interface corresponding to the given qualified name, or null if the model contains no interface for this qualified name. + * @param qualifiedInterfaceName - the qualified name of the interface to retrieve. + * + * @return the ObjectModelInterface of the found interface, or null if the model contains no interface for this qualified name. + */ + public ObjectModelInterface getInterface( + String qualifiedInterfaceName); + + + /** + * Returns all enumerations defined in this model. + * @see ObjectModelEnumeration + * + * @return a Collection containing all ObjectModelEnumeration for this model. + */ + public Collection<ObjectModelEnumeration> getEnumerations(); + + /** + * Return the enumeration corresponding to the given qualified name + * @param qualifiedEnumerationName + * @return the ObjectModelEnumeration of the found enumeration or null if the model contains no enumeration for this qualified name. + */ + public ObjectModelEnumeration getEnumeration(String qualifiedEnumerationName); + + /** + * Returns all comments not lied to a particular model element + * + * @return a List containing all comments for this model as Strings. + */ + public List<String> getComments(); + +} //ObjectModel diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAssociationClass.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAssociationClass.java new file mode 100644 index 0000000..b09fcbd --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAssociationClass.java @@ -0,0 +1,50 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +import java.util.List; + +/** + * ObjectModelAssociationClass. + * + * @author Cédric Pineau <pineau@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public interface ObjectModelAssociationClass extends ObjectModelClass { + + /** + * Returns all participants (that is association ends) attributes for this association class. + * @see ObjectModelAttribute + * + * @return a List containing all participants attributes for this association class. + */ + public List<ObjectModelAttribute> getParticipantsAttributes(); + + /** + * Returns all participants (that is association ends) classifiers for this association class. + * @see ObjectModelClassifier + * + * @return a List containing all participants classifiers for this association class. + */ + public List<ObjectModelClassifier> getParticipantsClassifiers(); + +} //ObjectModelAssociationClass diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAttribute.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAttribute.java new file mode 100644 index 0000000..88bf71b --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAttribute.java @@ -0,0 +1,139 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +/** +* Abstraction for the attribute node of object model trees. +* This object presents all information concerning the given attribute. +* +* Created: 14 janv. 2004 +* +* @author Cédric Pineau <pineau@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +*/ +public interface ObjectModelAttribute extends ObjectModelParameter { + + /** + * Returns the type of this attribute. + * + * @return the type of this attribute. + */ + public String getType(); + + /** + * Returns whether this attribute is an aggregate or not. + * + * @return a boolean indicating whether this attribute is an aggregate or not. + */ + public boolean isAggregate(); + + /** + * Returns whether this attribute is a composite or not. + * + * @return a boolean indicating whether this attribute is a composite or not. + */ + public boolean isComposite(); + + /** + * Returns the visibility of this attribute. + * Possible values includes <tt>public</tt>, <tt>protected</tt> and <tt>private</tt>. + * + * @return the visibility of this attribute. + */ + public String getVisibility(); + + /** + * Returns whether this attribute reference a model classifier or not. + * + * @return a boolean indicating whether this attribute reference a model classifier or not. + */ + public boolean referenceClassifier(); + + /** + * Returns the classifier referenced by this attribute or null if it does not reference a model classifier. + * + * @return the ObjectModelClassfifier referenced by this attribute or null if it does not reference a model classifier. + */ + public ObjectModelClassifier getClassifier(); + + /** + * Returns the attribute used to reference this class at the other end of the association or null if this is not an association, or if it is not bi-directionnal. + * @see #getClassifier() + * + * @return the ObjectModelAttribute used to reference this class at the other end of the association or null if this is not an association, or if it is not bi-directionnal. + */ + public ObjectModelAttribute getReverseAttribute(); + + /** + * Return attribute reserver attribute name. + * + * @return reverse attribute name or null + */ + public String getReverseAttributeName(); + + /** + * max multiplicity of the reverse attribute + * @return max multiplicity of the reverse attribute + */ + public int getReverseMaxMultiplicity(); + + /** + * Returns the association class associated with this association, or null if there is none. + * + * @return a ObjectModelClass corresponding to the association class associated with this association, or null if there is none. + */ + public ObjectModelClass getAssociationClass(); + + /** + * Returns whether this association has an associated association class, ot not. + * + * @return a boolean indicating whether this association has an associated association class, ot not. + */ + public boolean hasAssociationClass(); + + /** + * Returns whether this attribute is static or not. + * + * @return a boolean indicating whether this attribute is static or not. + */ + public boolean isStatic(); + + /** + * Returns whether this attribute is final or not. + * + * @return a boolean indicating whether this attribute is final or not. + */ + public boolean isFinal(); + + /** + * true if this attribute is navigable + * @return true if this attribute is navigable + */ + public boolean isNavigable(); + + /** + * true if this attribute is isIndexed + * @return true if this attribute is isIndexed + */ + public boolean isIndexed(); + +} //ObjectModelAttribute diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java new file mode 100644 index 0000000..edd7846 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java @@ -0,0 +1,112 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +import java.util.Collection; + +/** +* Abstraction for the class node of object model trees. +* This object presents all information concerning the given class. +* +* Created: 14 janv. 2004 +* +* @author Cédric Pineau <pineau@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +*/ +public interface ObjectModelClass extends ObjectModelClassifier { + + /** + * Returns all parent classes for this class. + * @see ObjectModelClass + * + * @return a Collection containing all parent ObjectModelClass for this class. + */ + public Collection<ObjectModelClass> getSuperclasses(); + + /** + * Returns the discriminator for the given superclass. + * + * @param superclass super class to get discriminator + * @return the discriminator for the given superclass as a String if it exists, null otherwise. + */ + public String getDiscriminator(ObjectModelClass superclass); + + /** + * Returns all known direct specialized classes for this class. + * @see ObjectModelClass + * + * @return a Collection containing all known direct specialized ObjectModelClass for this class. + */ + public Collection<ObjectModelClass> getSpecialisations(); + + /** + * Returns all known direct specialized classes for this class for the specified discriminator. + * @see ObjectModelClass + * + * @param discriminator discriminator to get specialisations + * @return a Collection containing all known direct specialized ObjectModelClass for this class for the specified discriminator. + */ + public Collection<ObjectModelClass> getSpecialisations( + String discriminator); + + /** + * Returns all attributes defined on this class. + * @see ObjectModelAttribute + * + * @return a Collection containing all ObjectModelAttribute for this class. + */ + public Collection<ObjectModelAttribute> getAttributes(); + + /** + * Returns the attribute corresponding to the given name, or null if the class contains no attribute for this name. + * + * @param attributeName attribute name + * @return the ObjectModelAttribute of the found attribute, or null if the class contains no attribute for this name. + */ + public ObjectModelAttribute getAttribute(String attributeName); + + /** + * Returns whether this class is abstract or not. + * + * @return a boolean indicating whether this class is abstract or not. + */ + public boolean isAbstract(); + + /** + * Returns all operations defined on all Super class extended by this + * classifier, directly or indirectly. and all interface implemented by the + * super class. + * @param distinct if this boolean is true only distinct operation + * are add to list. + * @return a Collection of ObjectModelOperation + */ + public Collection<ObjectModelOperation> getAllSuperclassOperations( + boolean distinct); + + /** + * Returns all attributes defined on all super class extended by this + * classifier, directly or indirectly. + * @return a Collection of ObjectModelAttribute + */ + public Collection<ObjectModelAttribute> getAllOtherAttributes(); + +} //ObjectModelClass diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java new file mode 100644 index 0000000..2ce92d3 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java @@ -0,0 +1,129 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +import java.util.Collection; + +/** + * ObjectModelClassifier. + * + * @author Cédric Pineau <pineau@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public interface ObjectModelClassifier extends ObjectModelElement { + + /** + * Returns the package name of this classifier. + * + * @return the package name of this classifier. + */ + public String getPackageName(); + + /** + * Returns the qualified name of this classifier. + * Class qualified name is composed of the package name and the classifier name. + * + * @return the qualified name of this classifier. + */ + public String getQualifiedName(); + + /** + * Returns all parent interfaces for this classifier. + * + * @see ObjectModelClassifier + * + * @return a Collection containing all parent ObjectModelInterface for this classifier. + */ + public Collection<ObjectModelInterface> getInterfaces(); + + /** + * Returns all operations defined on this classifier. + * + * @param name name of operation should be returned + * @return a Collection containing all ObjectModelOperation for this classifier. + * + * @see ObjectModelOperation + */ + public Collection<ObjectModelOperation> getOperations(String name); + + /** + * Returns all operations defined on this classifier. + * @see ObjectModelOperation + * + * @return a Collection containing all ObjectModelOperation for this classifier. + */ + public Collection<ObjectModelOperation> getOperations(); + + /** + * Returns all operations defined on all interfaces implemented by this + * classifier, directly or indirectly. + * @param distinct if this boolean is true only distinct operation + * are add to list. + * @return a Collection of ObjectModelOperation + */ + public Collection<ObjectModelOperation> getAllInterfaceOperations( + boolean distinct); + + /** + * Returns all operations defined on all implemented by this + * classifier, directly or indirectly. For interface this methode return + * the same result as getAllInterfaceOperations, for Class this + * method add all operation of SuperClass. + * @param distinct if this boolean is true only distinct operation + * are add to list. + * @return a Collection of ObjectModelOperation + */ + public Collection<ObjectModelOperation> getAllOtherOperations( + boolean distinct); + + + /** + * Returns all dependencies of this client classifier + * + * @return a Collection of ObjectModelDependency + */ + public Collection<ObjectModelDependency> getDependencies(); + + /** + * Return a dependency identifier by her name + * @param name of the dependency + * @return the dependency + */ + public ObjectModelDependency getDependency(String name); + + /** + * Returns whether this classifier is a class or not + * @see ObjectModelClass + * + * @return a boolean indicating whether this classifier is a class or not. + */ + public boolean isClass(); + + /** + * Returns whether this classifier is an interface or not + * @see ObjectModelInterface + * + * @return a boolean indicating whether this classifier is an interface or not. + */ + public boolean isInterface(); + +} //ObjectModelClassifier diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelDependency.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelDependency.java new file mode 100644 index 0000000..6c04efd --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelDependency.java @@ -0,0 +1,55 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +/** + * Abstraction for the root node of object model trees. + * This an entry point for browsing a model tree. This object offers + * as well several facilities for a direct access to some of the object model elements. + * + * Created: april 23th 2009 + * + * @author Florian Desbois <desbois@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public interface ObjectModelDependency { + /** + * Dependency name + * + * @return a String + */ + public String getName(); + + /** + * Supplier classifier of the dependency + * + * @return an ObjectModelClassifier + */ + public ObjectModelClassifier getSupplier(); + + /** + * Client classifier of the dependency + * + * @return an ObjectModelClassifier + */ + public ObjectModelClassifier getClient(); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java new file mode 100644 index 0000000..fbbcbeb --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java @@ -0,0 +1,117 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * ObjectModelElement. + * + * @author Cédric Pineau <pineau@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public interface ObjectModelElement { + + /** + * Returns the name of this element. + * + * @return the name of this element. + */ + public String getName(); + + /** + * Returns the element in which this element is defined, or null if there's none. + * + * @return the ObjectModelElement in which this element is defined, or null if there's none. + */ + public ObjectModelElement getDeclaringElement(); + + /** + * Returns the whole documentation associated with this element (description + source documentation). + * + * @return the whole documentation associated with this element. + */ + public String getDocumentation(); + + /** + * Returns the description associated with this element. + * + * @return the description associated with this element. + */ + public String getDescription(); + + /** + * Returns the source documentation part associated with this element. + * + * @return the source documentation part associated with this element. + */ + public String getSourceDocumentation(); + + /** + * Returns the stereotypes names associated with this element. + * + * @return a Collection containing all stereotypes names associated with this element as String. + */ + public Collection<String> getStereotypes(); + + /** + * Returns whether this element has a stereotype corresponding to the given name, or not. + * + * @param stereotypeName stereotype name + * @return a boolean indicating whether this element has a stereotype corresponding to the given name, or not. + */ + public boolean hasStereotype(String stereotypeName); + + /** + * Returns the tagValues associated with this element. + * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-) + * + * @return a Map containing all tagValues associated with this element + */ + public Map<String, String> getTagValues(); + + /** + * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name. + * + * @param tagValue tag value name + * @return the value of the found tagValue, or null if the element has no associated tagValue for this name. + */ + public String getTagValue(String tagValue); + + /** + * Returns whether this element has a tagValue corresponding to the given name, or not. + * + * @param tagValue tag value name + * @return a boolean indicating whether this element has a tagValue corresponding to the given name, or not. + */ + public boolean hasTagValue(String tagValue); + + /** + * Returns all comments lied to this particular model element + * + * @return a List containing all comments for this element as Strings. + */ + public List<String> getComments(); + +} //ObjectModelElement diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelEnumeration.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelEnumeration.java new file mode 100644 index 0000000..5f3e190 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelEnumeration.java @@ -0,0 +1,61 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +import java.util.Collection; + +/** + * ObjectModelEnumeration. + * + * @author Florian Desbois <fdesbois@codelutin.com> + * Copyright Code Lutin + * @version $Revision: 483 $ + * + */ +public interface ObjectModelEnumeration extends ObjectModelElement { + + /** + * Returns the package name of this enumeration. + * + * @return the package name of this enumeration. + */ + public String getPackageName(); + + /** + * Returns the qualified name of this enumeration. + * Class qualified name is composed of the package name and the enumeration name. + * + * @return the qualified name of this enumeration. + */ + public String getQualifiedName(); + + /** + * Returns literals of this enumeration. + * + * @return a Collection of String + */ + public Collection<String> getLiterals(); + + /** + * Returns all operations defined on this en enumeration. + * @see ObjectModelOperation + * + * @return a Collection containing all ObjectModelOperation for this enumeration. + */ + public Collection<ObjectModelOperation> getOperations(); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelInterface.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelInterface.java new file mode 100644 index 0000000..0bb7b36 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelInterface.java @@ -0,0 +1,35 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +/** +* Abstraction for the interface node of object model trees. +* This object presents all information concerning the given interface. +* +* Created: 14 janv. 2004 +* +* @author Cédric Pineau <pineau@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +*/ +public interface ObjectModelInterface extends ObjectModelClassifier { + +} //ObjectModelInterface diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java new file mode 100644 index 0000000..714849d --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java @@ -0,0 +1,87 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +import java.util.Collection; +import java.util.Set; + +/** +* Abstraction for the operation node of object model trees. +* This object presents all information concerning the given operation. +* +* Created: 14 janv. 2004 +* +* @author Cédric Pineau <pineau@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +*/ +public interface ObjectModelOperation extends ObjectModelElement { + + /** + * Returns the return type of this operation. + * + * @return the return type of this operation. + */ + public String getReturnType(); + + /** + * Returns the visibility of this operation. + * Possible values includes <tt>public</tt>, <tt>protected</tt> and <tt>private</tt>. + * + * @return the visibility of this operation. + */ + public String getVisibility(); + + /** + * Returns whether this operation is abstract or not. + * + * @return a boolean indicating whether this operation is abstract or not. + */ + public boolean isAbstract(); + + /** + * Returns all parameters defined on this operation. + * @see ObjectModelParameter + * + * @return a Collection containing all parameters defined on this operation. + */ + public Collection<ObjectModelParameter> getParameters(); + + /** + * Return the return parameter of the operation + * @return an ObjectModelParameter representing the return parameter + */ + public ObjectModelParameter getReturnParameter(); + + /** + * In implementation you must write a good equals method + */ + public boolean equals(Object o); + + /** + * Returns all exception qualified names thrown by this operation + * (as strings) + * + * @return a Set containing the exceptions strings + */ + public Set<String> getExceptions(); + +} //ObjectModelOperation diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelParameter.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelParameter.java new file mode 100644 index 0000000..1a4ec7b --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelParameter.java @@ -0,0 +1,76 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object; + +/** +* Abstraction for the parameter node of object model trees. +* This object presents all information concerning the given parameter. +* +* Created: 14 janv. 2004 +* +* @author Cédric Pineau <pineau@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +*/ +public interface ObjectModelParameter extends ObjectModelElement { + + /** + * Returns the type of this parameter. + * + * @return the type of this parameter. + */ + public String getType(); + + /** + * Returns the minimal multiplicity of this parameter. + * The <tt>-1</tt> value means infinite. + * + * @return the minimal multiplicity of this parameter. + */ + public int getMinMultiplicity(); + + /** + * Returns the maximal multiplicity of this parameter. + * The <tt>-1</tt> value means infinite. + * + * @return the maximal multiplicity of this parameter. + */ + public int getMaxMultiplicity(); + + /** + * true if this parameter is isOrdered + * @return true if this parameter is isOrdered + */ + public boolean isOrdered(); + + /** + * true if this parameter is isUnique + * @return true if this parameter is isUnique + */ + public boolean isUnique(); + + /** + * default value of this parameter + * @return a String for the defaultValue (must be interpreted depending on the parameter type) + */ + public String getDefaultValue(); + +} //ObjectModelParameter diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/validator/AttributeNamesValidator.java b/eugene/src/main/java/org/nuiton/eugene/models/object/validator/AttributeNamesValidator.java new file mode 100644 index 0000000..dec8ace --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/validator/AttributeNamesValidator.java @@ -0,0 +1,54 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.validator; + +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; + +/** +* AttributeNamesValidator. +* +* Created: 7 mars 2006 +* +* @author Arnaud Thimel <thimel@codelutin.com> +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class AttributeNamesValidator extends NameBasedValidator { + + public AttributeNamesValidator(ObjectModel model) { + super(model, false); + } + + public AttributeNamesValidator(ObjectModel model, boolean caseSensitive) { + super(model, caseSensitive); + } + + @Override + protected boolean validateAttribute(ObjectModelAttribute attr) { + String name = attr.getName(); + if (containsName(name)) { + addError(attr.getDeclaringElement(), getReason(name)); + return false; + } + return true; + } + +} //AttributeNamesValidator diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ClassNamesValidator.java b/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ClassNamesValidator.java new file mode 100644 index 0000000..05a10ba --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ClassNamesValidator.java @@ -0,0 +1,54 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.validator; + +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelClass; + +/** +* ClassNamesValidator. +* +* Created: 9 mars 2006 +* +* @author Arnaud Thimel <thimel@codelutin.com> +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class ClassNamesValidator extends NameBasedValidator { + + public ClassNamesValidator(ObjectModel model) { + super(model, false); + } + + public ClassNamesValidator(ObjectModel model, boolean caseSensitive) { + super(model, caseSensitive); + } + + @Override + protected boolean validateClass(ObjectModelClass clazz) { + String name = clazz.getName(); + if (containsName(name)) { + addError(clazz, getReason(name)); + return false; + } + return true; + } + +} //ClassNamesValidator diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java b/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java new file mode 100644 index 0000000..6b50261 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java @@ -0,0 +1,83 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.validator; + +import java.util.HashMap; +import java.util.Map; + +import org.nuiton.eugene.models.object.ObjectModel; + +/** +* NameBasedValidator. +* +* Created: 9 mars 2006 +* +* @author Arnaud Thimel <thimel@codelutin.com> +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public abstract class NameBasedValidator extends ObjectModelValidator { + + private boolean caseSensitive; + + private Map<String, String> namesAndReasons; + + public NameBasedValidator(ObjectModel model, boolean caseSensitive) { + super(model); + this.caseSensitive = caseSensitive; + } + + private Map<String, String> getNameAndReasons() { + if (namesAndReasons == null) { + namesAndReasons = new HashMap<String, String>(); + } + return namesAndReasons; + } + + public void addNameAndReason(String name, String reason) { + if (name != null) { + if (!caseSensitive) { + name = name.toLowerCase(); + } + getNameAndReasons().put(name, reason); + } + } + + public void addNamesAndReasons(Map<String, String> namesAndReasons) { + for (String key : namesAndReasons.keySet()) { + addNameAndReason(key, namesAndReasons.get(key)); + } + } + + public boolean containsName(String name) { + if (!caseSensitive) { + name = name.toLowerCase(); + } + return getNameAndReasons().containsKey(name); + } + + public String getReason(String name) { + if (!caseSensitive) { + name = name.toLowerCase(); + } + return getNameAndReasons().get(name); + } + +} //NameBasedValidator diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ObjectModelValidator.java b/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ObjectModelValidator.java new file mode 100644 index 0000000..1623302 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ObjectModelValidator.java @@ -0,0 +1,140 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.validator; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; + +/** + * <p> + * Validateur de modèle. + * Cette classe faite pour être surchargée parcours le modèle et appelle + * différentes méthodes pour tester la validité de ses composants. Chacune de + * ces méthodes renvoi "true" si la partie du modèle analysée est valide et + * "false" dans le cas contraire. Lorsqu'une erreur est trouvée, elle est + * ajoutée au validateur par le biais de la méthode "addError". + * Puis l'objet faisant appel au validateur peut récupérer la liste des erreurs + * par la méthode "getErrors". + * </p> + * Created: 7 mars 2006 + * + * @author Arnaud Thimel <thimel@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ObjectModelValidator { + + protected ObjectModel model; + + private List<String> errors; + + public ObjectModelValidator(ObjectModel model) { + this.model = model; + errors = new ArrayList<String>(); + } + + /** + * Renvoie la liste des erreurs constatées pdt la validation. Si aucune + * erreur n'a été constatée ou si la validation n'a pas été effectuée, la + * liste renvoyeé sera vide. + */ + public List<String> getErrors() { + return errors; + } + + /** + * Valide le modèle et renvoie faux si il n'est pas valide + */ + public boolean validate() { + if (errors.size() > 0) { + //On recréé une nouvelle liste + errors = new ArrayList<String>(); + } + boolean isValid = validateModel(this.model); + for (Iterator<ObjectModelClassifier> classifiers = model.getClassifiers().iterator(); + classifiers.hasNext(); ){ + ObjectModelClassifier classifier = classifiers.next(); + isValid &= validateClassifier(classifier); + if (classifier instanceof ObjectModelInterface) { + isValid &= validateInterface((ObjectModelInterface)classifier); + } + if (classifier instanceof ObjectModelClass) { + ObjectModelClass clazz = (ObjectModelClass)classifier; + isValid &= validateClass(clazz); + for (Iterator<ObjectModelAttribute> attributes = clazz.getAttributes().iterator(); + attributes.hasNext(); ) { + isValid &= validateAttribute(attributes.next()); + } + } + for (Iterator<ObjectModelOperation> operations = classifier.getOperations().iterator(); + operations.hasNext(); ) { + isValid &= validateOperation(operations.next()); + } + } + return isValid; + } + + protected boolean validateModel(ObjectModel model) { + return true; + } + + protected boolean validateClassifier(ObjectModelClassifier classifier) { + return true; + } + + protected boolean validateInterface(ObjectModelInterface interfacezz) { + return true; + } + + protected boolean validateClass(ObjectModelClass clazz) { + return true; + } + + protected boolean validateAttribute(ObjectModelAttribute attr) { + return true; + } + + protected boolean validateOperation(ObjectModelOperation operation) { + return true; + } + + protected void addError(ObjectModelElement onElement, String reason) { + String elementString = onElement.toString(); + if (onElement instanceof ObjectModelAttribute) { + elementString = ((ObjectModelClassifier) onElement + .getDeclaringElement()).getQualifiedName() + + "#" + onElement.getName(); + } else if (onElement instanceof ObjectModelClassifier) { + ObjectModelClassifier classifier = (ObjectModelClassifier) onElement; + elementString = classifier.getQualifiedName(); + } + this.errors.add("[" + elementString + "] " + reason); + } + +} //ObjectModelValidator diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java new file mode 100644 index 0000000..6c9d807 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java @@ -0,0 +1,148 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.RuleSetBase; + +/** + * DigesterObjectModelRuleSet + * + * Definit principalement : + * - la classe d'implementation a utiliser pour chaque noeud + * - la methode a appeler apres chaque noeud + * + * Ce jeu de regle ne cree pas l'element racine. + * Il doit etre cree et ajoute a la pile digester avant l'appel a + * <tt>Digester.parse(File)</tt>. + * + * Exemple: + * <code> + * ObjectModel monModel = new ObjectModelImpl() + * Digester d = new Digester(); + * d.push(monModel); + * d.parse(file); + * </code> + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class DigesterObjectModelRuleSet extends RuleSetBase { + + protected String prefix = null; + + public DigesterObjectModelRuleSet() { + this(""); + } + + public DigesterObjectModelRuleSet(String prefix) { + super(); + this.prefix = prefix; + this.namespaceURI = "http://www.codelutin.org/lutingenerator/objectModel"; + } + + /* (non-Javadoc) + * @see org.apache.commons.digester.RuleSetBase#addRuleInstances(org.apache.commons.digester.Digester) + */ + @Override + public void addRuleInstances(Digester d) { + + //d.addFactoryCreate("objectModel", DigesterObjectModelFactory.class); + // root element must be present on stask + d.addSetProperties("objectModel"); + + d.addObjectCreate("objectModel/class", ObjectModelClassImpl.class); + d.addSetProperties("objectModel/class"); + d.addSetNext("objectModel/class", "addClass"); + + d.addObjectCreate("objectModel/interface", + ObjectModelInterfaceImpl.class); + d.addSetProperties("objectModel/interface"); + d.addSetNext("objectModel/interface", "addInterface"); + + d.addObjectCreate("objectModel/enumeration", + ObjectModelEnumerationImpl.class); + d.addSetProperties("objectModel/enumeration"); + d.addSetNext("objectModel/enumeration", "addEnumeration"); + + d.addObjectCreate("objectModel/enumeration/literal", + ObjectModelImplRef.class); + d.addSetProperties("objectModel/enumeration/literal"); + d.addSetNext("objectModel/enumeration/literal", "addLiteral"); + + d.addObjectCreate("objectModel/associationClass", + ObjectModelAssociationClassImpl.class); + d.addSetProperties("objectModel/associationClass"); + d.addSetNext("objectModel/associationClass", "addAssociationClass"); + + d.addObjectCreate("*/participant", + ObjectModeImplAssociationClassParticipant.class); + d.addSetProperties("*/participant"); + d.addSetNext("*/participant", "addParticipant"); + + d.addObjectCreate("*/stereotype", ObjectModelImplRef.class); + d.addSetProperties("*/stereotype"); + d.addSetNext("*/stereotype", "addStereotype"); + + d.addObjectCreate("*/dependency", ObjectModelDependencyImpl.class); + d.addSetProperties("*/dependency"); + d.addSetNext("*/dependency", "addDependency"); + + d.addObjectCreate("*/attribute", ObjectModelAttributeImpl.class); + d.addSetProperties("*/attribute"); + d.addSetNext("*/attribute", "addAttribute"); + + d.addObjectCreate("*/interface", ObjectModelImplRef.class); + d.addSetProperties("*/interface"); + d.addSetNext("*/interface", "addInterface"); + + d.addObjectCreate("*/superclass", ObjectModelImplSuperClassRef.class); + d.addSetProperties("*/superclass"); + d.addSetNext("*/superclass", "addSuperclass"); + + d.addObjectCreate("*/operation", ObjectModelOperationImpl.class); + d.addSetProperties("*/operation"); + d.addSetNext("*/operation", "addOperation"); + + d.addObjectCreate("*/operation/returnParameter", + ObjectModelParameterImpl.class); + d.addSetProperties("*/operation/returnParameter"); + d.addSetNext("*/operation/returnParameter", "setReturnParameter"); + + d.addObjectCreate("*/operation/parameter", + ObjectModelParameterImpl.class); + d.addSetProperties("*/operation/parameter"); + d.addSetNext("*/operation/parameter", "addParameter"); + + d.addObjectCreate("*/operation/exceptionParameter", + ObjectModelParameterImpl.class); + d.addSetProperties("*/operation/exceptionParameter"); + d.addSetNext("*/operation/exceptionParameter", "addExceptionParameter"); + + d.addObjectCreate("*/tagValue", ObjectModelImplTagValue.class); + d.addSetProperties("*/tagValue"); + d.addSetNext("*/tagValue", "addTagValue"); + + d.addObjectCreate("*/comment", String.class); + d.addSetProperties("*/comment"); + d.addSetNext("*/comment", "addComment"); + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModeImplAssociationClassParticipant.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModeImplAssociationClassParticipant.java new file mode 100644 index 0000000..ea11c15 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModeImplAssociationClassParticipant.java @@ -0,0 +1,69 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import org.nuiton.eugene.GeneratorUtil; + +/** + * ObjectModeImplAssociationClassParticipant. + * + * @author cedric,chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ObjectModeImplAssociationClassParticipant extends + ObjectModelImplRef { + + protected ObjectModelAssociationClassImpl associationClass = null; + + protected String attributeName = null; + + public ObjectModeImplAssociationClassParticipant() { + super(); + } + + /** + * @param associationClass the associationClass to set + */ + public void setAssociationClass( + ObjectModelAssociationClassImpl associationClass) { + this.associationClass = associationClass; + } + + public void setAttribute(String attributeName) { + this.attributeName = attributeName; + } + + public String getAttributeName() { + if ((attributeName == null) || ("".equals(attributeName))) { + for (ObjectModeImplAssociationClassParticipant participant : associationClass.getParticipantsRefs()) { + if (participant != this) { + attributeName = GeneratorUtil + .toLowerCaseFirstLetter(GeneratorUtil + .getClassNameFromQualifiedName(participant + .getName())); + break; + } + } + } + return attributeName; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java new file mode 100644 index 0000000..a01727f --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java @@ -0,0 +1,120 @@ +/* + * \*##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ + +package org.nuiton.eugene.models.object.xml; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.object.ObjectModelAssociationClass; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; + +/** + * ObjectModelAssociationClassImpl.java + * + * @author chatellier + * @author cedric + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ObjectModelAssociationClassImpl extends ObjectModelClassImpl + implements ObjectModelAssociationClass { + + private static Log log = LogFactory + .getLog(ObjectModelAssociationClassImpl.class); + + protected List<ObjectModelAttribute> participantsAttributes = null; + protected List<ObjectModelClassifier> participantsClassifiers = null; + protected List<ObjectModeImplAssociationClassParticipant> participantsRefs = new ArrayList<ObjectModeImplAssociationClassParticipant>(); + + public ObjectModelAssociationClassImpl() { + super(); + } + + public void addParticipant( + ObjectModeImplAssociationClassParticipant participant) { + //if (participant == null) + // return new ObjectModeImplAssociationClassParticipant(this); + participant.postInit(); + participant.setAssociationClass(this); + participantsRefs.add(participant); + //return participant; + } + + /** + * Returns all participants (that is association ends) attributes for this association class. + * @see ObjectModelAttribute + * + * @return a List containing all participants attributes for this association class. + */ + public List<ObjectModelAttribute> getParticipantsAttributes() { + if (participantsAttributes == null) { + parseParticipantsRefs(); + } + return participantsAttributes; + } + + /** + * Returns all participants (that is association ends) classifiers for this association class. + * @see ObjectModelClassifier + * + * @return a List containing all participants classifiers for this association class. + */ + public List<ObjectModelClassifier> getParticipantsClassifiers() { + if (participantsClassifiers == null) { + parseParticipantsRefs(); + } + return participantsClassifiers; + } + + protected void parseParticipantsRefs() { + participantsClassifiers = new ArrayList<ObjectModelClassifier>(); + participantsAttributes = new ArrayList<ObjectModelAttribute>(); + + for (ObjectModeImplAssociationClassParticipant ref : participantsRefs) { + ObjectModelClassifier classifier = objectModelImpl + .getClassifier(ref.getName()); + participantsClassifiers.add(classifier); + ObjectModelAttribute attribute = null; + if (classifier.isClass()) { + attribute = ((ObjectModelClass) classifier).getAttribute(ref + .getAttributeName()); + if (attribute == null) { + log.warn("WARNING : Attribute " + ref.getAttributeName() + + " not found on " + classifier.getQualifiedName()); + log.warn("WARNING : Assuming there is no navigability in this direction for the " + + getQualifiedName() + " association class"); + } + } + participantsAttributes.add(attribute); + } + } + + public Collection<ObjectModeImplAssociationClassParticipant> getParticipantsRefs() { + return participantsRefs; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java new file mode 100644 index 0000000..45471c3 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java @@ -0,0 +1,242 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import org.nuiton.eugene.GeneratorUtil; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; + +/** + * ObjectModelAttributeImpl. + * + * Created: 14 janv. 2004 + * + * @author Cédric Pineau <pineau@codelutin.com> Copyright Code Lutin + * + * @version $Revision$ + * + * Last update : $Date$ by : $Author$ + */ +public class ObjectModelAttributeImpl extends ObjectModelParameterImpl + implements ObjectModelAttribute { + + protected String reverseAttributeName = null; + protected int reverseMaxMultiplicity = -1; + protected String associationType = null; + protected String visibility = "protected"; + protected ObjectModelClassifier reference = null; + protected String associationClassName = null; + protected boolean isStatic = false; + protected boolean isFinal = false; + protected boolean isNavigable = true; + + public ObjectModelAttributeImpl() { + super(); + } + + public void postInit() { + if (name == null) { + name = GeneratorUtil.toLowerCaseFirstLetter(GeneratorUtil + .getClassNameFromQualifiedName(type)); + } + super.postInit(); + } + + public void setReverseAttributeName(String reverseAttributeName) { + this.reverseAttributeName = reverseAttributeName; + } + + public void setAssociationType(String associationType) { + this.associationType = associationType; + } + + public void setReverseMaxMultiplicity(int reverseMaxMultiplicity) { + this.reverseMaxMultiplicity = reverseMaxMultiplicity; + } + + public void setVisibility(String visibility) { + this.visibility = visibility; + } + + public void setFinal(boolean isFinal) { + this.isFinal = isFinal; + } + + public void setStatic(boolean isStatic) { + this.isStatic = isStatic; + } + + public void setNavigable(boolean isNavigable) { + this.isNavigable = isNavigable; + } + + /** + * Returns whether this attribute is an aggregate or not. + * + * @return a boolean indicating whether this attribute is an aggregate or + * not. + */ + public boolean isAggregate() { + return "aggregate".equals(associationType) || "shared".equals(associationType); + } + + /** + * Returns whether this attribute is an composite or not. + * + * @return a boolean indicating whether this attribute is an composite or + * not. + */ + public boolean isComposite() { + return "composite".equals(associationType); + } + + public String getVisibility() { + return visibility; + } + + public void setAssociationClassName(String associationClassName) { + this.associationClassName = associationClassName; + } + + /** + * Returns whether this attribute reference a model classifier or not. + * + * @return a boolean indicating whether this attribute reference a model + * classifier or not. + */ + public boolean referenceClassifier() { + return (getClassifier() != null); + } + + /** + * Returns the classifier referenced by this attribute or null if it does + * not reference a model classifier. + * + * @return the ObjectModelClassfifier referenced by this attribute or null + * if it does not reference a model classifier. + */ + public ObjectModelClassifier getClassifier() { + return getModel().getClassifier(type); + } + + /** + * Returns the attribute used to reference this class at the other end of + * the association or null if this is not an association, or if it is not + * bi-directionnal. @ see #getClassifier() + * + * @return the ObjectModelAttribute used to reference this class at the + * other end of the association or null if this is not an + * association, or if it is not bi-directionnal. + */ + public ObjectModelAttribute getReverseAttribute() { + ObjectModelAttribute reverseAttribute = null; + ObjectModelClassifier classifier = getClassifier(); + if (classifier instanceof ObjectModelClass) { + reverseAttribute = ((ObjectModelClass) classifier) + .getAttribute(getReverseAttributeName()); + } + return reverseAttribute; + } + + public String getReverseAttributeName() { + if ((reverseAttributeName == null) || ("".equals(reverseAttributeName))) { + reverseAttributeName = GeneratorUtil + .toLowerCaseFirstLetter(getDeclaringElement().getName()); + } + return reverseAttributeName; + } + + public String getName() { + if ((name == null || "".equals(name)) && getClassifier() != null) { + name = GeneratorUtil.toLowerCaseFirstLetter(getClassifier() + .getName()); + } + return name; + } + + /* + * (non-Javadoc) + * + * @see org.nuiton.eugene.models.object.ObjectModelAttribute#getReverseMaxMultiplicity() + */ + public int getReverseMaxMultiplicity() { + return reverseMaxMultiplicity; + } + + /** + * Returns the association class associated with this association, or null + * if there is none. + * + * @return a ObjectModelClass corresponding to the association class + * associated with this association, or null if there is none. + */ + public ObjectModelClass getAssociationClass() { + return getModel().getClass(associationClassName); + } + + /** + * Returns whether this association has an associated association class, ot + * not. + * + * @return a boolean indicating whether this association has an associated + * association class, ot not. + */ + public boolean hasAssociationClass() { + return (getAssociationClass() != null); + } + + /** + * Returns whether this attribute is static or not. + * + * @return a boolean indicating whether this attribute is static or not. + */ + public boolean isStatic() { + return isStatic; + } + + /** + * Returns whether this attribute is final or not. + * + * @return a boolean indicating whether this attribute is final or not. + */ + public boolean isFinal() { + return isFinal; + } + + /* + * @see org.nuiton.eugene.models.object.ObjectModelAttribute#isNavigable() + */ + public boolean isNavigable() { + return isNavigable; + } + + /* + * @see org.nuiton.eugene.models.object.ObjectModelAttribute#isOrdered() + */ + public boolean isOrdered() { + return isIndexed() || super.isOrdered(); + } + + /* + * @see org.nuiton.eugene.models.object.ObjectModelAttribute#isIndexed() + */ + public boolean isIndexed() { + return hasStereotype("indexed"); + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java new file mode 100644 index 0000000..c8916d4 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java @@ -0,0 +1,279 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; + +/** + * ObjectModelClassImpl. + * + * Created: 14 janv. 2004 + * + * @author Cédric Pineau <pineau@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public class ObjectModelClassImpl extends ObjectModelClassifierImpl implements + ObjectModelClass { + + protected List<ObjectModelClass> superclasses = null; + protected Map<ObjectModelClass, String> superclassesDiscriminators = new HashMap<ObjectModelClass, String>(); + protected List<ObjectModelImplRef> superclassesRefs = new ArrayList<ObjectModelImplRef>(); + protected List<ObjectModelClass> specialisations = null; + protected Map<String, ObjectModelAttribute> attributes = new HashMap<String, ObjectModelAttribute>(); + protected List<ObjectModelAttribute> orderedAttributes = new ArrayList<ObjectModelAttribute>(); + protected boolean abstractz = false; + + public ObjectModelClassImpl() { + super(); + } + + public void addSuperclass(ObjectModelImplRef ref) { + //if (ref == null) + //return new ObjectModelImplSuperClassRef(); + superclassesRefs.add(ref); + //return ref; + } + + public void addAttribute(ObjectModelAttributeImpl attribute) { + //if (attribute == null) + //return new ObjectModelAttributeImpl(objectModelImpl, this); + attribute.postInit(); + attribute.setDeclaringElement(this); + attributes.put(attribute.getName(), attribute); + orderedAttributes.add(attribute); + //return attribute; + } + + public void setAbstract(boolean abstractz) { + this.abstractz = abstractz; + } + + @Override + public Collection<ObjectModelClass> getSuperclasses() { + if (superclasses == null) { + superclasses = new ArrayList<ObjectModelClass>(); + Iterator<?> i = superclassesRefs.iterator(); + while (i.hasNext()) { + ObjectModelImplSuperClassRef ref = (ObjectModelImplSuperClassRef) i + .next(); + ObjectModelClass superclass = objectModelImpl.getClass(ref + .getName()); + superclasses.add(superclass); + superclassesDiscriminators.put(superclass, ref + .getDiscriminator()); + } + } + return superclasses; + } + + /** + * Returns the discriminator for the given superclass. + * + * @return the discriminator for the given superclass as a String if it + * exists, null otherwise. + */ + @Override + public String getDiscriminator(ObjectModelClass superclass) { + return superclassesDiscriminators.get(superclass); + } + + /** + * Returns all known direct specialized classes for this class. + * + * @see ObjectModelClass + * + * @return a Collection containing all known direct specialized + * ObjectModelClass for this class. + */ + @Override + public Collection<ObjectModelClass> getSpecialisations() { + if (specialisations == null) { + specialisations = new ArrayList<ObjectModelClass>(); + for (Iterator<?> i = objectModelImpl.getClasses().iterator(); i + .hasNext();) { + ObjectModelClass candidateClass = (ObjectModelClass) i.next(); + if (candidateClass.getSuperclasses().contains(this)) { + specialisations.add(candidateClass); + } + } + } + return specialisations; + } + + /** + * Returns all known specialized classes for this class for the specified + * discriminator. + * + * @see ObjectModelClass + * + * @return a Collection containing all known specialized ObjectModelClass + * for this class for the specified discriminator. + */ + @Override + public Collection<ObjectModelClass> getSpecialisations(String discriminator) { + List<ObjectModelClass> discriminatedSpecialisations = new ArrayList<ObjectModelClass>(); + for (Iterator<ObjectModelClass> i = getSpecialisations().iterator(); i + .hasNext();) { + ObjectModelClass candidateClass = i.next(); + if (discriminator.equals(candidateClass.getDiscriminator(this))) { + discriminatedSpecialisations.add(candidateClass); + } + } + return discriminatedSpecialisations; + } + + @Override + public Collection<ObjectModelAttribute> getAttributes() { + return orderedAttributes; + } + + /** + * Returns the attribute corresponding to the given name, or null if the + * class contains no attribute for this name. + * + * @return the ObjectModelAttribute of the found attribute, or null if the + * class contains no attribute for this name. + */ + @Override + public ObjectModelAttribute getAttribute(String attributeName) { + return (attributeName == null ? null : attributes.get(attributeName)); + } + + /** + * Returns whether this class is abstract or not. + * + * @return a boolean indicating whether this class is abstract or not. + */ + @Override + public boolean isAbstract() { + return abstractz; + } + + @Override + public Collection<ObjectModelOperation> getAllOtherOperations( + boolean distinct) { + Collection<ObjectModelOperation> result = getAllInterfaceOperations(distinct); + getAllSuperclassOperations(result); + return result; + } + + @Override + public Collection<ObjectModelOperation> getAllSuperclassOperations( + boolean distinct) { + Collection<ObjectModelOperation> result = null; + if (distinct) { + result = new HashSet<ObjectModelOperation>(); + } else { + result = new LinkedList<ObjectModelOperation>(); + } + getAllSuperclassOperations(result); + return result; + } + + protected Collection<ObjectModelOperation> getAllSuperclassOperations( + Collection<ObjectModelOperation> result) { + for (Iterator<?> i = getSuperclasses().iterator(); i.hasNext();) { + ObjectModelClassImpl clazz = (ObjectModelClassImpl) i.next(); + result.addAll(clazz.getOperations()); + clazz.getAllSuperclassOperations(result); + clazz.getAllInterfaceOperations(result); + } + return result; + } + + @Override + public Collection<ObjectModelAttribute> getAllOtherAttributes() { + Collection<ObjectModelAttribute> result = new LinkedList<ObjectModelAttribute>(); + getAllOtherAttributes(result); + return result; + } + + protected Collection<ObjectModelAttribute> getAllOtherAttributes( + Collection<ObjectModelAttribute> result) { + for (Iterator<?> i = getSuperclasses().iterator(); i.hasNext();) { + ObjectModelClassImpl clazz = (ObjectModelClassImpl) i.next(); + result.addAll(clazz.getAttributes()); + clazz.getAllOtherAttributes(result); + } + return result; + } + + @Override + public String toString() { + StringBuffer result = new StringBuffer(); + result.append("class " + getQualifiedName() + "<<" + getStereotypes() + + ">> tagvalue: " + getTagValues() + " "); + result.append("extends "); + for (Iterator<?> i = getSuperclasses().iterator(); i.hasNext();) { + result.append(((ObjectModelClassifier) i.next()).getName()); + if (i.hasNext()) { + result.append(", "); + } + } + result.append("implements "); + for (Iterator<?> i = getInterfaces().iterator(); i.hasNext();) { + result.append(((ObjectModelClassifier) i.next()).getName()); + if (i.hasNext()) { + result.append(", "); + } + } + return result.toString(); + } + + /** + * Returns whether this classifier is a class or not + * + * @see ObjectModelClass + * + * @return a boolean indicating whether this classifier is a class or not. + */ + @Override + public boolean isClass() { + return true; + } + + /** + * Returns whether this classifier is an interface or not + * + * @see ObjectModelInterface + * + * @return a boolean indicating whether this classifier is an interface or + * not. + */ + @Override + public boolean isInterface() { + return false; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java new file mode 100644 index 0000000..a2cede0 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java @@ -0,0 +1,184 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelDependency; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; + +/** + * ObjectModelClassifierImpl. + * + * @author chatellier + * @author cedric + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public abstract class ObjectModelClassifierImpl extends ObjectModelElementImpl + implements ObjectModelClassifier { + + protected boolean extern = false; + + protected String qualifiedName = null; + protected String packageName = null; + protected List<ObjectModelInterface> interfaces = null; + protected List<ObjectModelImplRef> interfacesRefs = new ArrayList<ObjectModelImplRef>(); + protected List<ObjectModelOperation> operations = new ArrayList<ObjectModelOperation>(); + protected List<ObjectModelDependency> dependencies = new ArrayList<ObjectModelDependency>(); + + protected String type = null; + + public String toString() { + return "" + getQualifiedName() + " implements " + getInterfaces(); + } + + public ObjectModelClassifierImpl() { + super(); + } + + public void postInit() { + super.postInit(); + qualifiedName = packageName + "." + name; + } + + public void setExtern(boolean extern) { + this.extern = extern; + } + + public void setPackage(String packageName) { + this.packageName = packageName; + } + + public void addInterface(ObjectModelImplRef ref) { + //if (ref == null) + // return new ObjectModelImplRef(); + interfacesRefs.add(ref); + //return ref; + } + + public void addOperation(ObjectModelOperationImpl operation) { + //if (operation == null) + // return new ObjectModelOperationImpl(objectModelImpl, this); + operation.postInit(); + operation.setDeclaringElement(this); + operations.add(operation); + //return operation; + } + + public void addDependency(ObjectModelDependencyImpl dependency) { + dependency.postInit(); + dependency.setClient(this); + dependencies.add(dependency); + } + + public void setType(String type) { + this.type = type; + } + + public boolean isExtern() { + return extern; + } + + public String getPackageName() { + return packageName; + } + + public String getQualifiedName() { + return qualifiedName; + } + + public Collection<ObjectModelInterface> getInterfaces() { + if (interfaces == null) { + interfaces = new ArrayList<ObjectModelInterface>(); + for(ObjectModelImplRef ref : interfacesRefs) { + interfaces.add(objectModelImpl.getInterface(ref.getName())); + } + } + return interfaces; + } + + public Collection<ObjectModelOperation> getOperations(String name) { + List<ObjectModelOperation> result = new ArrayList<ObjectModelOperation>(); + for (Iterator<ObjectModelOperation> i = getOperations().iterator(); i + .hasNext();) { + ObjectModelOperation op = i.next(); + if (name.equals(op.getName())) { + result.add(op); + } + } + return result; + } + + public Collection<ObjectModelOperation> getOperations() { + return operations; + } + + public Collection<ObjectModelOperation> getAllOtherOperations( + boolean distinct) { + return getAllInterfaceOperations(distinct); + } + + public Collection<ObjectModelOperation> getAllInterfaceOperations( + boolean distinct) { + Collection<ObjectModelOperation> result = null; + if (distinct) { + result = new HashSet<ObjectModelOperation>(); + } else { + result = new LinkedList<ObjectModelOperation>(); + } + getAllInterfaceOperations(result); + return result; + } + + protected Collection<ObjectModelOperation> getAllInterfaceOperations( + Collection<ObjectModelOperation> result) { + for (ObjectModelClassifier interfacez : getInterfaces()) { + result.addAll(interfacez.getOperations()); + ((ObjectModelClassifierImpl)interfacez).getAllInterfaceOperations(result); + } + return result; + } + + @Override + public Collection<ObjectModelDependency> getDependencies() { + return this.dependencies; + } + + @Override + public ObjectModelDependency getDependency(String name) { + if (name.isEmpty()) { + return null; + } + for (ObjectModelDependency dependency : this.dependencies) { + if (dependency.getName().equalsIgnoreCase(name)) { + return dependency; + } + } + return null; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelDependencyImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelDependencyImpl.java new file mode 100644 index 0000000..63abbe3 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelDependencyImpl.java @@ -0,0 +1,81 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelDependency; + +/** + * ObjectModelDependencyImpl. + * + * Created: april 23th 2009 + * + * @author Florian Desbois <desbois@codelutin.com> + * Copyright Code Lutin + * @version $Revision: 478 $ + * + */ +public class ObjectModelDependencyImpl extends ObjectModelImplRef implements ObjectModelDependency { + + /** + * Supplier name from XML file + */ + private String supplierName; + + /** + * Implementation of client to get the model when supplier is needed + */ + private ObjectModelClassifierImpl client; + + private ObjectModelClassifier supplier; + + /** + * Method call for Digester setting properties of Dependency + * @param supplierName + */ + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public String getSupplierName() { + return this.supplierName; + } + + /** + * The object instance of supplier is getting from model when supplier is null + * @return an ObjectModelClassifier corresponding to the supplier of the dependency + */ + @Override + public ObjectModelClassifier getSupplier() { + if (this.supplier == null) { + ObjectModelClassifier classifier = this.client.getModel().getClassifier(supplierName); + this.supplier = classifier; + } + return this.supplier; + } + + public void setClient(ObjectModelClassifierImpl client) { + this.client = client; + } + + @Override + public ObjectModelClassifier getClient() { + return this.client; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java new file mode 100644 index 0000000..42a2e31 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java @@ -0,0 +1,211 @@ +/* + * \*##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ + +package org.nuiton.eugene.models.object.xml; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.nuiton.eugene.models.object.ObjectModelElement; + +/** + * ObjectModelElementImpl. + * + * @author chatellier + * @author cedric + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ObjectModelElementImpl implements ObjectModelElement { + + protected ObjectModelImpl objectModelImpl; + protected ObjectModelElement declaringElement; + + protected String name = null; + protected String documentation = null; + protected List<String> stereotypes = new ArrayList<String>(); + protected Map<String, String> tagValues = new HashMap<String, String>(); + protected List<String> comments = new ArrayList<String>(); + + public ObjectModelElementImpl() { + super(); + } + + /** + * @param objectModelImpl the objectModelImpl + */ + public void setObjectModelImpl(ObjectModelImpl objectModelImpl) { + this.objectModelImpl = objectModelImpl; + } + + /** + * @param declaringElement the declaringElement to set + */ + public void setDeclaringElement(ObjectModelElement declaringElement) { + this.declaringElement = declaringElement; + } + + /** + * TODO a tester + * @return + */ + protected ObjectModelImpl getModel() { + if (objectModelImpl != null) { + return objectModelImpl; + } else if (declaringElement != null) { + return ((ObjectModelElementImpl) declaringElement).getModel(); + } + return null; + } + + public void postInit() { + } + + public void setName(String name) { + this.name = name; + } + + public void setDocumentation(String documentation) { + this.documentation = documentation; + } + + public ObjectModelImplRef addStereotype(ObjectModelImplRef stereotype) { + if (stereotype == null) { + return new ObjectModelImplRef(); + } + stereotypes.add(stereotype.getName()); + return stereotype; + } + + public ObjectModelImplTagValue addTagValue(ObjectModelImplTagValue tagValue) { + if (tagValue == null) { + return new ObjectModelImplTagValue(); + } + tagValues.put(tagValue.getName(), tagValue.getValue()); + return tagValue; + } + + public void addComment(String comment) { + this.comments.add(comment); + } + + public String getName() { + return name; + } + + /** + * Returns the element in which this element is defined, or null if there's none. + * + * @return the ObjectModelElement in which this element is defined, or null if there's none. + */ + public ObjectModelElement getDeclaringElement() { + return declaringElement; + } + + /** + * Returns the whole documentation associated with this element (description + source documentation). + * + * @return the whole documentation associated with this element. + */ + public String getDocumentation() { + if (documentation == null && hasTagValue("documentation")) { + return getTagValue("documentation"); + } + return documentation; + } + + /** + * Returns the description associated with this element. + * + * @return the description associated with this element. + */ + public String getDescription() { + return getDocumentation().substring(0, getDocumentation().indexOf("--")); + } + + /** + * Returns the source documentation part associated with this element. + * + * @return the source documentation part associated with this element. + */ + public String getSourceDocumentation() { + return getDocumentation().substring(getDocumentation().indexOf("--") + 2); + } + + /** + * Returns the stereotypes names associated with this element. + * + * @return a Collection containing all stereotypes names associated with this element as String. + */ + public Collection<String> getStereotypes() { + return stereotypes; + } + + /** + * Returns whether this element has a stereotype corresponding to the given name, or not. + * + * @return a boolean indicating whether this element has a stereotype corresponding to the given name, or not. + */ + public boolean hasStereotype(String stereotypeName) { + return stereotypes.contains(stereotypeName); + } + + /** + * Returns the tagValues associated with this element. + * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-) + * + * @return a Map containing all tagValues associated with this element + */ + public Map<String, String> getTagValues() { + return tagValues; + } + + /** + * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name. + * + * @return the value of the found tagValue, or null if the element has no associated tagValue for this name. + */ + public String getTagValue(String tagValue) { + return (tagValue == null ? null : (String) tagValues.get(tagValue)); + } + + /** + * Returns whether this element has a tagValue corresponding to the given name, or not. + * + * @return a boolean indicating whether this element has a tagValue corresponding to the given name, or not. + */ + public boolean hasTagValue(String tagValue) { + return tagValues.containsKey(tagValue); + } + + /** + * Returns all comments lied to this particular model element + * + * @return a List containing all comments for this element as Strings. + */ + public List<String> getComments() { + return comments; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java new file mode 100644 index 0000000..6dbe7fb --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java @@ -0,0 +1,103 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import java.util.ArrayList; +import java.util.Collection; + +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelOperation; + +/** + * ObjectModelEnumerationImpl. + * + * Created: may 4th 2009 + * + * @author Florian Desbois <desbois@codelutin.com> + * Copyright Code Lutin + * @version $Revision: 478 $ + * + */ +public class ObjectModelEnumerationImpl extends ObjectModelElementImpl + implements ObjectModelEnumeration { + + /** + * Collection of references corresponding to literal values + */ + private Collection<ObjectModelImplRef> literalRefs = new ArrayList<ObjectModelImplRef>(); + + /** + * Collection of operations objectModel + */ + private Collection<ObjectModelOperation> operations = new ArrayList<ObjectModelOperation>(); + + /** + * Package name from objectModel file, loaded with Digester + */ + private String packageName; + + public void setPackage(String packageName) { + this.packageName = packageName; + } + + public String getPackage() { + return this.packageName; + } + /** + * Add a literal to the ObjectModelEnumeration from Digester + * @param ref corresponding to a Literal value + */ + public void addLiteral(ObjectModelImplRef ref) { + literalRefs.add(ref); + } + + /** + * Add an operation to the ObjectModelEnumeration from Digester + * @param operation + */ + public void addOperation(ObjectModelOperationImpl operation) { + operation.postInit(); + operation.setDeclaringElement(this); + operations.add(operation); + } + + @Override + public String getPackageName() { + return this.packageName; + } + + @Override + public String getQualifiedName() { + return this.packageName+"."+this.getName(); + } + + @Override + public Collection<String> getLiterals() { + Collection<String> results = new ArrayList<String>(); + for (ObjectModelImplRef ref : literalRefs) { + results.add(ref.getName()); + } + return results; + } + + @Override + public Collection<ObjectModelOperation> getOperations() { + return operations; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java new file mode 100644 index 0000000..f2f8d3c --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java @@ -0,0 +1,495 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelInterface; + +/** + * Implementation class for the root node abstraction of object model trees. + * This an entry point for browsing a model tree. This object offers as well + * several facilities for a direct access to some of the object model elements. + * In this concrete class, the tree is build by parsing an object model xml + * description using lutinxml XMLObjectParser. + * + * Created: 14 janv. 2004 + * + * @author Cédric Pineau <pineau@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public class ObjectModelImpl implements ObjectModel { + + protected String name = null; + protected Map<String, ObjectModelClass> classes = new HashMap<String, ObjectModelClass>(); + protected Map<String, ObjectModelInterface> interfaces = new HashMap<String, ObjectModelInterface>(); + protected Map<String, ObjectModelClassifier> classifiers = new HashMap<String, ObjectModelClassifier>(); + protected Map<String, ObjectModelEnumeration> enumerations = new HashMap<String, ObjectModelEnumeration>(); + protected List<String> comments = new ArrayList<String>(); + private Map<String, String> tagValues = new HashMap<String, String>(); + + private static Log log = LogFactory.getLog(ObjectModelImpl.class); + + public void setName(String name) { + this.name = name; + } + + public void addClass(ObjectModelClassImpl clazz) { + //if (clazz == null) + // return new ObjectModelClassImpl(this, null); + clazz.postInit(); + clazz.setObjectModelImpl(this); + + if (!clazz.isExtern()) { + ObjectModelElementImpl initialElement = (ObjectModelElementImpl) classes + .get(clazz.getQualifiedName()); + if (initialElement == null) { + classes.put(clazz.getQualifiedName(), clazz); + classifiers.put(clazz.getQualifiedName(), clazz); + } else { + if (!(initialElement instanceof ObjectModelClassImpl)) { + throw new IllegalArgumentException( + "\"" + + clazz + + "\" is incompatible with already defined element \"" + + initialElement + "\""); + } + ObjectModelClassImpl initialClazz = (ObjectModelClassImpl) initialElement; + + // La classe existe déjà. On va prendre tout ce que contient la + // nouvelle classe et l'ajouter à la précédente si nécessaire. + + mergeClasses(initialClazz, clazz); + clazz = initialClazz; + } + } + //return clazz; + } + + public void addAssociationClass(ObjectModelAssociationClassImpl clazz) { + //if (clazz == null) + // return new ObjectModelAssociationClassImpl(this, null); + clazz.postInit(); + clazz.setObjectModelImpl(this); + + if (!clazz.isExtern()) { + ObjectModelElementImpl initialElement = (ObjectModelElementImpl) classes + .get(clazz.getQualifiedName()); + if (initialElement == null) { + classes.put(clazz.getQualifiedName(), clazz); + classifiers.put(clazz.getQualifiedName(), clazz); + } else { + if (!(initialElement instanceof ObjectModelAssociationClassImpl)) { + throw new IllegalArgumentException( + "\"" + + clazz + + "\" is incompatible with already defined element \"" + + initialElement + "\""); + } + ObjectModelAssociationClassImpl initialClazz = (ObjectModelAssociationClassImpl) initialElement; + + mergeAssociationClasses(initialClazz, clazz); + clazz = initialClazz; + } + } + //return clazz; + } + + public void addComment(String comment) { + this.comments.add(comment); + } + + /** + * Returns the name of this model. + * + * @return the name of this model. + */ + public String getName() { + return name; + } + + /** + * Returns all classifiers defined in this model. + * + * @see ObjectModelClassifier + * + * @return a Collection containing all ObjectModelClassifier for this model. + */ + public Collection<ObjectModelClassifier> getClassifiers() { + return classifiers.values(); + } + + /** + * Returns the classifier corresponding to the given qualified name, or null + * if the model contains no classifier for this qualified name. + * + * @param qualifiedClassifierName - + * the qualified name of the classifier to retrieve. + * + * @return the ObjectModelClassifier of the found classifier, or null if the + * model contains no classifier for this qualified name. + */ + public ObjectModelClassifier getClassifier(String qualifiedClassifierName) { + return (qualifiedClassifierName == null ? null + : (ObjectModelClassifier) classifiers + .get(qualifiedClassifierName)); + } + + /** + * Returns all classes defined in this model. + * + * @see ObjectModelClass + * + * @return a Collection containing all ObjectModelClass for this model. + */ + public Collection<ObjectModelClass> getClasses() { + return classes.values(); + } + + /** + * Returns the class corresponding to the given qualified name, or null if + * the model contains no class for this qualified name. + * + * @param qualifiedClassName - + * the qualified name of the class to retrieve. + * + * @return the ObjectModelClass of the found class, or null if the model + * contains no class for this qualified name. + */ + public ObjectModelClass getClass(String qualifiedClassName) { + if (qualifiedClassName == null) { + return null; + } + if (!hasClass(qualifiedClassName)) { + //FIXME Decide if this is a good idea + if (log.isWarnEnabled()) { + log.warn("Class " + qualifiedClassName + " not found in model"); + log.warn("You may forgot to declare for good an external class ?"); + + log.warn("Generating fake class"); + } + ObjectModelClassImpl result = new ObjectModelClassImpl(); + int index = qualifiedClassName.lastIndexOf("."); + if (index != -1) { + result.setPackage(qualifiedClassName.substring(0, index)); + } + result.setName(qualifiedClassName.substring(index + 1)); + result.postInit(); + return result; + } + return (ObjectModelClass) classes.get(qualifiedClassName); + } + + /* + * (non-Javadoc) + * + * @see org.nuiton.eugene.models.object.ObjectModel#hasClass(java.lang.String) + */ + public boolean hasClass(String qualifiedClassName) { + boolean hasClass = classes.containsKey(qualifiedClassName); + return hasClass; + } + + public void addInterface(ObjectModelInterfaceImpl interfacez) { + //if (interfacez == null) + // return new ObjectModelInterfaceImpl(this, null); + interfacez.postInit(); + interfacez.setObjectModelImpl(this); + + if (!interfacez.isExtern()) { + ObjectModelElementImpl initialElement = (ObjectModelElementImpl) interfaces + .get(interfacez.getQualifiedName()); + if (initialElement == null) { + interfaces.put(interfacez.getQualifiedName(), interfacez); + classifiers.put(interfacez.getQualifiedName(), interfacez); + } else { + if (!(initialElement instanceof ObjectModelInterfaceImpl)) { + throw new IllegalArgumentException( + "\"" + + interfacez + + "\" is incompatible with already defined element \"" + + initialElement + "\""); + } + ObjectModelInterfaceImpl initialInterfacez = (ObjectModelInterfaceImpl) initialElement; + + mergeClassifiers(initialInterfacez, interfacez); + interfacez = initialInterfacez; + } + } + //return interfacez; + } + + /** + * Returns the interface corresponding to the given qualified name, or null + * if the model contains no interface for this qualified name. + * + * @param qualifiedInterfaceName - + * the qualified name of the interface to retrieve. + * + * @return the ObjectModelInterface of the found interface, or null if the + * model contains no interface for this qualified name. + */ + public ObjectModelInterface getInterface(String qualifiedInterfaceName) { + ObjectModelInterface result = null; + result = (ObjectModelInterface) interfaces.get(qualifiedInterfaceName); + if (result == null && log.isWarnEnabled()) { + log.warn("Interface " + qualifiedInterfaceName + " not found in model"); + } + return result; + } + + /** + * Returns all interfaces defined in this model. + * + * @see ObjectModelInterface + * + * @return a Collection containing all ObjectModelInterface for this model. + */ + public Collection<ObjectModelInterface> getInterfaces() { + return interfaces.values(); + } + + public void addEnumeration(ObjectModelEnumerationImpl enumeration) { + enumeration.postInit(); + enumeration.setObjectModelImpl(this); + enumerations.put(enumeration.getQualifiedName(), enumeration); + } + + @Override + public Collection<ObjectModelEnumeration> getEnumerations() { + return enumerations.values(); + } + + @Override + public ObjectModelEnumeration getEnumeration(String qualifiedEnumerationName) { + ObjectModelEnumeration result = enumerations.get(qualifiedEnumerationName); + if (result == null && log.isWarnEnabled()) { + log.warn("Enumeration " + qualifiedEnumerationName + " not found in model"); + } + return result; + } + + /** + * Returns all comments not lied to a particular model element + * + * @return a List containing all comments for this model as Strings. + */ + public List<String> getComments() { + return comments; + } + + protected void mergeClassifiers( + ObjectModelClassifierImpl initialClazzifier, + ObjectModelClassifierImpl additionalClazzifier) { + Iterator it; + + // On n'utilise pas les parsetXXX puisque les post-init sont censés être + // déjà faits... + + // System.out.println("Doc initial : " + + // initialClazzifier.documentation); + // System.out.println("Doc additional : " + + // additionalClazzifier.documentation); + String description = ""; + String sourceDoc = ""; + if (initialClazzifier.documentation != null) { + description += initialClazzifier.getDescription(); + if (initialClazzifier.documentation.contains("--")) { + sourceDoc += initialClazzifier.getSourceDocumentation(); + } + } + if (additionalClazzifier.documentation != null) { + if (!description.equals("")) { + description += " - "; + } + description += additionalClazzifier.getDescription(); + if (additionalClazzifier.documentation.contains("--")) { + if (!sourceDoc.equals("")) { + sourceDoc += " - "; + } + sourceDoc += additionalClazzifier.getSourceDocumentation(); + } + } + if (!description.equals("") || !sourceDoc.equals("")) { + initialClazzifier.documentation = description + "--" + sourceDoc; + } + // System.out.println("Doc after : " + initialClazzifier.documentation); + + for (it = additionalClazzifier.interfacesRefs.iterator(); it.hasNext();) { + ObjectModelImplRef interfaceRef = (ObjectModelImplRef) it.next(); + if (!contains(initialClazzifier.interfacesRefs, interfaceRef)) { + initialClazzifier.interfacesRefs.add(interfaceRef); + } + initialClazzifier.interfaces = null; // On force ainsi à + // regénérer l'objet + } + for (it = additionalClazzifier.getOperations().iterator(); it.hasNext();) { + ObjectModelOperationImpl operation = (ObjectModelOperationImpl) it + .next(); + if (!contains(initialClazzifier.getOperations(), operation)) { + initialClazzifier.operations.add(operation); + } + } + for (it = additionalClazzifier.getComments().iterator(); it.hasNext();) { + String comment = (String) it.next(); + if (!initialClazzifier.comments.contains(comment)) { + initialClazzifier.comments.add(comment); + } + } + for (it = additionalClazzifier.getStereotypes().iterator(); it + .hasNext();) { + String stereotype = (String) it.next(); + if (!initialClazzifier.getStereotypes().contains(stereotype)) { + initialClazzifier.stereotypes.add(stereotype); + } + } + + for (it = additionalClazzifier.getTagValues().keySet().iterator(); it + .hasNext();) { + String tagName = (String) it.next(); + if (!initialClazzifier.getTagValues().containsKey(tagName)) { + initialClazzifier.tagValues.put(tagName, additionalClazzifier + .getTagValue(tagName)); + } + } + } + + /** + * This method takes two ObjectModelClassImpl and merges both of them in the + * first one + * + * @param initialClazz + * the instance of ObjectModelClassImpl to be modified + * @param additionalClazz + * the instance of ObjectModelClassImpl tu be used for merging + */ + private void mergeClasses(ObjectModelClassImpl initialClazz, + ObjectModelClassImpl additionalClazz) { + Iterator it; + mergeClassifiers(initialClazz, additionalClazz); + + for (it = additionalClazz.getAttributes().iterator(); it.hasNext();) { + ObjectModelAttributeImpl attribute = (ObjectModelAttributeImpl) it + .next(); + if (!contains(initialClazz.getAttributes(), attribute)) { + initialClazz.attributes.put(attribute.getName(), attribute); + initialClazz.orderedAttributes.add(attribute); + } + } + for (it = additionalClazz.superclassesRefs.iterator(); it.hasNext();) { + ObjectModelImplRef superclassRef = (ObjectModelImplRef) it.next(); + if (!contains(initialClazz.superclassesRefs, superclassRef)) { + initialClazz.superclassesRefs.add(superclassRef); + } + initialClazz.superclasses = null; // On force ainsi à regénérer + // l'objet + } + } + + private void mergeAssociationClasses( + ObjectModelAssociationClassImpl initialAssocClazz, + ObjectModelAssociationClassImpl additionalAssocClazz) { + mergeClasses(initialAssocClazz, additionalAssocClazz); + Iterator it; + for (it = additionalAssocClazz.participantsRefs.iterator(); it + .hasNext();) { + ObjectModeImplAssociationClassParticipant participant = (ObjectModeImplAssociationClassParticipant) it + .next(); + if (!contains(initialAssocClazz.participantsRefs, participant)) { + initialAssocClazz.participantsRefs.add(participant); + } + initialAssocClazz.participantsAttributes = null; // On force + // ainsi à + // regénérer + // l'objet + initialAssocClazz.participantsClassifiers = null; // On force + // ainsi à + // regénérer + // l'objet + } + } + + private boolean contains(Collection<ObjectModelAttribute> coll, + ObjectModelAttributeImpl toFind) { + for (Iterator<ObjectModelAttribute> it = coll.iterator(); it.hasNext();) { + ObjectModelAttribute attribute = it.next(); + if (attribute.getName().equals(toFind.getName())) { // Seul le nom + // de l'attribut + // compte + return true; + } + } + return false; + } + + private boolean contains(Collection coll, ObjectModelOperationImpl toFind) { + return coll.contains(toFind); // Le equals(...) de + // ObjectModelOperationImpl convient + } + + private boolean contains(Collection coll, ObjectModelImplRef toFind) { + return coll.contains(toFind); // Le equals(...) de ObjectModelImplRef + // convient + } + + public ObjectModelImplTagValue addTagValue(ObjectModelImplTagValue tagValue) { + if (tagValue == null) { + return new ObjectModelImplTagValue(); + } + tagValues.put(tagValue.getName(), tagValue.getValue()); + return tagValue; + } + + /** + * Returns the tagValues associated with this element. For each entry, the + * key is the name of the tagValue, the value is the value of the tagValue + * :-) + * + * @return a Map containing all tagValues associated with this element + */ + public Map<String, String> getTagValues() { + return tagValues; + } + + /** + * Returns the tagValue corresponding to the given name, or null if the + * element has no associated tagValue for this name. + * + * @return the value of the found tagValue, or null if the element has no + * associated tagValue for this name. + */ + public String getTagValue(String tagValue) { + return (tagValue == null ? null : (String) tagValues.get(tagValue)); + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplRef.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplRef.java new file mode 100644 index 0000000..1499da1 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplRef.java @@ -0,0 +1,58 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +/** +* ObjectModelImplRef. +* +* Created: 14 janv. 2004 +* +* @author Cédric Pineau <pineau@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +*/ +public class ObjectModelImplRef { + + protected String name = null; + + public void postInit() { + } + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public boolean equals(Object o) { + if (!(o instanceof ObjectModelImplRef)) { + return false; + } + ObjectModelImplRef oRef = (ObjectModelImplRef) o; + if (name == null) { + return (oRef.getName() == null); + } + return name.equals(oRef.getName()); + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplSuperClassRef.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplSuperClassRef.java new file mode 100644 index 0000000..34744da --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplSuperClassRef.java @@ -0,0 +1,44 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +/** +* ObjectModelImplRef. +* +* Created: 14 janv. 2004 +* +* @author Cédric Pineau <pineau@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +*/ +public class ObjectModelImplSuperClassRef extends ObjectModelImplRef { + + protected String discrimininator = null; + + public void setDiscriminator(String discrimininator) { + this.discrimininator = discrimininator; + } + + public String getDiscriminator() { + return discrimininator; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTagValue.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTagValue.java new file mode 100644 index 0000000..bdfa794 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTagValue.java @@ -0,0 +1,40 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +/** + * ObjectModelImplTagValue.java + * + * @author cedric + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ By : $Author$ + */ +public class ObjectModelImplTagValue extends ObjectModelImplRef { + + protected String value = null; + + public void setValue(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java new file mode 100644 index 0000000..4c68f1c --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java @@ -0,0 +1,80 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import java.util.Iterator; + +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelInterface; + +/** + * ObjectModelInterfaceImpl.java + * + * Created: 14 janv. 2004 + * + * @author Cédric Pineau <pineau@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public class ObjectModelInterfaceImpl extends ObjectModelClassifierImpl + implements ObjectModelInterface { + + public ObjectModelInterfaceImpl() { + super(); + } + + public String toString() { + StringBuffer result = new StringBuffer(); + result.append("interface " + getQualifiedName() + " "); + result.append("extends "); + for (Iterator i = getInterfaces().iterator(); i.hasNext();) { + result.append(((ObjectModelClassifier) i.next()).getName()); + if (i.hasNext()) { + result.append(", "); + } + } + return result.toString(); + } + + /** + * Returns whether this classifier is a class or not + * + * @see ObjectModelClass + * + * @return a boolean indicating whether this classifier is a class or not. + */ + public boolean isClass() { + return false; + } + + /** + * Returns whether this classifier is an interface or not + * + * @see ObjectModelInterface + * + * @return a boolean indicating whether this classifier is an interface or + * not. + */ + public boolean isInterface() { + return true; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java new file mode 100644 index 0000000..dc4be61 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java @@ -0,0 +1,159 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + +/** + * ObjectModelOperationImpl.java + * + * Created: 14 janv. 2004 + * + * @author Cédric Pineau <pineau@codelutin.com> Copyright Code Lutin + * + * @version $Revision$ + * + * Last update : $Date$ by : $Author$ + */ +public class ObjectModelOperationImpl extends ObjectModelElementImpl implements + ObjectModelOperation { + + protected ObjectModelParameter returnParameter = null; + + protected String visibility = "public"; + + protected String transactionLevel = "supports"; + + protected boolean abstractz = false; + + protected List<ObjectModelParameter> parameters = new ArrayList<ObjectModelParameter>(); + + protected Set<String> exceptions = new HashSet<String>(); + + public ObjectModelOperationImpl() { + super(); + } + + public String toString() { + return getName() + "(" + parameters + ")" + "<<" + getStereotypes() + + ">> throws " + exceptions + " tagvalue: " + getTagValues(); + } + + /** + * 2 operations are equal if the have same name and same argument type. + */ + public boolean equals(Object o) { + if (o instanceof ObjectModelOperation) { + ObjectModelOperation op = (ObjectModelOperation) o; + if (getName().equals(op.getName()) + && getParameters().size() == op.getParameters().size()) { + for (Iterator i = getParameters().iterator(), opi = op + .getParameters().iterator(); i.hasNext() + && opi.hasNext();) { + ObjectModelParameter p = (ObjectModelParameter) i.next(); + ObjectModelParameter pop = (ObjectModelParameter) opi + .next(); + if (!p.getType().equals(pop.getType())) { + return false; + } + } + return true; + } + } + return false; + } + + public void addParameter(ObjectModelParameterImpl parameter) { + // if (parameter == null) + // return new ObjectModelParameterImpl(objectModelImpl, this); + parameter.postInit(); + parameter.setDeclaringElement(this); + parameters.add(parameter); + // return parameter; + } + + public void setVisibility(String visibility) { + this.visibility = visibility; + } + + public void setAbstract(boolean abstractz) { + this.abstractz = abstractz; + } + + public void setReturnParameter(ObjectModelParameterImpl returnParameter) { + // /if (returnParameter == null) + // return new ObjectModelParameterImpl(objectModelImpl, this); + returnParameter.postInit(); + returnParameter.setDeclaringElement(this); + this.returnParameter = returnParameter; + } + + @Override + public ObjectModelParameter getReturnParameter() { + return this.returnParameter; + } + + public String getReturnType() { + if (returnParameter != null) { + return returnParameter.getType(); + } + return "void"; + } + + public String getVisibility() { + return visibility; + } + + /** + * Returns whether this operation is abstract or not. + * + * @return a boolean indicating whether this operation is abstract or not. + */ + public boolean isAbstract() { + return abstractz; + } + + public Collection<ObjectModelParameter> getParameters() { + return parameters; + } + + /** + * Add new raised exception. + * + * @param raisedParameter exception to add + */ + public void addExceptionParameter(ObjectModelParameterImpl raisedParameter) { + raisedParameter.postInit(); + raisedParameter.setDeclaringElement(this); + + this.exceptions.add(raisedParameter.getType()); + } + + public Set<String> getExceptions() { + return exceptions; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java new file mode 100644 index 0000000..7aec9b7 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java @@ -0,0 +1,110 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.object.xml; + +import org.nuiton.eugene.models.object.ObjectModelParameter; + +/** + * ObjectModelParameterImpl. + * + * Created: 14 janv. 2004 + * + * @author Cédric Pineau <pineau@codelutin.com> Copyright Code Lutin + * + * @version $Revision$ + * + * Last update : $Date$ by : $Author$ + */ +public class ObjectModelParameterImpl extends ObjectModelElementImpl implements + ObjectModelParameter { + + protected String type = null; + protected int minMultiplicity = 1; + protected int maxMultiplicity = 1; + protected String ordering = "unspecified"; + protected boolean isUnique = true; + protected String defaultValue = null; + + public ObjectModelParameterImpl() { + super(); + } + + public void setType(String type) { + this.type = type; + } + + public void setMinMultiplicity(int minMultiplicity) { + this.minMultiplicity = minMultiplicity; + } + + public void setMaxMultiplicity(int maxMultiplicity) { + this.maxMultiplicity = maxMultiplicity; + } + + public void setOrdering(String ordering) { + this.ordering = ordering; + } + + public void setUnique(boolean unique) { + this.isUnique = unique; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDefaultValue() { + return defaultValue; + } + + @Override + public int getMinMultiplicity() { + return minMultiplicity; + } + + @Override + public int getMaxMultiplicity() { + return maxMultiplicity; + } + + /** + * @see org.nuiton.eugene.models.object.ObjectModelAttribute#isOrdered() + */ + @Override + public boolean isOrdered() { + return "ordered".equals(ordering) + || getTagValue("order-by") != null; + } + + @Override + public boolean isUnique() { + return this.isUnique; + } + + @Override + public String toString() { + return getType() + " " + getName() + "<<" + getStereotypes() + + ">> tagvalue: " + getTagValues(); + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java new file mode 100644 index 0000000..c843131 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java @@ -0,0 +1,43 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state; + +import java.util.List; + +import org.nuiton.eugene.models.Model; + +/** + * StateModel + * + * Model root element. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public interface StateModel extends Model { + + /** + * Return the collection of charts + * @return collection of charts + */ + public abstract List<StateModelStateChart> getStateCharts(); + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelComplexState.java b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelComplexState.java new file mode 100644 index 0000000..1afae62 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelComplexState.java @@ -0,0 +1,55 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state; + +import java.util.Collection; + +/** + * StateModelComplexeState + * + * Represents a complex state that can be composed with a set of states. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public interface StateModelComplexState extends StateModelState { + + /** + * Return the states set + * @return a collection of states + */ + public Collection<StateModelState> getStates(); + + /** + * Return the non initial state pointed by the initial state of the state + * set. + * + * Exemple : + * myComplexeState = ( + * init1 -> state2 -> state3 -> final4 + * ) + * + * myComplexeState.getInitialState() will return state2. + * + * @return a state + */ + public StateModelState getInitialState(); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelSimpleState.java b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelSimpleState.java new file mode 100644 index 0000000..0aa1165 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelSimpleState.java @@ -0,0 +1,44 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state; + +/** + * StateModelSimpleState + * + * A simple state. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public interface StateModelSimpleState extends StateModelState { + + /** + * State final status + * @return true il the state is final + */ + public boolean isFinal(); + + /** + * State initial status + * @return true if the state is initial + */ + public boolean isInitial(); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelState.java b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelState.java new file mode 100644 index 0000000..dcf7b45 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelState.java @@ -0,0 +1,55 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state; + +import java.util.List; + +/** + * StateModelState.java + * + * A state, that can be simple or complexe + * + * @see org.nuiton.eugene.models.state.StateModelSimpleState + * @see org.nuiton.eugene.models.state.StateModelComplexState + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public interface StateModelState { + + /** + * Get the state name + * @return state name + */ + public String getName(); + + /** + * Return the state's transition set + * @return a list of transition + */ + public List<StateModelTransition> getTransitions(); + + /** + * State complex status + * @return true if the state is complex + */ + public boolean isComplex(); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelStateChart.java b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelStateChart.java new file mode 100644 index 0000000..d2f90ed --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelStateChart.java @@ -0,0 +1,39 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state; + +/** + * StateModelStateChart + * + * A chart is, like ComplexState, a set of state. + * He got a package name. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public interface StateModelStateChart extends StateModelComplexState { + + /** + * Get package name + * @return package name + */ + public String getPackageName(); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelTransition.java b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelTransition.java new file mode 100644 index 0000000..7f74bb9 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelTransition.java @@ -0,0 +1,44 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state; + +/** + * StateModelTransition + * + * A transition points to a state and has an avent. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public interface StateModelTransition { + + /** + * Return the destination state + * @return a state + */ + public StateModelState getDestinationState(); + + /** + * Return the event name + * @return the event name + */ + public String getEvent(); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/DigesterStateModelRuleSet.java b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/DigesterStateModelRuleSet.java new file mode 100644 index 0000000..5337171 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/DigesterStateModelRuleSet.java @@ -0,0 +1,87 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state.xml; + +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.RuleSetBase; + +/** + * StateModelDigesterRuleSet + * + * Definit principalement : + * - la classe d'implementation a utiliser pour chaque noeud + * - la methode a appeler apres chaque noeud + * + * Ce jeu de regle ne cree pas l'element racine. + * Il doit etre cree et ajoute a la pile digester avant l'appel a + * <tt>Digester.parse(File)</tt>. + * + * Exemple: + * <code> + * StateModel monModel = new StateModelImpl() + * Digester d = new Digester(); + * d.push(monModel); + * d.parse(file); + * </code> + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ By : $Author$ + */ +public class DigesterStateModelRuleSet extends RuleSetBase { + + protected String prefix = null; + + public DigesterStateModelRuleSet() { + this(""); + } + + public DigesterStateModelRuleSet(String prefix) { + super(); + this.prefix = prefix; + this.namespaceURI = "http://www.codelutin.org/lutingenerator/stateModel"; + } + + public void addRuleInstances(Digester digester) { + + //digester.addObjectCreate("stateModel", StateModelImpl.class); + //digester.addFactoryCreate("stateModel", DigesterStateModelFactory.class); + // root element must be present on stask + digester.addSetProperties("stateModel"); + + digester.addObjectCreate("stateModel/stateChart", + StateModelStateChartImpl.class); + digester.addSetProperties("stateModel/stateChart"); + digester.addSetNext("stateModel/stateChart", "addStateChart"); + + digester.addObjectCreate("*/state", StateModelSimpleStateImpl.class); + digester.addSetProperties("*/state"); + digester.addSetNext("*/state", "addState"); + + digester.addObjectCreate("*/complexeState", + StateModelComplexeStateImpl.class); + digester.addSetProperties("*/complexeState"); + digester.addSetNext("*/complexeState", "addState"); + + digester + .addObjectCreate("*/transition", StateModelTransitionImpl.class); + digester.addSetProperties("*/transition"); + digester.addSetNext("*/transition", "addTransition"); + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java new file mode 100644 index 0000000..ee6cdd0 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java @@ -0,0 +1,150 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state.xml; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.nuiton.eugene.models.state.StateModelComplexState; +import org.nuiton.eugene.models.state.StateModelSimpleState; +import org.nuiton.eugene.models.state.StateModelState; +import org.nuiton.eugene.models.state.StateModelTransition; + +/** + * StateModelComplexeStateImpl.java + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class StateModelComplexeStateImpl extends StateModelStateImpl implements + StateModelComplexState { + + /** + * States'set of this state + */ + protected Map<String, StateModelState> mapState; + + /** + * Constructor + */ + public StateModelComplexeStateImpl() { + super(); + mapState = new HashMap<String, StateModelState>(); + } + + /** + * Add a state + * @param state the state + */ + public void addState(StateModelState state) { + mapState.put(state.getName(), state); + } + + /* (non-Javadoc) + * @see org.nuiton.eugene.models.state.StateModelComplexeState#getStates() + */ + public Collection<StateModelState> getStates() { + return mapState.values(); + } + + /** + * Correct association, because, the xml file migth be non ordonated + */ + void correctTransitionNameToInstance(StateModelComplexeStateImpl parent) { + + // iterator + Iterator<StateModelState> it = mapState.values().iterator(); + + while (it.hasNext()) { + StateModelState state = it.next(); + + // reboucle si l'etat est complexe + if (state instanceof StateModelComplexeStateImpl) { + ((StateModelComplexeStateImpl) state) + .correctTransitionNameToInstance(this); + } else { + for (StateModelTransition tr : state.getTransitions()) { + StateModelTransitionImpl tri = (StateModelTransitionImpl) tr; + String name = tri.getStateName(); + + // l'etat apartient au cas complexe courant + if (this.getState(name) != null) { + tri.setState(this.getState(name)); + } else { + // l'etat apartient au cas complexe parent + if (parent != null && parent.getState(name) != null) { + tri.setState(parent.getState(name)); + } + // sinon il reste a null, tant pis + } + } + } + } + } + + /** + * Return a state ref by his name + * @param stateName a state or null if state doesnt exists + */ + StateModelState getState(String stateName) { + return mapState.get(stateName); + } + + /* (non-Javadoc) + * @see org.nuiton.eugene.models.state.xml.StateModelStateImpl#isComplexe() + */ + @Override + public boolean isComplex() { + // TODO Auto-generated method stub + return true; + } + + /* (non-Javadoc) + * @see org.nuiton.eugene.models.state.StateModelComplexeState#getInitialState() + */ + public StateModelState getInitialState() { + + StateModelState response = null; + + // iterator + Iterator<StateModelState> it = mapState.values().iterator(); + + while (it.hasNext()) { + StateModelState state = it.next(); + + // if state is simple + if (!state.isComplex()) { + StateModelSimpleState simpleState = (StateModelSimpleState) state; + + if (simpleState.isInitial()) { + // get(0), normalement il n'y a qu'une transition sur un etat initial + response = simpleState.getTransitions().get(0) + .getDestinationState(); + } + } + } + + return response; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java new file mode 100644 index 0000000..9ff93b4 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java @@ -0,0 +1,137 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state.xml; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.nuiton.eugene.models.state.StateModel; +import org.nuiton.eugene.models.state.StateModelStateChart; + +/** + * StateModelImpl.java + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class StateModelImpl implements StateModel { + + /** + * List of charts composing this model + */ + protected List<StateModelStateChart> listStateCharts; + + /** + * Name of this model + */ + protected String name = null; + + /** + * Model tagged values + */ + protected Map<String, String> modelTagValues; + + /** + * Construteur + */ + public StateModelImpl() { + super(); + listStateCharts = new ArrayList<StateModelStateChart>(); + modelTagValues = new HashMap<String, String>(); + } + + /* + * @see org.nuiton.eugene.models.state.StateModel#getName() + */ + public String getName() { + return this.name; + } + + /** + * Set model name. + * + * @param name model name + */ + public void setName(String name) { + this.name = name; + } + + /** + * Add chart. + * + * @param chart chart + */ + public void addStateChart(StateModelStateChart chart) { + + // appele apres construction du StateModelStateChartImpl + // corrige les liens entre les nom d'etat, et les instances d'etat + ((StateModelStateChartImpl) chart) + .correctTransitionNameToInstance(null); + + listStateCharts.add(chart); + } + + /* + * @see org.nuiton.eugene.models.state.StateModel#getStateCharts() + */ + public List<StateModelStateChart> getStateCharts() { + return listStateCharts; + } + + /** + * Add a list of stateCharts into current model + * @param charts list + */ + public void addAllStateCharts(Collection<StateModelStateChart> charts) { + listStateCharts.addAll(charts); + } + + /* + * @see org.nuiton.eugene.models.state.StateModel#getTagValues() + */ + public Map<String, String> getTagValues() { + return modelTagValues; + } + + /** + * Add a tag value + * + * @param key key + * @param value value + */ + public void addTagValue(String key, String value) { + modelTagValues.put(key, value); + } + + /** + * Get a tag value + * + * @return the value of the found tagValue, or null if the element has no + * associated tagValue for this name. + */ + public String getTagValue(String key) { + return (key == null ? null : (String) modelTagValues.get(key)); + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelSimpleStateImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelSimpleStateImpl.java new file mode 100644 index 0000000..3c06026 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelSimpleStateImpl.java @@ -0,0 +1,75 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state.xml; + +import org.nuiton.eugene.models.state.StateModelSimpleState; + +/** + * StateModelSimpleStateImpl.java + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class StateModelSimpleStateImpl extends StateModelStateImpl implements + StateModelSimpleState { + + /** init state ? */ + protected boolean initialState; + + /** final state ? */ + protected boolean finalState; + + /** + * Constructeur + */ + public StateModelSimpleStateImpl() { + initialState = finalState = false; + } + + /** + * @return the finalState + */ + public boolean isFinal() { + return finalState; + } + + /** + * @param finalState the finalState to set + */ + public void setFinal(boolean finalState) { + this.finalState = finalState; + } + + /** + * @return the initialState + */ + public boolean isInitial() { + return initialState; + } + + /** + * @param initialState the initialState to set + */ + public void setInitial(boolean initialState) { + this.initialState = initialState; + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateChartImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateChartImpl.java new file mode 100644 index 0000000..938930d --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateChartImpl.java @@ -0,0 +1,52 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state.xml; + +import org.nuiton.eugene.models.state.StateModelStateChart; + +/** + * StateModelStateChartImpl.java + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class StateModelStateChartImpl extends StateModelComplexeStateImpl + implements StateModelStateChart { + + /** Package name. */ + protected String packageName; + + /* + * @see org.nuiton.eugene.models.state.StateModelStateChart#getPackageName() + */ + public String getPackageName() { + return packageName; + } + + /** + * Set package name. + * + * @param packageName package name + */ + public void setPackage(String packageName) { + this.packageName = packageName; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java new file mode 100644 index 0000000..1fd372a --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java @@ -0,0 +1,114 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.nuiton.eugene.models.state.StateModelState; +import org.nuiton.eugene.models.state.StateModelTransition; + +/** + * StateModelStateImpl.java + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +/** + * StateModelStateImpl.java + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class StateModelStateImpl implements StateModelState { + + /** + * State name + */ + protected String name; + + /** + * Transition list + */ + protected List<StateModelTransition> listTransitions; + + /** + * Constructor + */ + public StateModelStateImpl() { + super(); + listTransitions = new ArrayList<StateModelTransition>(); + } + + /* (non-Javadoc) + * @see org.nuiton.eugene.models.state.StateModelState#getName() + */ + public String getName() { + return name; + } + + /** + * Set state name + * @param name the name + */ + public void setName(String name) { + this.name = name; + } + + /** + * Add transition + * @param transition a transition + */ + public void addTransition(StateModelTransition transition) { + listTransitions.add(transition); + } + + /* (non-Javadoc) + * @see org.nuiton.eugene.models.state.StateModelState#getTransitions() + */ + public List<StateModelTransition> getTransitions() { + return listTransitions; + } + + /* (non-Javadoc) + * @see org.nuiton.eugene.models.state.StateModelState#isComplexe() + */ + public boolean isComplex() { + return false; + } + + /* (non-Javadoc) + * @see org.nuiton.eugene.models.state.StateModelState#isFinal() + */ + public boolean isFinal() { + return false; + } + + /* (non-Javadoc) + * @see org.nuiton.eugene.models.state.StateModelState#isInitial() + */ + public boolean isInitial() { + return false; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelTransitionImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelTransitionImpl.java new file mode 100644 index 0000000..89bdd59 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelTransitionImpl.java @@ -0,0 +1,106 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state.xml; + +import org.nuiton.eugene.models.state.StateModelState; +import org.nuiton.eugene.models.state.StateModelTransition; + +/** + * StateModelTransitionImpl + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class StateModelTransitionImpl implements StateModelTransition { + + /** + * Destination state name + */ + protected String stateName = null; + + /** + * Event + */ + protected String event; + + /** + * Destination state reference + */ + protected StateModelState state = null; + + /** + * Constructor + */ + public StateModelTransitionImpl() { + super(); + } + + /** + * ToState name + * @param stateName name + */ + public void setToState(String stateName) { + this.stateName = stateName; + } + + /** + * Get toState name + * @return the stateName + */ + public String getStateName() { + return stateName; + } + + /** + * Permet de positionner un lien sur l'instance de l'état. + * + * On ne peut pas le faire directement car le fichier xml n'est + * potentielement par ordonne, et par concequent, les etat n'ont pas encore + * ete traite. + * + * @param state state to set + */ + public void setState(StateModelState state) { + this.state = state; + } + + /* + * @see org.nuiton.eugene.models.state.StateModelTransition#getDestinationState() + */ + public StateModelState getDestinationState() { + return state; + } + + /* + * @see org.nuiton.eugene.models.state.StateModelTransition#getEvent() + */ + public String getEvent() { + return event; + } + + /** + * Set transition event + * @param event event name + */ + public void setEvent(String event) { + this.event = event; + } +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModel.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModel.java new file mode 100644 index 0000000..428142b --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModel.java @@ -0,0 +1,76 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui; + +import java.util.Collection; + +/** +* UIModel.java +* +* Created: Jun 2, 2004 +* +* @author pineau +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +* +* Abstraction for the root node of ui model trees. +* This an entry point for browsing an ui model tree. +* This object offers as well several facilities for +* a direct access to some of the ui model elements. +*/ +public interface UIModel { + + /** + * Returns the version of this model. + * + * @return the version of this model. + */ + public String getVersion(); + + /** + * Returns the package of this model. + * + * @return the package of this model. + */ + public String getPackage(); + + /** + * Returns the object root defined in this ui model. + * @see UIModelObject + * + * @return the object root defined in this ui model. + */ + public UIModelObject getRoot(); + + /** + * Returns all objects defined in this ui model. + * @see UIModelObject + * + * @return a Collection containing all UIModelObjects for this ui model. + */ + public Collection<UIModelObject> getObjects(); + + /** + * Method used to add objects in this model + * @see UIModelObject + * + */ + public void addObject(UIModelObject object); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelArguments.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelArguments.java new file mode 100644 index 0000000..f381dab --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelArguments.java @@ -0,0 +1,43 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui; + +import java.util.List; + +/** + * UIModelArguments. + * + * Created: Jun 2, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public interface UIModelArguments { // UIModelArguments + + /** + * Returns a arguments list. + * @return a arguments list. + */ + public List<Object> getArguments(); + +} // UIModelArguments + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelChild.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelChild.java new file mode 100644 index 0000000..3c69a07 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelChild.java @@ -0,0 +1,51 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui; + +/** + * UIModelChild. + * + * Created: Jun 1, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public interface UIModelChild { // UIModelChild + + /** + * Returns a UIModelObject for this child. + * @see UIModelObject + * + * @return a UIModelObject for this child. + */ + public UIModelObject getObject(); + + /** + * Returns a UIModelConstraint for this child. + * @see UIModelObject + * + * @return a UIModelConstraint for this child. + */ + public UIModelConstraint getConstraint(); + +} // UIModelChild + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelConstraint.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelConstraint.java new file mode 100644 index 0000000..4ab6f97 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelConstraint.java @@ -0,0 +1,50 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui; + +/** + * UIModelConstraint. + * + * Created: Jun 3, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public interface UIModelConstraint { // UIModelConstraint + + /** + * Returns the value of this constraint. + * the value returned can be an instance of UIModelObject + * or String or null + * @return the value of this constraint. + */ + public Object getValue(); + + /** + * Returns the value of this constraint if the type is String + * else return null + * @return the value of this constraint. + */ + public String getStringValue(); + +} // UIModelConstraint + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelEvent.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelEvent.java new file mode 100644 index 0000000..1bada05 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelEvent.java @@ -0,0 +1,65 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui; + +/** +* UIModelEvent. +* +* Created: Jun 1, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public interface UIModelEvent { // UIModelEvent + + /** + * Returns the addListenerMethod of this event + * @return addListenerMethod + */ + public String getAddMethod(); + + /** + * Returns the listenerInterface of this event + * @return listenerInterface + */ + public String getSource(); + + /** + * Returns the listenerMethodName of this event + * @return listenerMethodName + */ + public String getAction(); + + /** + * Returns the handler of this event + * @return handler + */ + public String getHandler(); + + /** + * Returns the eventPropertyName of this event + * @return eventPropertyName + */ + public String getArgument(); + +} // UIModelEvent + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelObject.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelObject.java new file mode 100644 index 0000000..48fcab2 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelObject.java @@ -0,0 +1,111 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ +package org.nuiton.eugene.models.ui; + +import java.util.Collection; + +/** +* UIModelObject.java +* +* Created: Jun 2, 2004 +* +* @author pineau +* @version $Revision$ +* +* Last update : $Date$ +* by : $Author$ +*/ +public interface UIModelObject { + + /** + * Returns the parent of this object. + * Returns null if this object is root + * @return the parent of this object. + */ + public UIModelObject getParent(); + + /** + * Returns the type of this object. + * + * @return the type of this object. + */ + public String getType(); + + /** + * Returns the value of the property "name" of this object + * + * @return the name of this object. + */ + public String getName(); + + /** + * Returns the constraint of this object + * @see UIModelConstraint + * + * @return the constraint of this object. + */ + public UIModelConstraint getConstraint(); + + /** + * Returns all arguments defined on this object. + * This collection can contain UIModelObject or a primitive type + * + * @return a Collection containing all arguments for this object. + */ + public Collection<Object> getArguments(); + + /** + * Returns all properties defined on this object. + * @see UIModelProperty + * + * @return a Collection containing all UIModelProperty for this object. + */ + public Collection<UIModelProperty> getProperties(); + + /** + * Returns the property defined on this object. + * @see UIModelProperty + * @param name the name of the property which must be returned + * @return a UIModelProperty for this object with the . + */ + public UIModelProperty getProperty(String name); + + /** + * Returns all events defined on this object. + * @see UIModelEvent + * + * @return a Collection containing all UIModelEvents for this object. + */ + public Collection<UIModelEvent> getEvents(); + + /** + * Returns all children defined on this object. + * @see UIModelChild + * + * @return a Collection containing all UIModelChildren for this object. + */ + public Collection<UIModelChild> getChildren(); + + /** + * Returns the uimodel of this object. + * @see UIModel + * + * @return the uimodel of this object. + */ + public UIModel getModel(); + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelProperty.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelProperty.java new file mode 100644 index 0000000..53a01c7 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/UIModelProperty.java @@ -0,0 +1,110 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui; + +/** + * UIModelProperty.java + * + * Created: Jun 2, 2004 + * + * @author pineau + * @version $Revision$ + * + * Last update : $Date$ + * by : $Author$ + */ +public interface UIModelProperty { + + /** + * Returns the name of this property. + * + * @return the name of this property. + */ + public String getName(); + + /** + * Returns the value of this property. + * the value returned can be an instance of UIModelObject + * or String or Integer or Boolean or Character + * @return the value of this property. + */ + public Object getValue(); + + /** + * Returns the index of this property if it's indexed property + * + * @return the index of this property. + */ + public int getIndex() throws Exception; + + public boolean isIndexed(); + + /** + * Returns the value of this property if the type is int + * @return the value of this property. + */ + public int getIntValue(); + + /** + * Returns the value of this property if the type is boolean + * @return the value of this property. + */ + public boolean getBooleanValue(); + + /** + * Returns the value of this property if the type is char + * @return the value of this property. + */ + public char getCharValue(); + + /** + * Returns the value of this property if the type is String + * @return the value of this property. + */ + public String getStringValue(); + + /** + * Returns the value of this property if the type is byte + * @return the value of this property. + */ + public byte getByteValue(); + + /** + * Returns the value of this property if the type is Short + * @return the value of this property. + */ + public short getShortValue(); + + /** + * Returns the value of this property if the type is long + * @return the value of this property. + */ + public long getLongValue(); + + /** + * Returns the value of this property if the type is float + * @return the value of this property. + */ + public float getFloatValue(); + + /** + * Returns the value of this property if the type is double + * @return the value of this property. + */ + public double getDoubleValue(); +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelArgumentsImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelArgumentsImpl.java new file mode 100644 index 0000000..23082c9 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelArgumentsImpl.java @@ -0,0 +1,80 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui.impl; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.nuiton.eugene.models.ui.UIModelArguments; + +/** +* UIModelArgumentsImpl. +* +* Created: Aug 9, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class UIModelArgumentsImpl implements UIModelArguments { // UIModelArgumentsImpl + + protected List<Object> arguments = new ArrayList<Object>(); + + /** + * Changes the arguments list. + * @param arguments - a new arguments list. + */ + public void setArguments(List<Object> arguments) { + this.arguments = arguments; + } + + /** + * Returns a arguments list. + * @return a arguments list. + */ + public List<Object> getArguments() { + return arguments; + } + + /** + * Add an argument to the arguments list + * @param arg - object argument + */ + public void addArgument(Object arg) { + arguments.add(arg); + } + + /** + * @return a string representation of the object + */ + public String toString() { + String argString = "["; + for (Iterator<Object> i = arguments.iterator(); i.hasNext();) { + Object arg = i.next(); + argString = argString + " " + arg.toString(); + } + argString = argString + "]"; + return argString; + } + +} // UIModelArgumentsImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelChildImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelChildImpl.java new file mode 100644 index 0000000..b75da7a --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelChildImpl.java @@ -0,0 +1,97 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.impl; + +import org.nuiton.eugene.models.ui.UIModelChild; +import org.nuiton.eugene.models.ui.UIModelConstraint; +import org.nuiton.eugene.models.ui.UIModelObject; + +/** + * UIModelChildImpl. + * +* Created: Aug 9, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class UIModelChildImpl implements UIModelChild { // UIModelChildImpl + + protected UIModelObject object = null; + protected UIModelConstraint constraint = null; + + /** + * Changes the UIModelObject for this child. + * @see UIModelObject + * + * @param object - a new UIModelObject + */ + public void setObject(UIModelObject object) { + this.object = object; + } + + /** + * Changes the UIModelConstraint for this child. + * @see UIModelConstraint + * + * @param constraint - a new UIModelConstraint + */ + public void setConstraint(UIModelConstraint constraint) { + this.constraint = constraint; + } + + /** + * Returns a UIModelObject for this child. + * @see UIModelObject + * + * @return a UIModelObject for this child. + */ + public UIModelObject getObject() { + return object; + } + + /** + * Returns a UIModelConstraint for this child. + * @see UIModelConstraint + * + * @return a UIModelConstraint for this child. + */ + public UIModelConstraint getConstraint() { + return constraint; + } + + /** + * @return a string representation of the object + */ + public String toString() { + String childString = "["; + childString = childString + " child : " + object.toString() + " \n"; + if (constraint != null) + childString = childString + "constraint : " + constraint.toString() + + " \n"; + childString = childString + "]"; + return childString; + } + +} // UIModelChildImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelConstraintImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelConstraintImpl.java new file mode 100644 index 0000000..952a813 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelConstraintImpl.java @@ -0,0 +1,84 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.impl; + +import org.nuiton.eugene.models.ui.UIModelConstraint; + +/** +* UIModelConstraintImpl. +* +* Created: Aug 9, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class UIModelConstraintImpl implements UIModelConstraint { // UIModelConstraintImpl + + protected Object value = null; + + /** + * Changes the value of this constraint. + * the value can be an instance of UIModelObject + * or String or null + * @param value - the new value of this constraint. + */ + public void setValue(Object value) { + this.value = value; + } + + /** + * Returns the value of this constraint. + * the value returned can be an instance of UIModelObject + * or String or null + * @return the value of this constraint. + */ + public Object getValue() { + return value; + } + + /** + * Returns the value of this constraint + * if the type is String else returnnull + * + * @return the value of this constraint. + */ + public String getStringValue() { + if (value instanceof String) + return (String) value; + return null; + } + + /** + * @return a string representation of the object + */ + public String toString() { + String toString = null; + if (value != null) { + toString = value.toString(); + } + return toString; + } + +} // UIModelConstraintImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelEventImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelEventImpl.java new file mode 100644 index 0000000..b501b62 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelEventImpl.java @@ -0,0 +1,137 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.impl; + +import org.nuiton.eugene.models.ui.UIModelEvent; + +/** +* UIModelEventImpl. +* +* Created: Aug 9, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class UIModelEventImpl implements UIModelEvent { // UIModelEventImpl + + protected String addMethod = null; + protected String source = null; + protected String action = null; + protected String handler = null; + protected String argument = null; + + /** + * Changes the addListenerMethod of this event + * @param addMethod - the new addListenerMethod + */ + public void setAddMethod(String addMethod) { + this.addMethod = addMethod; + } + + /** + * Changes the listenerInterface of this event + * @param source - the new listenerInterface + */ + public void setSource(String source) { + this.source = source; + } + + /** + * Changes the listenerMethodName of this event + * @param action - the new listenerMethodName + */ + public void setAction(String action) { + this.action = action; + } + + /** + * Changes the handler of this event + * @param handler - the new handler + */ + public void setHandler(String handler) { + this.handler = handler; + } + + /** + * Changes the eventPropertyName of this event + * @param argument - the new eventPropertyName + */ + public void setArgument(String argument) { + this.argument = argument; + } + + /** + * Returns the addListenerMethod of this event + * @return addListenerMethod + */ + public String getAddMethod() { + return addMethod; + } + + /** + * Returns the listenerInterface of this event + * @return listenerInterface + */ + public String getSource() { + return source; + } + + /** + * Returns the listenerMethodName of this event + * @return listenerMethodName + */ + public String getAction() { + return action; + } + + /** + * Returns the handler of this event + * @return handler + */ + public String getHandler() { + return handler; + } + + /** + * Returns the eventPropertyName of this event + * @return eventPropertyName + */ + public String getArgument() { + return argument; + } + + /** + * @return a string representation of the object + */ + public String toString() { + String eventString = "[ addMethod : " + addMethod + ", "; + eventString = eventString + "source " + source + ", "; + eventString = eventString + "action " + action + ", "; + eventString = eventString + "handler " + handler + ", "; + eventString = eventString + "argument : " + argument + " ]"; + return eventString; + } + +} // UIModelEventImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelImpl.java new file mode 100644 index 0000000..447487a --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelImpl.java @@ -0,0 +1,137 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.impl; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.nuiton.eugene.models.ui.UIModel; +import org.nuiton.eugene.models.ui.UIModelObject; + +/** +* UIModelImpl. +* +* Created: Aug 6, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class UIModelImpl implements UIModel { // UIModelImpl + + protected String version = null; + protected String packageName = null; + protected UIModelObject root = null; + /** + * Contient tous les objets du model. + * key: nom de l'objet; value: l'objet + */ + protected Map<String, UIModelObject> objects = new HashMap<String, UIModelObject>(); + + /** + * Changes the version of this model + * @param version - version of this model + */ + public void setVersion(String version) { + this.version = version; + } + + /** + * Changes the package of this model + * @param packageName - package name + */ + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + /** + * Changes the object root defined in this model. + * @see UIModelObject + * @param root - object root + */ + public void setRoot(UIModelObject root) { + this.root = root; + } + + /** + * Returns the version of this model. + * + * @return the version of this model. + */ + public String getVersion() { + return version; + } + + /** + * Returns the package of this model. + * + * @return the package of this model. + */ + public String getPackage() { + return packageName; + } + + /** + * Returns the object root defined in this ui model. + * @see UIModelObject + * + * @return the object root defined in this ui model. + */ + public UIModelObject getRoot() { + return root; + } + + /** + * Returns all objects defined in this ui model. + * @see UIModelObject + * + * @return a Collection containing all UIModelObjects for this ui model. + */ + public Collection<UIModelObject> getObjects() { + return objects.values(); + } + + /** + * Method used to add objects in this model + * @see UIModelObject + * + */ + public void addObject(UIModelObject object) { + if (object.getName() != null) { + objects.put(object.getName(), object); + } + } + + /** + * @return a string representation of the object + */ + public String toString() { + String modelString = "version : " + version + ", "; + modelString = modelString + "package : " + packageName + ", "; + modelString = modelString + "root : " + root.toString(); + return modelString; + } + +} // UIModelImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelObjectImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelObjectImpl.java new file mode 100644 index 0000000..4f87368 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelObjectImpl.java @@ -0,0 +1,310 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui.impl; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +import org.nuiton.eugene.models.ui.UIModel; +import org.nuiton.eugene.models.ui.UIModelArguments; +import org.nuiton.eugene.models.ui.UIModelChild; +import org.nuiton.eugene.models.ui.UIModelConstraint; +import org.nuiton.eugene.models.ui.UIModelEvent; +import org.nuiton.eugene.models.ui.UIModelObject; +import org.nuiton.eugene.models.ui.UIModelProperty; + +/** +* UIModelObjectImpl. +* +* Created: Aug 9, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class UIModelObjectImpl implements UIModelObject { // UIModelObjectImpl + + // model et parent semblent inutiles dans cette implantation mais obligatoire pour l'heritage + protected UIModel model = null; + protected UIModelObject parent = null; + + protected String type = null; + protected String name = null; + protected UIModelConstraint constraint = null; + + protected UIModelArguments arguments = null; + protected List<UIModelProperty> properties = new ArrayList<UIModelProperty>(); + protected List<UIModelEvent> events = new ArrayList<UIModelEvent>(); + protected List<UIModelChild> children = new ArrayList<UIModelChild>(); + + /** + * Changes the model of this object. + * @see UIModel + * + * @param model - the new model of this object. + */ + public void setModel(UIModel model) { + this.model = model; + } + + /** + * Changes the type of this object. + * + * @param type - the new type of this object. + */ + public void setType(String type) { + this.type = type; + } + + /** + * Changes the parent of this object. + * Returns null if this object is root + * @param parent - the parent of this object. + */ + public void setParent(UIModelObject parent) { + this.parent = parent; + } + + /** + * Changes the constraint of this object + * @see UIModelConstraint + * + * @param constraint - the new constraint of this object. + */ + public void setConstraint(UIModelConstraint constraint) { + this.constraint = constraint; + } + + /** + * Changes all arguments defined on this object. + * This collection can contain UIModelObject or a primitive type + * + * @param arguments - a Collection containing all arguments for this object. + */ + public void setArguments(UIModelArguments arguments) { + this.arguments = arguments; + } + + /** + * Changes all properties defined on this object. + * @see UIModelProperty + * + * @param properties - a Collection containing all UIModelProperty for this object. + */ + public void setProperties(List<UIModelProperty> properties) { + this.properties = properties; + } + + /** + * Changes all events defined on this object. + * @see UIModelEvent + * + * @param events - a Collection containing all UIModelEvents for this object. + */ + public void setEvents(List<UIModelEvent> events) { + this.events = events; + } + + /** + * Changes all children defined on this object. + * @see UIModelChild + * + * @param children - a Collection containing all UIModelChildren for this object. + */ + public void setChildren(List<UIModelChild> children) { + this.children = children; + } + + /** + * Returns the uimodel of this object. + * @see UIModel + * @deprecated + * @return the uimodel of this object. + */ + public UIModel getModel() { + return model; + } + + /** + * Returns the type of this object. + * + * @return the type of this object. + */ + public String getType() { + return type; + } + + /** + * Returns the value of the property "name" of this object + * + * @return the name of this object. + */ + public String getName() { + if (name == null) { + UIModelProperty propName = getProperty("name"); + if (propName != null) { + name = propName.getStringValue(); + } + } + return name; + } + + /** + * Returns the parent of this object. + * Returns null if this object is root + * @deprecated + * @return the parent of this object. + */ + public UIModelObject getParent() { + return parent; + } + + /** + * Returns the constraint of this object + * @see UIModelConstraint + * + * @return the constraint of this object. + */ + public UIModelConstraint getConstraint() { + return constraint; + } + + /** + * Returns all arguments defined on this object. + * This collection can contain UIModelObject or a primitive type + * + * @return a Collection containing all arguments for this object. + */ + public Collection<Object> getArguments() { + return arguments.getArguments(); + } + + /** + * Returns all properties defined on this object. + * @see UIModelProperty + * + * @return a Collection containing all UIModelProperty for this object. + */ + public Collection<UIModelProperty> getProperties() { + return properties; + } + + /** + * Returns all events defined on this object. + * @see UIModelEvent + * + * @return a Collection containing all UIModelEvents for this object. + */ + public Collection<UIModelEvent> getEvents() { + return events; + } + + /** + * Returns all children defined on this object. + * @see UIModelChild + * + * @return a Collection containing all UIModelChildren for this object. + */ + public Collection<UIModelChild> getChildren() { + return children; + } + + /** + * Returns the property defined on this object. + * @see UIModelProperty + * @param propName the name of the property which must be returned + * @return a UIModelProperty for this object with the . + */ + public UIModelProperty getProperty(String propName) { + Iterator<UIModelProperty> i = properties.iterator(); + UIModelPropertyImpl prop = null; + boolean find = false; + while (i.hasNext() && find == false) { + prop = (UIModelPropertyImpl) i.next(); + if (propName.equals(prop.getName())) { + find = true; + } + } + + return prop; + } + + /** + * Add a UIModelProperty to the properties list + * @see UIModelProperty + * @param prop - a new UIModelProperty + */ + public void addProperty(UIModelProperty prop) { + properties.add(prop); + } + + /** + * Add a UIModelEvent to the events list + * @see UIModelEvent + * @param event - a new UIModelEvent + */ + public void addEvent(UIModelEvent event) { + events.add(event); + } + + /** + * Add a UIModelChild to the children list + * @see UIModelChild + * @param child - a new UIModelChild + */ + public void addChild(UIModelChild child) { + children.add(child); + } + + /** + * @return a string representation of the object + */ + public String toString() { + String objectString = "\n[ type : " + type + ", "; + objectString = objectString + " name : " + getName() + ", "; + objectString = objectString + " arguments : " + arguments.toString(); + + objectString = objectString + " properties : "; + for (Iterator<UIModelProperty> i = properties.iterator(); i.hasNext();) { + Object prop = i.next(); + objectString = objectString + " " + prop.toString(); + } + + objectString = objectString + " events : "; + for (Iterator<UIModelEvent> i = events.iterator(); i.hasNext();) { + Object event = i.next(); + objectString = objectString + " " + event.toString(); + } + + objectString = objectString + " children : "; + for (Iterator<UIModelChild> i = children.iterator(); i.hasNext();) { + Object child = i.next(); + objectString = objectString + " " + child.toString(); + } + + objectString = objectString + "]\n"; + return objectString; + } + +} // UIModelObjectImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelPropertyImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelPropertyImpl.java new file mode 100644 index 0000000..a4b4fcc --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/impl/UIModelPropertyImpl.java @@ -0,0 +1,238 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.impl; + +import org.nuiton.eugene.GeneratorException; +import org.nuiton.eugene.models.ui.UIModelProperty; + +/** +* UIModelPropertyImpl. +* +* Created: Aug 9, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class UIModelPropertyImpl implements UIModelProperty { // UIModelPropertyImpl + + protected String name; + protected UIModelArgumentsImpl arguments; + + /** + * Returns the name of this property. + * + * @return the name of this property. + */ + public String getName() { + return name; + } + + /** + * Returns the UIModelArgumentsImpl of this property. + * UIModelArgumentsImpl contains the arguments list + * @return UIModelArgumentsImpl + */ + public UIModelArgumentsImpl getArguments() { + return arguments; + } + + /** + * Returns the value of this property. + * the value returned can be an instance of UIModelObject + * or String or Integer or Boolean or Character + * @return the value of this property. + */ + public Object getValue() { + int i = arguments.getArguments().size() - 1; + if (i >= 0) { + return arguments.getArguments().get(i); + } + return null; + } + + /** + * Returns the index of this property if it's indexed property + * + * @return the index of this property. + */ + public int getIndex() throws Exception { + if (isIndexed()) { + return ((Integer) arguments.getArguments().get(0)).intValue(); + } + throw new Exception( + "Impossible d'obtenir l'index d'une propriete non indexee"); + } + + /** + * Returns true if the property is indexed + * @return true if the property is indexed + */ + public boolean isIndexed() { + return arguments.getArguments().size() >= 2; + } + + /** + * Returns the value of this property if the type is int + * @return the value of this property. + */ + public int getIntValue() { + Object object = getValue(); + if (object != null) { + return ((Integer) object).intValue(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Returns the value of this property if the type is boolean + * @return the value of this property. + */ + public boolean getBooleanValue() { + Object object = getValue(); + if (object != null) { + return ((Boolean) object).booleanValue(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Returns the value of this property if the type is char + * @return the value of this property. + */ + public char getCharValue() { + Object object = getValue(); + if (object != null) { + return ((Character) object).charValue(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Returns the value of this property if the type is String + * @return the value of this property. + */ + public String getStringValue() { + Object object = getValue(); + if (object != null) { + return getValue().toString(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Returns the value of this property if the type is byte + * @return the value of this property. + */ + public byte getByteValue() { + Object object = getValue(); + if (object != null) { + return ((Byte) object).byteValue(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Returns the value of this property if the type is long + * @return the value of this property. + */ + public long getLongValue() { + Object object = getValue(); + if (object != null) { + return ((Long) object).longValue(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Returns the value of this property if the type is short + * @return the value of this property. + */ + public short getShortValue() { + Object object = getValue(); + if (object != null) { + return ((Short) object).shortValue(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Returns the value of this property if the type is float + * @return the value of this property. + */ + public float getFloatValue() { + Object object = getValue(); + if (object != null) { + return ((Float) object).floatValue(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Returns the value of this property if the type is double + * @return the value of this property. + */ + public double getDoubleValue() { + Object object = getValue(); + if (object != null) { + return ((Double) object).doubleValue(); + } + throw new GeneratorException("La propriete " + name + + " n'a pas de valeur"); + } + + /** + * Changes the name of this property. + * + * @param name - the new name of this property. + */ + public void setName(String name) { + this.name = name; + } + + /** + * Changes the UIModelArgumentsImpl of this property. + * UIModelArgumentsImpl contains the arguments list + * @param arguments - the new UIModelArgumentsImpl of this property. + */ + public void setArguments(UIModelArgumentsImpl arguments) { + this.arguments = arguments; + } + + /** + * @return a string representation of the object + */ + public String toString() { + return getValue().toString(); + } + +} // UIModelPropertyImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParser.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParser.java new file mode 100644 index 0000000..7a965ae --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParser.java @@ -0,0 +1,448 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui.javaxml; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.nuiton.eugene.models.ui.UIModelEvent; +import org.nuiton.eugene.models.ui.UIModelObject; +import org.nuiton.eugene.models.ui.UIModelProperty; +import org.nuiton.eugene.models.ui.impl.UIModelArgumentsImpl; +import org.nuiton.eugene.models.ui.impl.UIModelChildImpl; +import org.nuiton.eugene.models.ui.impl.UIModelConstraintImpl; +import org.nuiton.eugene.models.ui.impl.UIModelEventImpl; +import org.nuiton.eugene.models.ui.impl.UIModelImpl; +import org.nuiton.eugene.models.ui.impl.UIModelObjectImpl; +import org.nuiton.eugene.models.ui.impl.UIModelPropertyImpl; + +/** +* Parser of a xml file issue of XMLEncoder. +* +* Created: Aug 6, 2004 +* +* @author Benjamin Poussin <poussin@codelutin.com> +* Copyright Code Lutin +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author$ +*/ +public class JavaXMLParser { // JavaXMLParser + protected Element rootElement; + protected UIModelImpl uimodel; + + /** + * Parses a xml file and return a uimodel + * @param file - xml file issue of XMLEncoder + * @return UIModelImpl + */ + public UIModelImpl parse(File file) throws DocumentException, + MalformedURLException { + return parse(file.toURI().toURL()); + } + + /** + * Parses a xml file and return a uimodel + * @param url - url of xml file issue of XMLEncoder + * @return UIModelImpl + */ + public UIModelImpl parse(URL url) throws DocumentException, + MalformedURLException { + SAXReader reader = new SAXReader(); + Document document = reader.read(url); + + rootElement = document.getRootElement(); + UIModelImpl result = parseModel(rootElement); + String urlName = url.getFile(); + // exemple + // urlFileName = /home/mazelier/PROJECT/lutingenerator/src/test/org/codelutin/generator/models/ui/javaxml/org.codelutin.chorem.entities.ui.LoggedPanel.javaxml + // on enleve la premiere partie de l'arborescence + // org.codelutin.chorem.entities.ui.LoggedPanel.javaxml + // on enleve l'extension .javaxml + // org.codelutin.chorem.entities.ui.LoggedPanel + // on enleve le nom du fichier pour obtenir le nom du package + // org.codelutin.chorem.entities.ui + + int indexSlash = urlName.lastIndexOf("/"); + if (indexSlash != -1) { + indexSlash++; + String name = urlName.substring(indexSlash, urlName + .lastIndexOf(".javaxml")); + + int indexPoint = name.lastIndexOf("."); + if (indexPoint != -1) { + name = name.substring(0, indexPoint); + } + result.setPackageName(name); + } + return result; + } + + /** + * Returns a UIModelImpl from a element + * @param current - element root of model + * @return UIModelImpl + */ + protected UIModelImpl parseModel(Element current) { + uimodel = new UIModelImpl(); + + String version = current.attributeValue("version"); + uimodel.setVersion(version); + + // selectionne l'unique object racine de l'arbre + Element rootElement = (Element) current + .selectSingleNode("/java/object"); + UIModelObject root = parseObject(rootElement, null); + uimodel.setRoot(root); + + return uimodel; + } + + /** + * Returns a UIModelObjectImpl equivalent to current element. + * It has arguments, properties, events and children + * @param current - element to parse + * @return UIModelObjectImpl + */ + protected UIModelObjectImpl parseObject(Element current, + UIModelObject parent) { + + UIModelObjectImpl result = new UIModelObjectImpl(); + + result.setModel(uimodel); + result.setParent(parent); + + String type = current.attributeValue("class"); + result.setType(type); + + // parse la liste des attributs + UIModelArgumentsImpl arguments = parseArguments(current, result); + result.setArguments(arguments); + + // liste des enfants de l'objet (collection de UIModelChild) + ArrayList children = null; + + // Cas ou l'objet est une instance de RootPaneContainer, les enfants se trouvent dans le contentPane + Element contentPaneElem = (Element) current + .selectSingleNode("void[@property=\"contentPane\"]"); + + if (contentPaneElem != null) { + children = parseChildren(contentPaneElem, result); + } else { + children = parseChildren(current, result); + } + + result.setChildren(children); + + // liste des properties de l'objet courant, on est sur que le tag des properties est de la forme <void property="propertyName">, ce tag est un enfant de l'objet courant + List propertiesElement = current.selectNodes("void[@property]"); + if (contentPaneElem != null) { + Element layoutElement = (Element) contentPaneElem + .selectSingleNode(" void[@property=\"layout\"]"); + propertiesElement.add(layoutElement); + } + + for (Iterator i = propertiesElement.iterator(); i.hasNext();) { + Element propElement = (Element) i.next(); + System.out.println(" propElement " + propElement); + UIModelProperty prop = parseProperty(propElement, result); + result.addProperty(prop); + } + + /* liste des events de l'objet courant + les evenements sont decrits par un tag <void method="addMethod"> + addMethod sera utilisee pour decrire l'event + sous ce tag un objet de type EventHandler avec sa methode create + dessous on trouve l'ensemble des proprietes de l'event (source, action ...)*/ + List eventsElement = current + .selectNodes("void/object[@class=\"java.beans.EventHandler\" and @method=\"create\"]"); + + for (Iterator i = eventsElement.iterator(); i.hasNext();) { + Element eventProp = (Element) i.next(); + UIModelEvent event = parseEvent(eventProp); + result.addEvent(event); + } + + uimodel.addObject(result); + + return result; + } + + /** + * Returns UIModelArgumentsImpl equivalent to current element + * A argument can be an object or a value with a primitiv type + * @param current - element to parse + * @return UIModelArgumentsImpl + */ + protected UIModelArgumentsImpl parseArguments(Element current, + UIModelObject parent) { + + UIModelArgumentsImpl result = new UIModelArgumentsImpl(); + + //liste des arguments d'un propriete ou d'un objet. Ils ne sont pas des entites void mais int, double, ... (types primitfs), String + List listPrimitivElement = current.selectNodes("*[not(self::void)]"); + + for (Iterator i = listPrimitivElement.iterator(); i.hasNext();) { + Element element = (Element) i.next(); + String type = element.getQualifiedName(); + // pour eviter le cas ou l'element est de type <null/> + if (!type.equals("null")) { + String valueString = element.getText(); + Object value = valueString; + if (type.equals("int")) { + value = new Integer(valueString); + } else if (type.equals("float")) { + value = new Float(valueString); + } else if (type.equals("double")) { + value = new Double(valueString); + } else if (type.equals("long")) { + value = new Long(valueString); + } else if (type.equals("short")) { + value = new Short(valueString); + } else if (type.equals("boolean")) { + value = new Boolean(valueString); + } else if (type.equals("byte")) { + value = new Byte(valueString); + } else if (type.equals("object")) { + value = parseObject(element, parent); + } + result.addArgument(value); + } + + } + return result; + } + + /** + * Returns UIModelPropertyImpl equivalent to current element + * A property has a name and a list of Arguments + * @param current - element to parse + * @return UIModelPropertyImpl + */ + protected UIModelPropertyImpl parseProperty(Element current, + UIModelObject parent) { + + // la propriete possede un nom definit par la valeur de l'attribut property + UIModelPropertyImpl result = new UIModelPropertyImpl(); + System.out.println(" current " + current); + String name = current.attributeValue("property"); + result.setName(name); + + // la propriete possede aussi une liste d'arguments + UIModelArgumentsImpl arguments = parseArguments(current, parent); + result.setArguments(arguments); + + return result; + } + + /** + * Returns UIModelEventImpl equivalent to current element + * A event has a addMethod, source, handler, argument and an action + * @param current - element to parse + * @return UIModelEventImpl + */ + protected UIModelEventImpl parseEvent(Element current) { + UIModelEventImpl result = new UIModelEventImpl(); + + /* Modele d'un event + <void method="addMethod"> + <objet class="EventHandler" method="create"> + <class>source</class> + <string>target</string> + <string>handler</handler> + <string>arguments</string> (attention ou <null/>) + <string>action</string> + </objet> + </void> + */ + // parfois il n'y aura pas d'arguments et il est possible que handler soit vide ! + // recuperation de la valeur de addMethod dans le tag parent void de l'objet courant avec l'attribut method + Element addMethodElement = (Element) current + .selectSingleNode("parent::void[@method]"); + result.setAddMethod(addMethodElement.attributeValue("method")); + + // la source est definie pour le tag class place juste en dessous de l'objet courant + Element sourceElement = (Element) current.selectSingleNode("class"); + if (sourceElement != null) { + result.setSource(sourceElement.getText()); + } + + // le handler sera le troisieme element en tout + Element handlerElement = (Element) current + .selectSingleNode("*[position()=3]"); + if (handlerElement != null) { + result.setHandler(handlerElement.getText()); + } + + // on ne connait pas le type d'arguments (null ou string) d'ou * mais on sait que sa position sera toujours 4 ! + Element argumentsElement = (Element) current + .selectSingleNode("*[position()=4]"); + if (argumentsElement != null) { + result.setArgument(argumentsElement.getText()); + } + + // l'action est toujours de type string mais on ne peut pas vraiment determine sa position a cause de arguments : position= 4 si arguments est de type string 3 sinon mais on sait que action sera toujours en dernier position + Element actionElement = (Element) current + .selectSingleNode("*[position()=last()]"); + if (actionElement != null) { + result.setAction(actionElement.getText()); + } + + return result; + } + + protected ArrayList parseChildren(Element current, UIModelObject parent) { + ArrayList result = new ArrayList(); + + //liste des enfants de l'objet + + // l'objet est identifie par un id + //un enfant est un objet qui a ete ajoute par la methode add au container + // sous l'objet courant, on cherche la methode add du tag void puis on recupere l'objet se trouvant sous ce tag. L'enfant est alors identifie par un id ou idref (si l'objet a deja ete defini) + List childrenElement = current + .selectNodes("void[@method=\"add\"]/object"); + + if (!childrenElement.isEmpty()) { + + for (Iterator i = childrenElement.iterator(); i.hasNext();) { + + Element childElem = (Element) i.next(); + String id = childElem.attributeValue("idref"); + // selectionner l'enfant qui possede le meme id que l'idref + // cet enfant se trouve dans les descendants du noeud root + if (id != null) { + childElem = (Element) rootElement + .selectSingleNode("descendant::object[@id=\"" + id + + "\"]"); + } + + id = childElem.attributeValue("id"); + UIModelObjectImpl child = parseObject(childElem, parent); + + // selectionner la constraint + // sous la propriete layout de l'objet, il y a l'argument object layout + // sous cet objet layout, se trouve la methode addLayoutComponent + // avec object ajoute au container avec un idref qui doit etre identique a l'un des enfants vus precedemment (definis dans la methode add) (cet objet est toujours en premiere position + // en deuxieme position se trouve la constrainte du premier object (string ou object) + Element constraintElem = (Element) current + .selectSingleNode("descendant::void[@property=\"layout\"]/object[(@class)]/void[@method=\"addLayoutComponent\"]/object[1][(@idref=\"" + + id + + "\") or (@id=\"" + + id + + "\")]/../*[2][(self::object) or (self::string)]"); + + // ATTENTION : dans l'expression XPath on trouve deux conditions car dans le cas des panels generes l'argument de la proptriete layout n'apparait pas, nous n'avons pas du determine l'origine de l'erreur + if (constraintElem == null) { + constraintElem = (Element) current + .selectSingleNode("descendant::void[@property=\"layout\"]/void[@method=\"addLayoutComponent\"]/object[1][(@idref=\"" + + id + + "\") or (@id=\"" + + id + + "\")]/../*[2][(self::object) or (self::string)]"); + } + + UIModelConstraintImpl constraint = null; + + if (constraintElem != null) { + constraint = parseConstraint(constraintElem, parent); + } + + // uimodelChild est compose un child et d'une contrainte + UIModelChildImpl ch = new UIModelChildImpl(); + ch.setObject(child); + ch.setConstraint(constraint); + + //child.setConstraint(constraint); + + result.add(ch); + + } + } else { + + childrenElement = current + .selectNodes("void[@property=\"layout\"]/void[@method=\"addLayoutComponent\"]"); + + for (Iterator i = childrenElement.iterator(); i.hasNext();) { + + Element objElem = (Element) i.next(); + Element childElem = (Element) objElem + .selectSingleNode("object[1]"); + UIModelObjectImpl child = parseObject(childElem, parent); + + Element constraintElem = (Element) current + .selectSingleNode("*[2][(self::object) or (self::string)]"); + + UIModelConstraintImpl constraint = null; + + if (constraintElem != null) { + constraint = parseConstraint(constraintElem, parent); + } + + // uimodelChild est compose un child et d'une contrainte + UIModelChildImpl ch = new UIModelChildImpl(); + ch.setObject(child); + ch.setConstraint(constraint); + + //child.setConstraint(constraint); + + result.add(ch); + + } + } + + return result; + } + + /** + * Returns UIModelConstraintImpl ewuivalent to current element + * This is ths constraint of an object. It has an object value. + * @param current - element to parse + * @return UIModelConstraintImpl + */ + protected UIModelConstraintImpl parseConstraint(Element current, + UIModelObject parent) { + UIModelConstraintImpl result = new UIModelConstraintImpl(); + Object value = null; + + if (current.matches("self::object")) { + // la valeur de la constrainte est un objet + value = parseObject(current, parent); + + } else if (current.matches("self::string")) { + // la valeur de la constrainte est une string + value = current.getData(); + + } + + result.setValue(value); + + return result; + + } + +} // JavaXMLParser + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/DigesterUIModelRuleSet.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/DigesterUIModelRuleSet.java new file mode 100644 index 0000000..696e067 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/DigesterUIModelRuleSet.java @@ -0,0 +1,70 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui.xml; + +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.RuleSetBase; + +/** + * DigesterUIModelRules + * + * Definit principalement : - la classe d'implementation a utiliser pour chaque + * noeud - la methode a appeler apres chaque noeud + * + * Ce jeu de regle ne cree pas l'element racine. Il doit etre cree et ajoute a + * la pile digester avant l'appel a <tt>Digester.parse(File)</tt>. + * + * Exemple: <code> + * UIModel monModel = new UIModelImpl() + * Digester d = new Digester(); + * d.push(monModel); + * d.parse(file); + * </code> + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ By : $Author$ + */ +public class DigesterUIModelRuleSet extends RuleSetBase { + + protected String prefix = null; + + public DigesterUIModelRuleSet() { + this(""); + } + + public DigesterUIModelRuleSet(String prefix) { + super(); + this.prefix = prefix; + this.namespaceURI = "http://www.codelutin.org/lutingenerator/uiModel"; + } + + /* + * (non-Javadoc) + * + * @see org.apache.commons.digester.RuleSetBase#addRuleInstances(org.apache.commons.digester.Digester) + */ + @Override + public void addRuleInstances(Digester d) { + + // FIXME pas d'exemple pour pouvoir definir les regles + + } + +} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelArgumentsImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelArgumentsImpl.java new file mode 100644 index 0000000..437487b --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelArgumentsImpl.java @@ -0,0 +1,109 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.xml; + +import java.util.ArrayList; +import java.util.List; + +import org.nuiton.eugene.models.ui.UIModelArguments; +import org.nuiton.eugene.models.ui.UIModelObject; + +/** + * UIModelArgumentsImpl. + * + * Created: Jun 4, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class UIModelArgumentsImpl implements UIModelArguments { // UIModelArgumentsImpl + + // protected UIModel model = null; + // protected UIModelObject parent = null; + // Liste des arguments de differents types (object, int, bool, String, ...) + protected List<Object> arguments = new ArrayList<Object>(); + + public UIModelArgumentsImpl() { + super(); + } + + public void addObject(UIModelObject value) { + // if(value == null) { + // return new UIModelObjectImpl(model, parent); + // } + + arguments.add(value); + // return value; + } + + public void addInt(Integer value) { + arguments.add(value); + } + + public void addBoolean(Boolean value) { + arguments.add(value); + } + + public void addChar(Character value) { + arguments.add(value); + } + + public void addString(String value) { + arguments.add(value); + } + + public void addLong(Long value) { + arguments.add(value); + } + + public void addFloat(Float value) { + arguments.add(value); + } + + public void addByte(Byte value) { + arguments.add(value); + } + + public void addShort(Short value) { + arguments.add(value); + } + + public void addDouble(Double value) { + arguments.add(value); + } + + /** + * Returns a arguments list. + * + * @see UIModelObject This list can contain UIModelObject or a primitive + * type + * + * @return a arguments list. + */ + public List<Object> getArguments() { + return arguments; + } + +} // UIModelArgumentsImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelChildImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelChildImpl.java new file mode 100644 index 0000000..8312825 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelChildImpl.java @@ -0,0 +1,92 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.xml; + +import org.nuiton.eugene.models.ui.UIModelChild; +import org.nuiton.eugene.models.ui.UIModelConstraint; +import org.nuiton.eugene.models.ui.UIModelObject; + +/** + * UIModelChildImpl. + * + * Created: Jun 4, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class UIModelChildImpl implements UIModelChild { // UIModelChildImpl + + // protected UIModel model = null; + // protected UIModelObject parent = null; + + protected UIModelObject object = null; + + protected UIModelConstraintImpl constraint = null; + + public UIModelChildImpl() { + super(); + } + + public void setObject(UIModelObject object) { + // if(object == null) { + // return new UIModelObjectImpl(model, parent); + // } + + this.object = object; + // return object; + } + + public void setLayout(UIModelConstraintImpl constraint) { + // if (constraint == null) { + // return new UIModelConstraintImpl(model, parent); + // } + + this.constraint = constraint; + // return constraint; + } + + /** + * Returns a UIModelObject for this child. + * + * @see UIModelObject + * + * @return a UIModelObject for this child. + */ + public UIModelObject getObject() { + return object; + } + + /** + * Returns a UIModelConstraint for this child + * + * @see UIModelConstraint + * + * @return a UIModelConstraint for this child. + */ + public UIModelConstraint getConstraint() { + return constraint; + } + +} // UIModelChildImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelConstraintImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelConstraintImpl.java new file mode 100644 index 0000000..a8a8ef8 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelConstraintImpl.java @@ -0,0 +1,84 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui.xml; + +import org.nuiton.eugene.models.ui.UIModelConstraint; + +/** + * UIModelConstraintImpl. + * + * Created: Jun 4, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> Copyright Code Lutin + * + * @version $Revision$ + * + * Mise a jour: $Date$ par : $Author$ + */ +public class UIModelConstraintImpl implements UIModelConstraint { // UIModelConstraintImpl + + // protected UIModel model = null; + // protected UIModelObject parent = null; + + // valeur de la constraint de type UIModelObject ou String (cas du + // borderLayout) + protected Object value = null; + + public UIModelConstraintImpl() { + // this.model = model; + // this.parent = parent; + } + + public void setObject(UIModelObjectImpl value) { + // if (value == null) { + // return new UIModelObjectImpl(model, parent); + // } + + this.value = value; + // return value; + } + + public void setString(String value) { + this.value = value; + } + + /** + * Returns the value of this constraint. the value returned can be an + * instance of UIModelObject or String or null + * + * @return the value of this constraint. + */ + public Object getValue() { + return value; + } + + /** + * Returns the value of this constraint if the type is String else return + * null + * + * @return the value of this constraint. + */ + public String getStringValue() { + if (value instanceof String) { + return (String) value; + } + return null; + } + +} // UIModelConstraintImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelEventImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelEventImpl.java new file mode 100644 index 0000000..6a91234 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelEventImpl.java @@ -0,0 +1,121 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.xml; + +import org.nuiton.eugene.models.ui.UIModelEvent; + +/** + * UIModelEventImpl. + * + * Created: Jun 4, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class UIModelEventImpl implements UIModelEvent { // UIModelEventImpl + + //protected UIModel model = null; + + protected String addMethod = null; + + protected String source = null; + + protected String action = null; + + protected String handler = null; + + protected String argument = null; + + public UIModelEventImpl() { + super(); + } + + public void setAddmethod(String addMethod) { + this.addMethod = addMethod; + } + + public void setSource(String source) { + this.source = source; + } + + public void setAction(String action) { + this.action = action; + } + + public void setHandler(String handler) { + this.handler = handler; + } + + public void setArgument(String argument) { + this.argument = argument; + } + + /** + * Return the method which will have the EventHandler in parameter + * + * @return String + */ + public String getAddMethod() { + return addMethod; + } + + /** + * Return the listener interface to create a proxy for + * + * @return String + */ + public String getSource() { + return source; + } + + /** + * Return the name of the method in the listener interface that should + * trigger the action + * + * @return String + */ + public String getAction() { + return action; + } + + /** + * Return the name of a writable method on the target + * + * @return String + */ + public String getHandler() { + return handler; + } + + /** + * Return the name of a readable property of the incoming event + * + * @return String + */ + public String getArgument() { + return argument; + } + +} // UIModelEventImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelImpl.java new file mode 100644 index 0000000..f86d080 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelImpl.java @@ -0,0 +1,135 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui.xml; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.nuiton.eugene.models.ui.UIModel; +import org.nuiton.eugene.models.ui.UIModelObject; + +/** + * UIModelImpl. + * + * Created: Jun 4, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class UIModelImpl implements UIModel { // UIModelImpl + + protected String version = null; + protected String packageUIModel = null; + protected UIModelObjectImpl root = null; + + /** + * Contient tous les objets du model. + * key: nom de l'objet; value: l'objet + */ + protected Map<String, UIModelObject> objects = new HashMap<String, UIModelObject>(); + + public UIModelImpl() { + super(); + } + + public void setVersion(String version) { + this.version = version; + } + + public void setPackage(String packageUIModel) { + this.packageUIModel = packageUIModel; + } + + /** + * TODO pas setObject, mais addObject + * TODO il y aurait ambiguite lors de l'appel par digester + * @param object + */ + public void setObject(UIModelObjectImpl object) { + //if (object == null) { + // return new UIModelObjectImpl(this, null); + //} + + // set model and parent + object.setParent(null); + object.setModel(this); + + root = object; + addObject(root); + //return object; + } + + /** + * Method used to add objects in this model + * @see UIModelObject + */ + public void addObject(UIModelObject object) { + if (object.getName() != null) { + objects.put(object.getName(), object); + } + } + + /** + * Returns the version of this model. + * + * @return the version of this model. + */ + public String getVersion() { + return version; + } + + /** + * Returns the package of this model. + * + * @return the package of this model. + */ + public String getPackage() { + return packageUIModel; + } + + /** + * Return the object root defined in this ui model. + * @see UIModelObject + * + * @return the object root defined in this ui model. + */ + public UIModelObject getRoot() { + return root; + } + + /** + * Returns all objects defined in this ui model. + * @see UIModelObject + * + * @return a Collection containing all UIModelObjects for this ui model. + */ + public Collection<UIModelObject> getObjects() { + return objects.values(); + } + + public UIModelObject getObject(String name) { + return (UIModelObject) objects.get(name); + } + +} // UIModelImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelObjectImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelObjectImpl.java new file mode 100644 index 0000000..482e006 --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelObjectImpl.java @@ -0,0 +1,263 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui.xml; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.nuiton.eugene.models.ui.UIModel; +import org.nuiton.eugene.models.ui.UIModelChild; +import org.nuiton.eugene.models.ui.UIModelConstraint; +import org.nuiton.eugene.models.ui.UIModelEvent; +import org.nuiton.eugene.models.ui.UIModelObject; +import org.nuiton.eugene.models.ui.UIModelProperty; + +/** + * UIModelObjectImpl. + * + * Created: Jun 4, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com>Copyright Code Lutin + * + * @version $Revision$ + * + * Mise a jour: $Date$ par : $Author$ + */ +public class UIModelObjectImpl implements UIModelObject { // UIModelObjectImpl + + protected UIModel model = null; + + protected UIModelObject parent = null; + + protected UIModelConstraint constraint = null; + + protected String type = null; + + protected String name = null; + + protected UIModelArgumentsImpl arguments = null; + + protected List<UIModelProperty> properties = new ArrayList<UIModelProperty>(); + + protected List<UIModelEvent> events = new ArrayList<UIModelEvent>(); + + /** Collection de UIModelObject */ + protected List<UIModelChild> children = new ArrayList<UIModelChild>(); + + public UIModelObjectImpl() { + super(); + } + + public void setClass(String type) { + this.type = type; + } + + public void setArguments(UIModelArgumentsImpl argument) { + // if (argument == null) { + // return new UIModelArgumentsImpl(model, this); + // } + + this.arguments = argument; + // return argument; + } + + public void addProperty(UIModelPropertyImpl property) { + // if (property == null) { + // return new UIModelPropertyImpl(model, this); + // } + + if (property.getValue() instanceof UIModelObjectImpl) { + getModel().addObject((UIModelObject) property.getValue()); + } + + if (property.getName().equals("name")) { + name = property.getStringValue(); + } + properties.add(property); + // return property; + } + + public void addEvent(UIModelEventImpl event) { + // if (event == null) { + // return new UIModelEventImpl(model); + // } + + events.add(event); + // return event; + } + + public void addChild(UIModelChildImpl child) { + // if (child == null) { + // return new UIModelChildImpl(model, this); + // } + + UIModelObjectImpl childObject = (UIModelObjectImpl) child.getObject(); + UIModelConstraintImpl childConstraint = (UIModelConstraintImpl) child + .getConstraint(); + childObject.setConstraint(childConstraint); + + getModel().addObject(childObject); + + children.add(child); + // return child; + } + + public void setConstraint(UIModelConstraintImpl constraint) { + this.constraint = constraint; + } + + /** + * Returns the parent of this object. Returns null if this object is root + * + * @return the parent of this object. + */ + public UIModelObject getParent() { + return parent; + } + + /** + * Set the parent of this object. + */ + public void setParent(UIModelObject parent) { + this.parent = parent; + } + + /** + * Returns the type of this object. + * + * @return the type of this object. + */ + public String getType() { + return type; + } + + /** + * Returns the value of the property "name" of this object + * + * @return the name of this object. + */ + public String getName() { + return name; + } + + /** + * Returns the constraint of this object + * + * @see UIModelConstraint + * + * @return the constraint of this object. + */ + public UIModelConstraint getConstraint() { + return constraint; + } + + /** + * Returns all arguments defined on this object. if this objects hasn't + * arguments return null This collection can contain UIModelObject or a + * primitive type + * + * @return a Collection containing all arguments for this object. + */ + public Collection<Object> getArguments() { + if (arguments != null) { + return arguments.getArguments(); + } + return new ArrayList<Object>(); + } + + /** + * Returns all properties defined on this object. + * + * @see UIModelProperty + * + * @return a Collection containing all UIModelProperties for this object. + */ + public Collection<UIModelProperty> getProperties() { + return properties; + } + + /** + * Returns the property defined on this object. + * + * @see UIModelProperty + * @param name the name of the property which must be returned + * @return a UIModelProperty for this object with the . + */ + public UIModelProperty getProperty(String name) { + + UIModelProperty property = null; + int position = 0; + + while (position < properties.size()) { + + property = (UIModelProperty) properties.get(position); + + if (property.getName().equals(name)) { + break; + } + position++; + } + + if (position >= properties.size()) { + throw new IllegalStateException("Propriete " + name + + " inexistante pour l'objet " + this.name); + } + return property; + } + + /** + * Returns all events defined on this object. + * + * @see UIModelEvent + * + * @return a Collection containing all UIModelEvents for this object. + */ + public Collection<UIModelEvent> getEvents() { + return events; + } + + /** + * Returns all children defined on this object. + * + * @return a Collection containing all UIModelObject for this object. + */ + public Collection<UIModelChild> getChildren() { + return children; + } + + /** + * Returns the uimodel of this object. + * + * @see UIModel + * + * @return the uimodel of this object. + */ + public UIModel getModel() { + return model; + } + + /** + * Set model + */ + public void setModel(UIModel model) { + this.model = model; + } + +} // UIModelObjectImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelPropertyImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelPropertyImpl.java new file mode 100644 index 0000000..06e62aa --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/models/ui/xml/UIModelPropertyImpl.java @@ -0,0 +1,181 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + + + +package org.nuiton.eugene.models.ui.xml; + +import org.nuiton.eugene.models.ui.UIModelProperty; + +/** + * UIModelPropertyImpl. + * + * Created: Jun 4, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class UIModelPropertyImpl implements UIModelProperty { // UIModelPropertyImpl + + // protected UIModel model = null; + // protected UIModelObject parent = null; + + protected String name = null; + + protected UIModelArgumentsImpl arguments = null; + + public UIModelPropertyImpl() { + super(); + } + + public void setName(String name) { + this.name = name; + } + + public void setArguments(UIModelArgumentsImpl argument) { + // if (argument == null) { + // return new UIModelArgumentsImpl(model, parent); + // } + + this.arguments = argument; + // return argument; + } + + /** + * Returns the name of this property. + * + * @return the name of this property. + */ + public String getName() { + return name; + } + + /** + * Returns the value of this property. the value returned can be an instance + * of UIModelObject or String or Integer or Boolean or Character + * + * @return the value of this property. + */ + public Object getValue() { + int i = (arguments.getArguments().size()) - 1; + return arguments.getArguments().get(i); + } + + /** + * Returns the index of this property if it's indexed property + * + * @return the index of this property. + */ + public int getIndex() throws Exception { + if (isIndexed()) { + return ((Integer) arguments.getArguments().get(0)).intValue(); + } + throw new Exception( + "Impossible d'obtenir l'index d'une propriete non indexee"); + } + + public boolean isIndexed() { + return arguments.getArguments().size() >= 2; + } + + /** + * Returns the value of this property if the type is int + * + * @return the value of this property. + */ + public int getIntValue() { + return ((Integer) getValue()).intValue(); + } + + /** + * Returns the value of this property if the type is boolean + * + * @return the value of this property. + */ + public boolean getBooleanValue() { + return ((Boolean) getValue()).booleanValue(); + } + + /** + * Returns the value of this property if the type is char + * + * @return the value of this property. + */ + public char getCharValue() { + return ((Character) getValue()).charValue(); + } + + /** + * Returns the value of this property if the type is String + * + * @return the value of this property. + */ + public String getStringValue() { + return getValue().toString(); + } + + /** + * Returns the value of this property if the type is byte + * + * @return the value of this property. + */ + public byte getByteValue() { + return ((Byte) getValue()).byteValue(); + } + + /** + * Returns the value of this property if the type is long + * + * @return the value of this property. + */ + public long getLongValue() { + return ((Long) getValue()).longValue(); + } + + /** + * Returns the value of this property if the type is short + * + * @return the value of this property. + */ + public short getShortValue() { + return ((Short) getValue()).shortValue(); + } + + /** + * Returns the value of this property if the type is float + * + * @return the value of this property. + */ + public float getFloatValue() { + return ((Float) getValue()).floatValue(); + } + + /** + * Returns the value of this property if the type is double + * + * @return the value of this property. + */ + public double getDoubleValue() { + return ((Double) getValue()).doubleValue(); + } + +} // UIModelPropertyImpl + diff --git a/eugene/src/main/java/org/nuiton/eugene/package-info.java b/eugene/src/main/java/org/nuiton/eugene/package-info.java new file mode 100644 index 0000000..5c3d89c --- /dev/null +++ b/eugene/src/main/java/org/nuiton/eugene/package-info.java @@ -0,0 +1,5 @@ +/** + * Eugene. + */ +package org.nuiton.eugene; + diff --git a/eugene/src/main/resources/dtd/objectmodel.dtd b/eugene/src/main/resources/dtd/objectmodel.dtd new file mode 100644 index 0000000..fcc9273 --- /dev/null +++ b/eugene/src/main/resources/dtd/objectmodel.dtd @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- Copyright (C) 2006, 2009 Code Lutin + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +--> + +<!-- + + objectModel.dtd + + author : chatellier + version : $Revision$ + Last update : $Date$ + By : $Author$ +--> + +<!ELEMENT objectModel ( associationClass | class | interface )* > +<!ATTLIST objectModel name NMTOKEN #REQUIRED > +<!ATTLIST objectModel xmlns CDATA #REQUIRED > +<!ATTLIST objectModel version CDATA #IMPLIED > + +<!ELEMENT associationClass ( stereotype, participant+, attribute ) > +<!ATTLIST associationClass name NMTOKEN #REQUIRED > +<!ATTLIST associationClass package CDATA #REQUIRED > + +<!ELEMENT class ( stereotype , ( superclass | interface) ,( attribute | operation )*) > +<!ATTLIST class abstract (true | false) "false" > +<!ATTLIST class name ID #REQUIRED > +<!ATTLIST class package CDATA #REQUIRED > + +<!ELEMENT interface ( stereotype?, operation* ) > +<!ATTLIST interface name NMTOKEN #REQUIRED > +<!ATTLIST interface package CDATA #REQUIRED > + +<!ELEMENT attribute EMPTY > +<!ATTLIST attribute associationClass CDATA #IMPLIED > +<!ATTLIST attribute associationType CDATA #IMPLIED > +<!ATTLIST attribute maxMultiplicity CDATA #REQUIRED > +<!ATTLIST attribute minMultiplicity CDATA #REQUIRED > +<!ATTLIST attribute name NMTOKEN #IMPLIED > +<!ATTLIST attribute navigable ( false | true ) #IMPLIED > +<!ATTLIST attribute ordering ( ordered | unordered ) #IMPLIED > +<!ATTLIST attribute reverseAttributeName CDATA #IMPLIED > +<!ATTLIST attribute reverseMaxMultiplicity CDATA #IMPLIED > +<!ATTLIST attribute type CDATA #REQUIRED > +<!ATTLIST attribute visibility CDATA #REQUIRED > + +<!ELEMENT exceptionParameter EMPTY > +<!ATTLIST exceptionParameter name CDATA #IMPLIED > +<!ATTLIST exceptionParameter type CDATA #IMPLIED > + +<!ELEMENT operation ( returnParameter , ( exceptionParameter | parameter )* ) > +<!ATTLIST operation abstract (true|false) "false" > +<!ATTLIST operation name NMTOKEN #REQUIRED > +<!ATTLIST operation visibility CDATA #REQUIRED > + +<!ELEMENT parameter EMPTY > +<!ATTLIST parameter name NMTOKEN #REQUIRED > +<!ATTLIST parameter type CDATA #REQUIRED > + +<!ELEMENT participant EMPTY > +<!ATTLIST participant attribute CDATA #REQUIRED > +<!ATTLIST participant name CDATA #REQUIRED > + +<!ELEMENT returnParameter EMPTY > +<!ATTLIST returnParameter type CDATA #REQUIRED > + +<!ELEMENT stereotype EMPTY > +<!ATTLIST stereotype name CDATA #REQUIRED > + +<!ELEMENT superclass EMPTY > +<!ATTLIST superclass discriminator CDATA #IMPLIED > +<!ATTLIST superclass name CDATA #REQUIRED > \ No newline at end of file diff --git a/eugene/src/main/resources/dtd/statemodel.dtd b/eugene/src/main/resources/dtd/statemodel.dtd new file mode 100644 index 0000000..9525624 --- /dev/null +++ b/eugene/src/main/resources/dtd/statemodel.dtd @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- Copyright (C) 2007, 2009 Code Lutin + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +--> + +<!-- + + stateModel.dtd + + author : chatellier + version : $Revision$ + Last update : $Date$ + By : $Author$ +--> +<!ELEMENT objectModel ( stateChart )* > +<!ATTLIST objectModel name NMTOKEN #REQUIRED > +<!ATTLIST objectModel xmlns CDATA #REQUIRED > +<!ATTLIST objectModel version CDATA #IMPLIED > + +<!ELEMENT stateChart ( state | complexeState )* > +<!ATTLIST stateChart name NMTOKEN #REQUIRED > +<!ATTLIST stateChart package CDATA #REQUIRED > + +<!ELEMENT complexeState ( state )+ > +<!ATTLIST state name NMTOKEN #REQUIRED > + +<!ELEMENT state ( transition )* > +<!ATTLIST state initial (true | false) "false" > +<!ATTLIST state final (true | false) "false" > +<!ATTLIST state name NMTOKEN #REQUIRED > + +<!ELEMENT transition EMPTY > +<!ATTLIST interface event NMTOKEN #REQUIRED > +<!ATTLIST interface toState NMTOKEN #REQUIRED > \ No newline at end of file diff --git a/eugene/src/main/resources/xmi/default-java.xmi b/eugene/src/main/resources/xmi/default-java.xmi new file mode 100644 index 0000000..1499d4f --- /dev/null +++ b/eugene/src/main/resources/xmi/default-java.xmi @@ -0,0 +1,117 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Fri May 02 13:16:12 EDT 2008'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>PRE-0.25.5(5) revised on $Date: 2007-05-12 02:08:08 -0400 (Sat, 12 May 2007) $ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = '.:000000000000087A' name = 'UML Profile for Java' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-1-3--3c483fe3:119aa9cff00:-8000:00000000000007A3'/> + </UML:ModelElement.stereotype> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '-64--88-1-3--3c483fe3:119aa9cff00:-8000:00000000000007A4' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>This profile contains common Java classes and datatypes which are not contained in the UML Standard Elements profile. It only includes the basics, but may be easily extended to include anything else which is useful.</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '.:0000000000000869' name = 'java' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '.:000000000000085A' name = 'lang' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000850' name = 'Object' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000851' name = 'Char' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000852' name = 'Byte' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000853' name = 'Boolean' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000854' name = 'Short' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000855' name = 'Integer' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000856' name = 'Long' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000857' name = 'Float' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000858' name = 'Double' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000859' name = 'String' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '.:0000000000000863' name = 'util' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:000000000000085B' name = 'Vector' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Interface xmi.id = '.:000000000000085C' name = 'Collection' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '.:000000000000085D' name = 'Iterator' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '.:000000000000085E' name = 'List' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = '.:000000000000085F' name = 'Date' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000860' name = 'Time' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Interface xmi.id = '.:0000000000000861' name = 'Set' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '.:0000000000000862' name = 'SortedSet' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '.:0000000000000866' name = 'math' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000864' name = 'BigDecimal' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = '.:0000000000000865' name = 'BigInteger' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '.:0000000000000868' name = 'net' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '.:0000000000000867' name = 'URL' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:DataType xmi.id = '.:000000000000086B' name = 'void' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:000000000000086C' name = 'int' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:000000000000086D' name = 'short' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:000000000000086E' name = 'long' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:000000000000086F' name = 'double' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:0000000000000870' name = 'float' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:0000000000000871' name = 'char' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:0000000000000872' name = 'byte' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = '.:0000000000000873' name = 'boolean' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Stereotype xmi.id = '-64--88-1-3--3c483fe3:119aa9cff00:-8000:00000000000007A3' + name = 'profile' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Model</UML:Stereotype.baseClass> + </UML:Stereotype> + </UML:Namespace.ownedElement> + </UML:Model> + </XMI.content> +</XMI> diff --git a/eugene/src/main/resources/xmi/default-uml14.xmi b/eugene/src/main/resources/xmi/default-uml14.xmi new file mode 100644 index 0000000..2b7d787 --- /dev/null +++ b/eugene/src/main/resources/xmi/default-uml14.xmi @@ -0,0 +1,258 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Tue Aug 14 18:51:04 BRT 2007'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>PRE-0.25.4(5) revised on $Date: 2007-05-12 03:08:08 -0300 $ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = '.:000000000000087A' name = 'UML 1.4 Standard Elements' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '.:000000000000087B' isSpecification = 'false'> + <UML:TaggedValue.dataValue>This model contains the UML Standard Elements from Appendix A of the UML 1.4 specification.</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = '.:000000000000087C'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Namespace.ownedElement> + <UML:Stereotype xmi.id = '.:0000000000000821' name = 'access' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Permission</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000822' name = 'friend' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Permission</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000823' name = 'import' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Permission</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000824' name = 'association' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000825' name = 'global' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000826' name = 'local' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000827' name = 'parameter' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000828' name = 'self' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000829' name = 'become' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Flow</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000082A' name = 'copy' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Flow</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000082B' name = 'create' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Usage</UML:Stereotype.baseClass> + <UML:Stereotype.baseClass>BehavioralFeature</UML:Stereotype.baseClass> + <UML:Stereotype.baseClass>CallEvent</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000082C' name = 'call' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Usage</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000082D' name = 'instantiate' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Usage</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000082E' name = 'send' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Usage</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000830' name = 'destroy' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>BehavioralFeature</UML:Stereotype.baseClass> + <UML:Stereotype.baseClass>CallEvent</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000833' name = 'derive' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000834' name = 'realize' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000835' name = 'refine' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000836' name = 'trace' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000837' name = 'document' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000838' name = 'executable' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000839' name = 'file' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000083A' name = 'library' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000083B' name = 'table' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000083C' name = 'facade' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000083D' name = 'framework' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000083E' name = 'metamodel' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000083F' name = 'stub' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000840' name = 'implementation' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Generalization</UML:Stereotype.baseClass> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000842' name = 'type' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000843' name = 'implicit' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Association</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000844' name = 'invariant' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000845' name = 'postcondition' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000846' name = 'precondition' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000847' name = 'metaclass' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000848' name = 'powertype' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000849' name = 'process' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Classifier</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000084A' name = 'thread' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Classifier</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000084B' name = 'utility' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Classifier</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000084C' name = 'requirement' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Comment</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000084D' name = 'responsibility' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Comment</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000084E' name = 'topLevel' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000084F' name = 'systemModel' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:000000000000086A' name = 'signalflow' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>ObjectFlowState</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000874' name = 'appliedProfile' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + <UML:Stereotype.baseClass>Dependency</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000875' name = 'auxiliary' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000876' name = 'modelLibrary' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + <UML:Stereotype.baseClass>Dependency</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000877' name = 'profile' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Package</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000878' name = 'source' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '.:0000000000000879' name = 'stateInvariant' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Constraint</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:TagDefinition xmi.id = '.:000000000000087C' name = 'documentation' + isSpecification = 'false' tagType = 'String'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = '.:000000000000087D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '.:000000000000087E' lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:DataType xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:000000000000087C' + name = 'Integer' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:DataType xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:000000000000087D' + name = 'UnlimitedInteger' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:DataType xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:000000000000087E' + name = 'String' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Enumeration xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:0000000000000880' + name = 'Boolean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Enumeration.literal> + <UML:EnumerationLiteral xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:0000000000000881' + name = 'TRUE' isSpecification = 'false'/> + <UML:EnumerationLiteral xmi.id = '-84-17--56-5-43645a83:11466542d86:-8000:0000000000000882' + name = 'FALSE' isSpecification = 'false'/> + </UML:Enumeration.literal> + </UML:Enumeration> + </UML:Namespace.ownedElement> + </UML:Model> + </XMI.content> +</XMI> diff --git a/eugene/src/main/resources/xsd/objectmodel.xsd b/eugene/src/main/resources/xsd/objectmodel.xsd new file mode 100644 index 0000000..59f3e1b --- /dev/null +++ b/eugene/src/main/resources/xsd/objectmodel.xsd @@ -0,0 +1,128 @@ +<?xml version="1.0"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + + <xsd:complexType name="objectModel" mixed="true"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="tagValue" type="tagValue" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="class" type="class"/> + <xsd:element name="associationClass" type="associationClass"/> + <xsd:element name="interface" type="interface"/> + <xsd:element name="enumeration" type="enumeration"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="classifier"> + <xsd:sequence> + <xsd:element name="stereotype" type="stereotype" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tagValue" type="tagValue" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="superclass" type="superclass" minOccurs="0" maxOccurs="1"/> + <xsd:element name="interface" type="superinterface" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="operation" type="operation" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dependency" type="dependency" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="package" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="class"> + <xsd:complexContent> + <xsd:extension base="classifier"> + <xsd:sequence> + <xsd:element name="attribute" type="attribute" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="associationClass"> + <xsd:complexContent> + <xsd:extension base="classifier"/> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="interface"> + <xsd:complexContent> + <xsd:extension base="classifier"/> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="superclass"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="superinterface"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="attribute"> + <xsd:sequence> + <xsd:element name="tagValue" type="tagValue" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional"/> + <xsd:attribute name="visibility" type="xsd:string" use="optional"/> + <xsd:attribute name="type" type="xsd:string" use="required"/> + <xsd:attribute name="reverseAttributeName" type="xsd:string" use="optional"/> + <xsd:attribute name="reverseMaxMultiplicity" type="xsd:integer" use="optional"/> + <xsd:attribute name="associationType" type="xsd:string" use="optional"/> + <xsd:attribute name="minMultiplicity" type="xsd:nonNegativeInteger" use="optional"/> + <xsd:attribute name="maxMultiplicity" type="xsd:integer" use="optional"/> + <xsd:attribute name="navigable" type="xsd:boolean" use="optional"/> + <xsd:attribute name="ordering" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="operation"> + <xsd:sequence> + <xsd:element name="parameter" type="parameter" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="returnParameter" type="returnParameter" minOccurs="1" maxOccurs="1"/> + <xsd:element name="exceptionParameter" type="exceptionParameter" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="visibility" type="xsd:string" use="optional"/> + </xsd:complexType> + + <xsd:complexType name="parameter"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="type" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="returnParameter"> + <xsd:attribute name="type" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="exceptionParameter"> + <xsd:attribute name="name" type="xsd:string" use="optional"/> + <xsd:attribute name="type" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="enumeration"> + <xsd:complexContent> + <xsd:extension base="classifier"> + <xsd:sequence> + <xsd:element name="literal" type="literal" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="literal"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="dependency"> + <xsd:attribute name="name" type="xsd:string" use="optional"/> + <xsd:attribute name="supplierName" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="stereotype"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:complexType name="tagValue"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="value" type="xsd:string" use="required"/> + </xsd:complexType> + + <xsd:element name="objectModel" type="objectModel" /> + +</xsd:schema> diff --git a/eugene/src/main/resources/xsd/todo.txt b/eugene/src/main/resources/xsd/todo.txt new file mode 100644 index 0000000..2df8446 --- /dev/null +++ b/eugene/src/main/resources/xsd/todo.txt @@ -0,0 +1,11 @@ +valider les noms de package pour 'classifier' +defult value sur la visibility des attributs et operations +liste fermé de valeurs pour "associationType" et "ordering" dans un attribut +maxMultiplicity : -1 ou positiveInteger +reverseAttribute ou reverseAttributeName ? d'après les feuilles XSL : reverseAttributeName + +si xsd:sequence ne peut pas marcher, faire : +<xs:choice minOccurs="0" maxOccurs="unbounded"> +<xs:element ref="xs:include"/> +<xs:element ref="xs:import"/> +</xs:choice> \ No newline at end of file diff --git a/eugene/src/main/xsl/poseidon2argouml.xsl b/eugene/src/main/xsl/poseidon2argouml.xsl new file mode 100644 index 0000000..929436a --- /dev/null +++ b/eugene/src/main/xsl/poseidon2argouml.xsl @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:UML="org.omg.xmi.namespace.UML" + xmlns:UML2="org.omg.xmi.namespace.UML2" + > + + <xsl:output method="xml" encoding="UTF-8" indent="yes"/> + + <xsl:template match="@*|node()"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:template> + + <xsl:template match="//UML:Parameter/UML2:TypedElement.type"> + <xsl:element name="UML:Parameter.type" namespace="org.omg.xmi.namespace.UML"> + <xsl:apply-templates/> + </xsl:element> + </xsl:template> + + + <xsl:template match="//UML:Attribute/UML2:TypedElement.type"> + <xsl:element name="UML:StructuralFeature.type" namespace="org.omg.xmi.namespace.UML"> + <xsl:apply-templates/> + </xsl:element> + </xsl:template> + + <xsl:template match="//UML:Comment[count(.//UML2:*) > 0]"> + </xsl:template> + + <xsl:template match="UML2:BehavioredClassifier.ownedBehavior"> + </xsl:template> + + <xsl:template match="UML2:BehavioredClassifier.ownedTrigger"> + </xsl:template> + + <xsl:template match="UML:Comment.annotatedElement"> + </xsl:template> + + <xsl:template match="UML:Collaboration"> + </xsl:template> + + <xsl:template match="UML:Diagram"> + </xsl:template> + + <xsl:template match="UML:GraphConnector"> + </xsl:template> + + <xsl:template match="UML:GraphNode"> + </xsl:template> + + <xsl:template match="UML:Property"> + </xsl:template> + +</xsl:stylesheet> \ No newline at end of file diff --git a/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl b/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl new file mode 100644 index 0000000..8dccd14 --- /dev/null +++ b/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl @@ -0,0 +1,870 @@ +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xalan="http://xml.apache.org/xslt" + xmlns:extensions="http://www.codelutin.com/XSLTExtensions" + xmlns:redirect="http://xml.apache.org/xalan/redirect" + extension-element-prefixes="extensions redirect" + xmlns="http://www.codelutin.org/eugene/objectModel" + xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" + xmlns:UML="org.omg.xmi.namespace.UML" xmlns:UML2="org.omg.xmi.namespace.UML2"> + + <xsl:output method="xml" + encoding="UTF-8" + indent="yes" + xalan:indent-amount="2"/> + + + <!-- processing entry point. We'll process everything from that root package path. Everything else is ignored --> + <xsl:param name="fullPackagePath"/> + <xsl:param name="extraPackages"/> + + <!-- + . + . + . Matching templates + . + . + --> + + <xsl:template match="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement"> + <xsl:element name="objectModel"> + <xsl:attribute name="name"> + <xsl:value-of select="../@name"/> + </xsl:attribute> + + <!-- ajout de l'attribut version disponible dans les taggedValue --> + <xsl:attribute name="version"> + <xsl:variable name="versionTagId"> + <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@name='version']/@xmi.id"/> + </xsl:variable> + <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:ModelElement.taggedValue/UML:TaggedValue[UML:TaggedValue.type/UML:TagDefinition/@xmi.idref = $versionTagId]/UML:TaggedValue.dataValue"/> + </xsl:attribute> + + <xsl:for-each select="descendant::UML:Namespace.ownedElement/UML:Comment[not(UML:Comment.annotatedElement)]"> + <xsl:call-template name="comment"/> + </xsl:for-each> + + <xsl:apply-templates> + <xsl:with-param name="parentLocalPackageName"/> + </xsl:apply-templates> + </xsl:element> + </xsl:template> + + <xsl:template match="text()|attribute"/> + + <xsl:template match="*"> + <xsl:param name="parentLocalPackageName"/> + <xsl:apply-templates> + <xsl:with-param name="parentLocalPackageName"> + <xsl:value-of select="$parentLocalPackageName"/> + </xsl:with-param> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="UML:Package"> + <xsl:param name="parentLocalPackageName"/> + <xsl:variable name="packageName"> + <xsl:value-of select="@name"/> + </xsl:variable> + + <xsl:variable name="localPackageName"> + <xsl:value-of select="$parentLocalPackageName"/> + <xsl:value-of select="$packageName"/> + </xsl:variable> + + <xsl:variable name="localPackageNameDot"> + <xsl:value-of select="concat($localPackageName,'.')"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="packageValidator:toContinue($fullPackagePath, $localPackageNameDot, $extraPackages)"> + <xsl:apply-templates> + <xsl:with-param name="parentLocalPackageName"> + <xsl:value-of select="$localPackageNameDot"/> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="packageValidator:isValid($fullPackagePath, $localPackageName, $extraPackages)"> + <xsl:for-each select="UML:Namespace.ownedElement/UML:Class"> + <xsl:call-template name="UMLClass"> + <xsl:with-param name="localPackageName"> + <xsl:value-of select="$localPackageName"/> + </xsl:with-param> + </xsl:call-template> + </xsl:for-each> + <xsl:for-each select="UML:Namespace.ownedElement/UML:Interface"> + <xsl:call-template name="UMLInterface"> + <xsl:with-param name="localPackageName"> + <xsl:value-of select="$localPackageName"/> + </xsl:with-param> + </xsl:call-template> + </xsl:for-each> + <xsl:for-each select="UML:Namespace.ownedElement/UML:AssociationClass"> + <xsl:call-template name="UMLAssociationClass"> + <xsl:with-param name="localPackageName"> + <xsl:value-of select="$localPackageName"/> + </xsl:with-param> + </xsl:call-template> + </xsl:for-each> + <xsl:for-each select="UML:Namespace.ownedElement/UML:Enumeration"> + <xsl:call-template name="UMLEnumeration"> + <xsl:with-param name="localPackageName"> + <xsl:value-of select="$localPackageName"/> + </xsl:with-param> + </xsl:call-template> + </xsl:for-each> + <xsl:apply-templates> + <xsl:with-param name="parentLocalPackageName"> + <xsl:value-of select="$localPackageNameDot"/> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + </xsl:choose> + </xsl:template> + + + + <!-- + . + . + . Named templates + . + . + --> + + + <xsl:template name="UMLInterface"> + <xsl:param name="localPackageName"/> + <xsl:variable name="interfaceId"> + <xsl:value-of select="@xmi.id"/> + </xsl:variable> + + <xsl:element name="interface"> + + <!-- interface properties --> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <xsl:call-template name="extern"/> + + <xsl:attribute name="package"> + <xsl:value-of select="$localPackageName"/> + </xsl:attribute> + + <xsl:call-template name="dependency"/> + + <xsl:call-template name="stereotype"/> + + <xsl:for-each select="UML:ModelElement.taggedValue/UML:TaggedValue"> + <xsl:call-template name="taggedValue"/> + </xsl:for-each> + + <xsl:call-template name="UMLGeneralizations"> + <xsl:with-param name="classId"> + <xsl:value-of select="$interfaceId"/> + </xsl:with-param> + </xsl:call-template> + + <xsl:for-each select="UML:ModelElement.comment/UML:Comment"> + <xsl:call-template name="UMLComment"/> + </xsl:for-each> + + <!-- class operations --> + <xsl:for-each select="UML:Classifier.feature/UML:Operation"> + <xsl:call-template name="UMLOperation"/> + </xsl:for-each> + + </xsl:element> + + </xsl:template> + + + + <xsl:template name="UMLClass"> + <xsl:param name="localPackageName"/> + <xsl:variable name="classId"> + <xsl:value-of select="@xmi.id"/> + </xsl:variable> + + <xsl:element name="class"> + + <!-- class properties --> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <xsl:if test="@isAbstract='true'"> + <xsl:attribute name="abstract"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="extern"/> + + <xsl:attribute name="package"> + <xsl:value-of select="$localPackageName"/> + </xsl:attribute> + + <xsl:call-template name="dependency"/> + + <xsl:call-template name="stereotype"/> + + <xsl:for-each select="UML:ModelElement.taggedValue/UML:TaggedValue"> + <xsl:call-template name="taggedValue"/> + </xsl:for-each> + + <xsl:call-template name="UMLGeneralizations"> + <xsl:with-param name="classId"> + <xsl:value-of select="$classId"/> + </xsl:with-param> + </xsl:call-template> + + <xsl:call-template name="UMLAbstractions"> + <xsl:with-param name="classId"> + <xsl:value-of select="$classId"/> + </xsl:with-param> + </xsl:call-template> + + <xsl:for-each select="UML:ModelElement.comment/UML:Comment"> + <xsl:call-template name="UMLComment"/> + </xsl:for-each> + + <!-- class attributes --> + <xsl:for-each select="UML:Classifier.feature/UML:Attribute"> + <xsl:call-template name="UMLAttribute"/> + </xsl:for-each> + + <!-- class operations --> + <xsl:for-each select="UML:Classifier.feature/UML:Operation"> + <xsl:call-template name="UMLOperation"/> + </xsl:for-each> + + <xsl:call-template name="UMLAssociations"> + <xsl:with-param name="classId"> + <xsl:value-of select="$classId"/> + </xsl:with-param> + </xsl:call-template> + + </xsl:element> + + </xsl:template> + + + + <xsl:template name="UMLAssociationClass"> + <xsl:param name="localPackageName"/> + <xsl:variable name="classId"> + <xsl:value-of select="@xmi.id"/> + </xsl:variable> + + <xsl:element name="associationClass"> + + <!-- class properties --> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <xsl:if test="@isAbstract='true'"> + <xsl:attribute name="abstract"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="extern"/> + + <xsl:attribute name="package"> + <xsl:value-of select="$localPackageName"/> + </xsl:attribute> + + <xsl:call-template name="stereotype"/> + + <xsl:for-each select="UML:ModelElement.taggedValue/UML:TaggedValue"> + <xsl:call-template name="taggedValue"/> + </xsl:for-each> + + <xsl:call-template name="UMLGeneralizations"> + <xsl:with-param name="classId"> + <xsl:value-of select="$classId"/> + </xsl:with-param> + </xsl:call-template> + + <xsl:call-template name="UMLAbstractions"> + <xsl:with-param name="classId"> + <xsl:value-of select="$classId"/> + </xsl:with-param> + </xsl:call-template> + + <xsl:for-each select="UML:ModelElement.comment/UML:Comment"> + <xsl:call-template name="UMLComment"/> + </xsl:for-each> + + <xsl:for-each select="UML:Association.connection/UML:AssociationEnd"> + <xsl:variable name="participantId"> + <xsl:value-of select="UML:AssociationEnd.participant/*/@xmi.idref"/> + </xsl:variable> + <xsl:variable name="id"> + <xsl:value-of select="@xmi.id"/> + </xsl:variable> + <xsl:element name="participant"> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $participantId]"> + <xsl:attribute name="name"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:for-each> + <xsl:for-each select="../UML:AssociationEnd[@xmi.id!=$id]"> + <xsl:attribute name="attribute"> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:for-each> + </xsl:element> + </xsl:for-each> + + <!-- class attributes --> + <xsl:for-each select="UML:Classifier.feature/UML:Attribute"> + <xsl:call-template name="UMLAttribute"/> + </xsl:for-each> + + <!-- class operations --> + <xsl:for-each select="UML:Classifier.feature/UML:Operation"> + <xsl:call-template name="UMLOperation"/> + </xsl:for-each> + + <xsl:call-template name="UMLAssociations"> + <xsl:with-param name="classId"> + <xsl:value-of select="$classId"/> + </xsl:with-param> + </xsl:call-template> + + </xsl:element> + + </xsl:template> + + <xsl:template name="UMLEnumeration"> + <xsl:param name="localPackageName"/> + <xsl:element name="enumeration"> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <xsl:attribute name="package"> + <xsl:value-of select="$localPackageName"/> + </xsl:attribute> + + <!-- literals --> + <xsl:for-each select="UML:Enumeration.literal/UML:EnumerationLiteral"> + <xsl:element name="literal"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + + <!-- operations --> + <xsl:for-each select="UML:Classifier.feature/UML:Operation"> + <xsl:call-template name="UMLOperation"/> + </xsl:for-each> + </xsl:element> + </xsl:template> + + <xsl:template name="UMLAbstractions"> + <xsl:param name="classId"/> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::UML:Abstraction[UML:Dependency.client/UML:Class/@xmi.idref=$classId]"> + <xsl:call-template name="UMLAbstraction"/> + </xsl:for-each> + </xsl:template> + + + + <xsl:template name="UMLAbstraction"> + <xsl:variable name="idInterface"> + <xsl:value-of select="UML:Dependency.supplier/UML:Interface/@xmi.idref"/> + </xsl:variable> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $idInterface]"> + <xsl:element name="interface"> + <xsl:attribute name="name"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + <!-- Cas où une classe hérite d'une classe abstraite --> + <xsl:variable name="idClass"> + <xsl:value-of select="UML:Dependency.supplier/UML:Class/@xmi.idref"/> + </xsl:variable> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $idClass]"> + <xsl:element name="superclass"> + <xsl:attribute name="name"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:template> + + + + <xsl:template name="UMLGeneralizations"> + <xsl:param name="classId"/> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::UML:Generalization[UML:Generalization.child/UML:Class/@xmi.idref=$classId]"> + <xsl:call-template name="UMLClassGeneralization"/> + </xsl:for-each> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::UML:Generalization[UML:Generalization.child/UML:AssociationClass/@xmi.idref=$classId]"> + <xsl:call-template name="UMLClassGeneralization"/> + </xsl:for-each> + <!-- Une généralisation peut aussi être une interface qui enrichit une autre --> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::UML:Generalization[UML:Generalization.child/UML:Interface/@xmi.idref=$classId]"> + <xsl:call-template name="UMLInterfaceGeneralization"/> + </xsl:for-each> + </xsl:template> + + <xsl:template name="UMLClassGeneralization"> + <xsl:variable name="id"> + <xsl:value-of select="UML:Generalization.parent/UML:Class/@xmi.idref"/> + </xsl:variable> + <xsl:variable name="discriminator"> + <xsl:value-of select="@discriminator"/> + </xsl:variable> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]"> + <xsl:element name="superclass"> + <xsl:attribute name="name"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:attribute name="discriminator"> + <xsl:value-of select="$discriminator"/> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:template> + + <xsl:template name="UMLInterfaceGeneralization"> + <xsl:variable name="id"> + <xsl:value-of select="UML:Generalization.parent/UML:Interface/@xmi.idref"/> + </xsl:variable> + <xsl:variable name="discriminator"> + <xsl:value-of select="@discriminator"/> + </xsl:variable> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]"> + <xsl:element name="interface"> + <xsl:attribute name="name"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:template> + + + <xsl:template name="UMLAssociations"> + <xsl:param name="classId"/> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::UML:Association.connection/UML:AssociationEnd[UML:AssociationEnd.participant/*/@xmi.idref=$classId]"> + <xsl:variable name="id"> + <xsl:value-of select="@xmi.id"/> + </xsl:variable> + <xsl:for-each select="../UML:AssociationEnd[@xmi.id!=$id]"> + <xsl:call-template name="UMLAssociation"/> + </xsl:for-each> + </xsl:for-each> + </xsl:template> + + + + <xsl:template name="UMLAssociation"> +<!-- BB <xsl:if test="@isNavigable='true'"> --> + <xsl:element name="attribute"> + <xsl:if test="@name!=''"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:if> + <xsl:attribute name="visibility"> + <xsl:value-of select="@visibility"/> + </xsl:attribute> + + <xsl:variable name="asClassId"> + <xsl:value-of select="ancestor::UML:AssociationClass/@xmi.id"/> + </xsl:variable> + + <xsl:if test="$asClassId"> + <xsl:for-each select="ancestor::UML:AssociationClass"> + <xsl:attribute name="associationClassName"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:for-each> + </xsl:if> + + <xsl:variable name="idParticipant"> + <xsl:value-of select="UML:AssociationEnd.participant/*/@xmi.idref"/> + </xsl:variable> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $idParticipant]"> + <xsl:attribute name="type"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:for-each> + + <xsl:variable name="id"> + <xsl:value-of select="@xmi.id"/> + </xsl:variable> + <xsl:for-each select="../UML:AssociationEnd[@xmi.id!=$id]"> + <xsl:attribute name="reverseAttributeName"> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:if test="@aggregation='aggregate' or @aggregation='composite'"> + <xsl:attribute name="associationType"> + <xsl:value-of select="@aggregation"/> + </xsl:attribute> + </xsl:if> + <xsl:variable name="reverseMaxMultiplicity"> + <xsl:value-of select="UML:AssociationEnd.multiplicity/UML:Multiplicity/UML:Multiplicity.range/UML:MultiplicityRange/@upper"/> + </xsl:variable> + <xsl:if test="$reverseMaxMultiplicity!=''"> + <xsl:attribute name="reverseMaxMultiplicity"> + <xsl:value-of select="$reverseMaxMultiplicity"/> + </xsl:attribute> + </xsl:if> + </xsl:for-each> + + <xsl:if test="UML:AssociationEnd.multiplicity"> + <xsl:variable name="minMultiplicity"> + <xsl:value-of select="UML:AssociationEnd.multiplicity/UML:Multiplicity/UML:Multiplicity.range/UML:MultiplicityRange/@lower"/> + </xsl:variable> + <xsl:if test="$minMultiplicity!=''"> + <xsl:attribute name="minMultiplicity"> + <xsl:value-of select="$minMultiplicity"/> + </xsl:attribute> + </xsl:if> + <xsl:variable name="maxMultiplicity"> + <xsl:value-of select="UML:AssociationEnd.multiplicity/UML:Multiplicity/UML:Multiplicity.range/UML:MultiplicityRange/@upper"/> + </xsl:variable> + <xsl:if test="$maxMultiplicity!=''"> + <xsl:attribute name="maxMultiplicity"> + <xsl:value-of select="$maxMultiplicity"/> + </xsl:attribute> + </xsl:if> + </xsl:if> + + <xsl:attribute name="navigable"> + <xsl:value-of select="@isNavigable"/> + </xsl:attribute> + <xsl:attribute name="ordering"> + <xsl:value-of select="@ordering"/> + </xsl:attribute> + + <xsl:for-each select="UML:ModelElement.taggedValue/UML:TaggedValue"> + <xsl:call-template name="taggedValue"/> + </xsl:for-each> + + <xsl:call-template name="stereotype"/> + + </xsl:element> +<!-- BB </xsl:if> --> + </xsl:template> + + + + <xsl:template name="UMLAttribute"> + + <xsl:element name="attribute"> + + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <!-- BB: attribute entity must have associationType, we put 'composite' + because composite is already defined for attribute association, but + perhaps other value like internal is better. If we change that + we must change template too --> + <xsl:attribute name="associationType"> + <xsl:text>composite</xsl:text> + </xsl:attribute> + + <xsl:attribute name="visibility"> + <xsl:value-of select="@visibility"/> + </xsl:attribute> + + <xsl:if test="@ownerScope='classifier'"> + <xsl:attribute name="static"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <xsl:if test="@changeability='frozen'"> + <xsl:attribute name="final"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="childpath">UML:StructuralFeature.type</xsl:with-param> + </xsl:call-template> + </xsl:attribute> + + <xsl:if test="UML:StructuralFeature.multiplicity"> + <xsl:variable name="minMultiplicity"> + <xsl:value-of select="UML:StructuralFeature.multiplicity/UML:Multiplicity/UML:Multiplicity.range/UML:MultiplicityRange/@lower"/> + </xsl:variable> + <xsl:if test="$minMultiplicity!=''"> + <xsl:attribute name="minMultiplicity"> + <xsl:value-of select="$minMultiplicity"/> + </xsl:attribute> + </xsl:if> + <xsl:variable name="maxMultiplicity"> + <xsl:value-of select="UML:StructuralFeature.multiplicity/UML:Multiplicity/UML:Multiplicity.range/UML:MultiplicityRange/@upper"/> + </xsl:variable> + <xsl:if test="$maxMultiplicity!=''"> + <xsl:attribute name="maxMultiplicity"> + <xsl:value-of select="$maxMultiplicity"/> + </xsl:attribute> + </xsl:if> + </xsl:if> + + <xsl:for-each select="UML:ModelElement.taggedValue/UML:TaggedValue"> + <xsl:call-template name="taggedValue"/> + </xsl:for-each> + + <xsl:for-each select="UML:ModelElement.comment/UML:Comment"> + <xsl:call-template name="UMLComment"/> + </xsl:for-each> + + <xsl:call-template name="stereotype"/> + + </xsl:element> + </xsl:template> + + + + <xsl:template name="UMLOperation"> + <xsl:element name="operation"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:attribute name="visibility"> + <xsl:value-of select="@visibility"/> + </xsl:attribute> + + <xsl:if test="@isAbstract='true'"> + <xsl:attribute name="abstract"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <xsl:for-each select="UML:ModelElement.taggedValue/UML:TaggedValue"> + <xsl:call-template name="taggedValue"/> + </xsl:for-each> + + <!-- operation parameters --> + <xsl:for-each select="UML:BehavioralFeature.parameter/UML:Parameter"> + <xsl:choose> + <xsl:when test="@kind='return'"> + <xsl:call-template name="UMLReturnParameter"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="UMLParameter"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <xsl:for-each select="UML:ModelElement.comment/UML:Comment"> + <xsl:call-template name="UMLComment"/> + </xsl:for-each> + + <!-- exceptions --> + <xsl:variable name="operationId"> + <xsl:value-of select="@xmi.id"/> + </xsl:variable> + + <xsl:for-each select="/XMI/XMI.content/UML:A_context_raisedSignal/UML:Operation[@xmi.idref = $operationId]"> + <xsl:variable name="exceptionId"> + <xsl:value-of select="concat(following::UML:Exception/@xmi.idref,following::UML:Signal/@xmi.idref)"/> + </xsl:variable> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::UML:Exception[@xmi.id = $exceptionId]"> + <xsl:element name="exceptionParameter"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:attribute name="type"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="parent::UML:Namespace.ownedElement/parent::UML:Class/@name"/> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::UML:Signal[@xmi.id = $exceptionId]"> + <xsl:element name="exceptionParameter"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:attribute name="type"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:for-each> + + <xsl:call-template name="stereotype"/> + + </xsl:element> + </xsl:template> + + + + <xsl:template name="UMLParameter"> + <xsl:element name="parameter"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="childpath">UML:Parameter.type</xsl:with-param> + </xsl:call-template> + </xsl:attribute> + + </xsl:element> + </xsl:template> + + + <xsl:template name="UMLReturnParameter"> + <xsl:element name="returnParameter"> + + <xsl:variable name="id"> + <xsl:value-of select="concat(UML:Parameter.type/*/@xmi.idref,UML2:TypedElement.type/*/@xmi.idref)"/> + </xsl:variable> + + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="childpath">UML:Parameter.type</xsl:with-param> + </xsl:call-template> + </xsl:attribute> + + </xsl:element> + </xsl:template> + + + <xsl:template name="UMLComment"> + <xsl:variable name="id"> + <xsl:value-of select="@xmi.idref"/> + </xsl:variable> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]"> + <xsl:call-template name="comment"/> + </xsl:for-each> + </xsl:template> + + <xsl:template name="comment"> + <xsl:element name="comment"> + <xsl:value-of select="@body"/> + </xsl:element> + </xsl:template> + + <xsl:template name="extern"> + <xsl:for-each select="UML:ModelElement.stereotype/UML:Stereotype"> + <xsl:variable name="id"> + <xsl:value-of select="@xmi.idref"/> + </xsl:variable> + <xsl:variable name="name"> + <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Stereotype[@xmi.id = $id]/@name"/> + </xsl:variable> + <xsl:if test="$name='extern'"> + <xsl:attribute name="extern"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + </xsl:for-each> + </xsl:template> + + + <xsl:template name="stereotype"> + <xsl:for-each select="UML:ModelElement.stereotype/UML:Stereotype"> + <xsl:variable name="id"> + <xsl:value-of select="@xmi.idref"/> + </xsl:variable> + <xsl:variable name="name"> + <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Stereotype[@xmi.id = $id]/@name"/> + </xsl:variable> + <xsl:if test="$name!='extern'"> + <xsl:element name="stereotype"> + <xsl:attribute name="name"> + <xsl:value-of select="$name"/> + </xsl:attribute> + </xsl:element> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template name="dependency"> + <xsl:for-each select="UML:Namespace.ownedElement/UML:Dependency"> + <xsl:element name="dependency"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:attribute name="supplierName"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="childpath">UML:Dependency.supplier</xsl:with-param> + </xsl:call-template> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:template> + + <xsl:template name="taggedValue"> + <xsl:variable name="tagId"> + <xsl:value-of select="UML:TaggedValue.type/UML:TagDefinition/@xmi.idref"/> + </xsl:variable> + <xsl:variable name="tagName"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="childpath">UML:TaggedValue.type</xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:element name="tagValue"> + <xsl:attribute name="name"> + <xsl:value-of select="$tagName"/> + </xsl:attribute> + <xsl:attribute name="value"> + <xsl:value-of select="UML:TaggedValue.dataValue"/> + </xsl:attribute> + </xsl:element> + </xsl:template> + + + <xsl:template name="fullClassName"> + <xsl:param name="childpath"/> + + <xsl:if test="count(child::*[name() = $childpath]) = 1"> + <xsl:choose> + <xsl:when test="child::*[name() = $childpath]/*/@xmi.idref"> + <xsl:variable name="id" select="child::*[name() = $childpath]/*/@xmi.idref"/> + <xsl:for-each select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/descendant::*[@xmi.id = $id]"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:for-each> + </xsl:when> + <xsl:when test="child::*[name() = $childpath]/*/@href"> + <xsl:variable name="href" select="child::*[name() = $childpath]/*/@href"/> + <xsl:variable name="external-url" select="substring-before($href, '#')"/> + <xsl:variable name="external-id" select="substring-after($href, '#')"/> + <xsl:for-each select="document($external-url)//descendant::*[@xmi.id=$external-id]"> + <xsl:call-template name="packagePathOfWithDot"/> + <xsl:value-of select="@name"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + <xsl:template name="packagePathOfWithDot"> + <xsl:if test="name()!='UML:DataType'"> + <xsl:for-each select="ancestor::UML:Package"> + <xsl:value-of select="@name"/> + <xsl:value-of select="string('.')"/> + </xsl:for-each> + </xsl:if> + </xsl:template> + +</xsl:stylesheet> diff --git a/eugene/src/main/xsl/xmi1.2ToStateModel.xsl b/eugene/src/main/xsl/xmi1.2ToStateModel.xsl new file mode 100644 index 0000000..f626c5c --- /dev/null +++ b/eugene/src/main/xsl/xmi1.2ToStateModel.xsl @@ -0,0 +1,210 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xalan="http://xml.apache.org/xslt" + xmlns:extensions="http://www.codelutin.com/XSLTExtensions" + xmlns:redirect="http://xml.apache.org/xalan/redirect" + extension-element-prefixes="extensions redirect" + xmlns="http://www.codelutin.org/eugene/stateModel" + xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" + xmlns:UML="org.omg.xmi.namespace.UML" + xmlns:UML2="org.omg.xmi.namespace.UML2"> + + <xsl:output method="xml" + encoding="UTF-8" + indent="yes" + xalan:indent-amount="2"/> + + + <!-- processing entry point. We'll process everything from that root package + path. Everything else is ignored --> + <!--<xsl:param name="fullPackagePath"/> + <xsl:param name="extraPackages"/>--> + + <!-- ignoring text, comment, etc... --> + <xsl:template match="text()|attribute"/> + + <!--<xsl:template match="*"> + <xsl:param name="parentLocalPackageName"/> + <xsl:apply-templates> + <xsl:with-param name="parentLocalPackageName"> + <xsl:value-of select="$parentLocalPackageName"/> + </xsl:with-param> + </xsl:apply-templates> + </xsl:template>--> + + <xsl:template match="/XMI/XMI.content/UML:Model"> + <xsl:element name="stateModel"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <xsl:attribute name="version"> + <xsl:variable name="versionTagId"> + <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@name='version']/@xmi.id"/> + </xsl:variable> + <xsl:value-of select="/XMI/XMI.content/UML:Model/UML:ModelElement.taggedValue/UML:TaggedValue[UML:TaggedValue.type/UML:TagDefinition/@xmi.idref = $versionTagId]/UML:TaggedValue.dataValue"/> + </xsl:attribute> + + <xsl:apply-templates select="UML:Namespace.ownedElement/*"> + <xsl:with-param name="parentLocalPackageName"/> + </xsl:apply-templates> + </xsl:element> + </xsl:template> + + + <!-- package names management --> + <xsl:template match="UML:Package"> + <xsl:param name="parentLocalPackageName"/> + <xsl:variable name="packageName"> + <xsl:value-of select="@name"/> + </xsl:variable> + + <xsl:variable name="localPackageName"> + <xsl:value-of select="$parentLocalPackageName"/> + <xsl:value-of select="$packageName"/> + </xsl:variable> + + <xsl:variable name="localPackageNameDot"> + <xsl:value-of select="concat($localPackageName,'.')"/> + </xsl:variable> + + <xsl:apply-templates select="UML:Namespace.ownedElement/UML:Package"> + <xsl:with-param name="parentLocalPackageName"> + <xsl:value-of select="$localPackageNameDot"/> + </xsl:with-param> + </xsl:apply-templates> + + <xsl:apply-templates select="UML:Namespace.ownedElement/UML:StateMachine"> + <xsl:with-param name="parentLocalPackageName"> + <xsl:value-of select="$localPackageName"/> + </xsl:with-param> + </xsl:apply-templates> + + </xsl:template> + + <!-- UML:StateMachine : one use case --> + <xsl:template match="UML:StateMachine"> + <xsl:param name="parentLocalPackageName"/> + <xsl:element name="stateChart"> + <!-- name attribute --> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <!-- package attribute --> + <xsl:attribute name="package"> + <xsl:value-of select="$parentLocalPackageName"/> + </xsl:attribute> + + <!-- process states --> + <!-- only state without stereotype --> + <xsl:apply-templates select="UML:StateMachine.top/UML:CompositeState[@name='top']/UML:CompositeState.subvertex/*[count(child::UML:ModelElement.stereotype)=0]"/> + + <!-- process transitions --> + <!--<xsl:apply-templates select="UML:StateMachine.transitions"/>--> + </xsl:element> + </xsl:template> + + <!-- UML:StateMachine.top = set of states of this case --> + <!-- UML:CompositeState : idem --> + <!--<xsl:template match="UML:StateMachine.top"> + <xsl:element name="states"> + <xsl:apply-templates select="UML:CompositeState/UML:CompositeState.subvertex/*"/> + </xsl:element> + </xsl:template>--> + + <!-- UML:CompositeState = composite state --> + <xsl:template match="UML:CompositeState"> + <xsl:element name="complexeState"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <!-- process all state of this complexe state --> + <!-- without stereotype --> + <xsl:apply-templates select="UML:CompositeState.subvertex/*[count(child::UML:ModelElement.stereotype)=0]"/> + </xsl:element> + </xsl:template> + + <!-- UML:Pseudostate = init state --> + <xsl:template match="UML:Pseudostate"> + <xsl:element name="state"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:attribute name="initial">true</xsl:attribute> + + <!-- process all outgoing transition --> + <xsl:apply-templates select="UML:StateVertex.outgoing/*"/> + </xsl:element> + </xsl:template> + + <!-- UML:SimpleState = normal state --> + <xsl:template match="UML:SimpleState"> + <xsl:element name="state"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + + <!-- TODO init action ? + <xsl:apply-templates select="UML:State.entry/UML:CallAction"> + <xsl:with-param name="parentLocalPackageName"/> + </xsl:apply-templates> --> + + <!-- process all outgoing transition --> + <xsl:apply-templates select="UML:StateVertex.outgoing/*"/> + </xsl:element> + </xsl:template> + + <!-- UML:FinalState = final state --> + <xsl:template match="UML:FinalState"> + <xsl:element name="state"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + <xsl:attribute name="final">true</xsl:attribute> + </xsl:element> + </xsl:template> + + <!-- UML:Transition = a transition --> + <xsl:template match="UML:Transition"> + <xsl:element name="transition"> + + <!-- id of this transition --> + <xsl:variable name="thisTransitionId"> + <xsl:value-of select="@xmi.idref"/> + </xsl:variable> + + <!-- event --> + <xsl:attribute name="event"> + <xsl:variable name="eventId"> + <xsl:value-of select="ancestor::UML:StateMachine/UML:StateMachine.transitions/UML:Transition[@xmi.id=$thisTransitionId]/UML:Transition.trigger/UML:SignalEvent/@xmi.idref"/> + </xsl:variable> + <xsl:value-of select="ancestor::UML:Package/UML:Namespace.ownedElement/UML:SignalEvent[@xmi.id=$eventId]/@name"/> + </xsl:attribute> + + <!-- toState attribute --> + <xsl:attribute name="toState"> + <xsl:variable name="destStateId"> + <xsl:value-of select="ancestor::UML:StateMachine/UML:StateMachine.transitions/UML:Transition[@xmi.id=$thisTransitionId]/UML:Transition.target/child::*[position()=1]/@xmi.idref"/> + </xsl:variable> + <xsl:value-of select="../../../*[@xmi.id=$destStateId]/@name"/> + </xsl:attribute> + + <!-- transition's actions --> + <!--<xsl:apply-templates select="UML:Transition.effect/*"> + <xsl:with-param name="parentLocalPackageName"/> + </xsl:apply-templates>--> + </xsl:element> + </xsl:template> + + <!-- UML:CallAction : action --> + <!--<xsl:template match="UML:CallAction"> + <xsl:element name="action"> + <xsl:attribute name="name"> + <xsl:value-of select="@name"/> + </xsl:attribute> + </xsl:element> + </xsl:template>--> +</xsl:stylesheet> diff --git a/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl b/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl new file mode 100644 index 0000000..77b648c --- /dev/null +++ b/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl @@ -0,0 +1,839 @@ +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt" + xmlns:extensions="http://www.codelutin.com/XSLTExtensions" + xmlns:redirect="http://xml.apache.org/xalan/redirect" + extension-element-prefixes="extensions redirect" + xmlns="http://www.codelutin.org/eugene/objectModel" + xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" + xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML"> + + <xsl:output method="xml" encoding="UTF-8" indent="yes" + xalan:indent-amount="2" /> + + <!-- + processing entry point. We'll process everything from that root + package path. Everything else is ignored + --> + <xsl:param name="fullPackagePath" /> + <xsl:param name="extraPackages" /> + + <!-- + . Matching templates + --> + + <xsl:template match="uml:Model"> + <xsl:element name="objectModel"> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <xsl:apply-templates> + <xsl:with-param name="parentLocalPackageName" /> + </xsl:apply-templates> + </xsl:element> + </xsl:template> + + <xsl:template match="text()|attribute" /> + + <xsl:template match="*"> + <xsl:param name="parentLocalPackageName" /> + <xsl:apply-templates> + <xsl:with-param name="parentLocalPackageName"> + <xsl:value-of select="$parentLocalPackageName" /> + </xsl:with-param> + </xsl:apply-templates> + </xsl:template> + + <!-- uml:Package --> + <xsl:template match="packagedElement[@xmi:type='uml:Package']"> + <xsl:param name="parentLocalPackageName" /> + + <!-- Documentation... --> + <xsl:call-template name="taggedValue" /> + + <xsl:variable name="packageName"> + <xsl:value-of select="@name" /> + </xsl:variable> + + <xsl:variable name="parentLocalPackageNameDot"> + <xsl:if test="$parentLocalPackageName=''"> + <xsl:value-of select="$parentLocalPackageName" /> + </xsl:if> + <xsl:if test="$parentLocalPackageName!=''"> + <xsl:value-of select="concat($parentLocalPackageName,'.')" /> + </xsl:if> + </xsl:variable> + + <xsl:variable name="localPackageName"> + <xsl:value-of select="$parentLocalPackageNameDot" /> + <xsl:value-of select="$packageName" /> + </xsl:variable> + + <xsl:apply-templates> + <xsl:with-param name="parentLocalPackageName"> + <xsl:value-of select="$localPackageName" /> + </xsl:with-param> + </xsl:apply-templates> + + </xsl:template> + + <!-- uml:Class --> + <xsl:template match="packagedElement[@xmi:type='uml:Class']"> + <xsl:param name="parentLocalPackageName" /> + + <xsl:element name="class"> + <!-- class properties --> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <xsl:attribute name="package"> + <xsl:value-of select="$parentLocalPackageName" /> + </xsl:attribute> + + <xsl:if test="@isAbstract='true'"> + <xsl:attribute name="abstract"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <!-- stereotypes --> + <xsl:for-each select="//child::*[@base_Class = current()/@xmi:id]"> + <xsl:element name="stereotype"> + <xsl:attribute name="name"> + <xsl:value-of select="local-name()" /> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + + <!-- dependencies --> + <xsl:call-template name="UMLDependencies"> + <xsl:with-param name="parent" select="current()" /> + </xsl:call-template> + + + <!-- interfaces --> + <xsl:apply-templates select="interfaceRealization" /> + + <!-- extends --> + <xsl:apply-templates select="generalization" /> + + <!-- attributes --> + <xsl:apply-templates select="ownedAttribute" /> + + <!-- operations --> + <xsl:apply-templates select="ownedOperation" /> + + <!-- associations , Association & AssociationClass --> + <xsl:call-template name="UMLAssociations" /> + + <!-- Documentation... --> + <xsl:call-template name="taggedValue" /> + </xsl:element> + </xsl:template> + + <!-- uml:AssociationClass --> + <xsl:template match="packagedElement[@xmi:type='uml:AssociationClass']"> + <xsl:param name="parentLocalPackageName" /> + + <xsl:element name="associationClass"> + <!-- class properties --> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <xsl:attribute name="package"> + <xsl:value-of select="$parentLocalPackageName" /> + </xsl:attribute> + + <xsl:if test="@isAbstract='true'"> + <xsl:attribute name="abstract"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <!-- stereotypes --> + <xsl:for-each select="//child::*[@base_Class = current()/@xmi:id]"> + <xsl:element name="stereotype"> + <xsl:attribute name="name"> + <xsl:value-of select="local-name()" /> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + + <!-- dependencies --> + <xsl:call-template name="UMLDependencies"> + <xsl:with-param name="parent" select="current()" /> + </xsl:call-template> + + <!-- interfaces --> + <xsl:apply-templates select="interfaceRealization" /> + + <!-- extends --> + <xsl:apply-templates select="generalization" /> + + <!-- attributes --> + <xsl:apply-templates select="ownedAttribute" /> + + <!-- operations --> + <xsl:apply-templates select="ownedOperation" /> + + <!-- associations --> + <xsl:call-template name="Participant" /> + + <!-- Documentation... --> + <xsl:call-template name="taggedValue" /> + </xsl:element> + </xsl:template> + + <!-- uml:Interface --> + <xsl:template match="packagedElement[@xmi:type='uml:Interface']"> + <xsl:param name="parentLocalPackageName" /> + + <xsl:element name="interface"> + <!-- interface properties --> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <xsl:attribute name="package"> + <xsl:value-of select="$parentLocalPackageName" /> + </xsl:attribute> + + <xsl:if test="@isAbstract='true'"> + <xsl:attribute name="abstract"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <!-- stereotypes --> + <xsl:for-each + select="//child::*[@base_Interface = current()/@xmi:id]"> + <xsl:element name="stereotype"> + <xsl:attribute name="name"> + <xsl:value-of select="local-name()" /> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + + <!-- dependencies --> + <xsl:call-template name="UMLDependencies"> + <xsl:with-param name="parent" select="current()" /> + </xsl:call-template> + + <!-- extends --> + <xsl:apply-templates select="generalization" /> + + <!-- operations --> + <xsl:apply-templates select="ownedOperation" /> + + <!-- Documentation... --> + <xsl:call-template name="taggedValue" /> + + </xsl:element> + </xsl:template> + + <!-- interfaceRealization --> + <xsl:template match="interfaceRealization"> + <xsl:element name="interface"> + <xsl:attribute name="name"> + <xsl:call-template name="supplierName"> + <xsl:with-param name="parent" select="current()" /> + </xsl:call-template> + </xsl:attribute> + </xsl:element> + </xsl:template> + + <xsl:template match="generalization"> + + <xsl:element name="superclass"> + <xsl:attribute name="name"> + + <xsl:choose> + <xsl:when test="general"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="node" select="general" /> + </xsl:call-template> + </xsl:when> + + <xsl:when test="@general"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="//uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=current()/@general]" /> + </xsl:call-template> + </xsl:when> + </xsl:choose> + + </xsl:attribute> + </xsl:element> + </xsl:template> + + <!-- uml:Enumeration --> + <xsl:template match="packagedElement[@xmi:type='uml:Enumeration']"> + <xsl:param name="parentLocalPackageName" /> + <xsl:element name="enumeration"> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + <xsl:attribute name="package"> + <xsl:value-of select="$parentLocalPackageName" /> + </xsl:attribute> + + <!-- literals --> + <xsl:apply-templates select="ownedLiteral" /> + + <!-- operations --> + <xsl:apply-templates select="ownedOperation" /> + + <!-- Documentation... --> + <xsl:call-template name="taggedValue" /> + + </xsl:element> + </xsl:template> + + <xsl:template match="ownedLiteral"> + <xsl:element name="literal"> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <!-- Documentation... Not yet supported by the memory representation--> + <!-- + <xsl:call-template name="taggedValue" /> + --> + </xsl:element> + </xsl:template> + + <xsl:template match="ownedAttribute"> + + <xsl:element name="attribute"> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <xsl:call-template name="multiplicities"> + <xsl:with-param name="parent" select="current()" /> + </xsl:call-template> + + <xsl:if test="@isStatic"> + <xsl:attribute name="static"> + <xsl:value-of select="@isStatic" /> + </xsl:attribute> + </xsl:if> + + <xsl:choose> + <xsl:when test="@visibility"> + <xsl:attribute name="visibility"> + <xsl:value-of select="@visibility" /> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="visibility">public</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:call-template name="UMLParameter" /> + <xsl:call-template name="taggedValue" /> + </xsl:element> + </xsl:template> + + <xsl:template match="ownedOperation"> + + <xsl:element name="operation"> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <xsl:choose> + <xsl:when test="@visibility"> + <xsl:attribute name="visibility"> + <xsl:value-of select="@visibility" /> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="visibility">public</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + + <xsl:if test="@isAbstract='true'"> + <xsl:attribute name="abstract"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + + <!-- operation parameters --> + <xsl:for-each select="ownedParameter"> + <xsl:choose> + <xsl:when test="@direction = 'return'"> + <xsl:element name="returnParameter"> + <xsl:call-template name="UMLParameter" /> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:element name="parameter"> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + <xsl:call-template name="UMLParameter" /> + </xsl:element> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- operation exceptions --> + <xsl:choose> + <xsl:when test="raisedException"> + <xsl:for-each select="raisedException"> + <xsl:element name="exceptionParameter"> + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="node" select="." /> + </xsl:call-template> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:when> + <xsl:when test="@raisedException"> + <xsl:call-template name="ownedOperation-raisedException"> + <xsl:with-param name="value" + select="string(@raisedException)" /> + </xsl:call-template> + </xsl:when> + </xsl:choose> + + <!-- stereotypes --> + <xsl:for-each select="//child::*[@base_Operation = current()/@xmi:id]"> + <xsl:element name="stereotype"> + <xsl:attribute name="name"> + <xsl:value-of select="local-name()" /> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + + <!-- Documentation... --> + <xsl:call-template name="taggedValue" /> + + </xsl:element> + </xsl:template> + + <!-- + . Named templates + --> + + <!-- find reference listed in ownedOperation/@raisedException --> + <xsl:template name="ownedOperation-raisedException"> + <xsl:param name="value" /> + + <xsl:choose> + <xsl:when test="contains($value, ' ')"> + <xsl:call-template name="ownedOperation-raisedException"> + <xsl:with-param name="value" + select="substring-before($value, ' ')" /> + </xsl:call-template> + <xsl:call-template name="ownedOperation-raisedException"> + <xsl:with-param name="value" + select="substring-after($value, ' ')" /> + </xsl:call-template> + </xsl:when> + <xsl:when test="$value != ''"> + <xsl:element name="exceptionParameter"> + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="//uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=$value]" /> + </xsl:call-template> + </xsl:attribute> + </xsl:element> + </xsl:when> + </xsl:choose> + + </xsl:template> + + <xsl:template name="UMLDependencies"> + <xsl:param name="parent" /> + <xsl:for-each select="//packagedElement[@xmi:type = 'uml:Dependency'][@client = $parent/@xmi:id]"> + <xsl:element name="dependency"> + <xsl:attribute name="name"> + <xsl:value-of select="@name" /> + </xsl:attribute> + + <xsl:attribute name="supplierName"> + <xsl:call-template name="supplierName"> + <xsl:with-param name="parent" select="current()" /> + </xsl:call-template> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:template> + + <xsl:template name="supplierName"> + <xsl:param name="parent" /> + <xsl:choose> + <xsl:when test="supplier"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="node" select="supplier" /> + </xsl:call-template> + </xsl:when> + + <xsl:when test="@supplier"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="//uml:Model/descendant::packagedElement[@xmi:id=$parent/@supplier]" /> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:template> + + <!-- + called by ownedAttribute and ownedOperation + --> + <xsl:template name="UMLParameter"> + + <xsl:choose> + <xsl:when test="type"> + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="node" select="type" /> + </xsl:call-template> + </xsl:attribute> + </xsl:when> + + <xsl:when test="@type"> + <xsl:attribute name="type"> + <xsl:variable name="typeref" + select="//uml:Model/descendant::packagedElement[@xmi:type='uml:Enumeration' or @xmi:type='uml:DataType' or @xmi:type='uml:Class' or @xmi:type='uml:Interface' or @xmi:type='uml:PrimitiveType'][@xmi:id=current()/@type]" /> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" select="$typeref" /> + </xsl:call-template> + </xsl:attribute> + </xsl:when> + </xsl:choose> + + <xsl:call-template name="multiplicities"> + <xsl:with-param name="parent" select="current()" /> + </xsl:call-template> + + <xsl:if test="@isOrdered"> + <xsl:attribute name="ordering"> + <xsl:text>ordered</xsl:text> + </xsl:attribute> + </xsl:if> + + <xsl:if test="@isUnique"> + <xsl:attribute name="unique"> + <xsl:value-of select="@isUnique" /> + </xsl:attribute> + </xsl:if> + + <xsl:if test="defaultValue/@value"> + <xsl:attribute name="defaultValue"> + <xsl:value-of select="defaultValue/@value" /> + </xsl:attribute> + </xsl:if> + + </xsl:template> + + <!-- + taggedValue. e.i. documentation + --> + <xsl:template name="taggedValue"> + <xsl:for-each select="eAnnotations/details"> + <xsl:element name="tagValue"> + <xsl:attribute name="name"> + <xsl:value-of select="@key" /> + </xsl:attribute> + <xsl:attribute name="value"> + <xsl:value-of select="@value" /> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:template> + + <!-- + uml:Association + --> + <xsl:template name="UMLAssociations"> + <xsl:for-each + select="following-sibling::packagedElement[@xmi:type='uml:Association']/ownedEnd[@type=current()/@xmi:id]"> + + + <xsl:variable name="reversenode" select="current()"/> + + <xsl:variable name="endnode" + select="parent::packagedElement/ownedEnd[@association=current()/@association][not(@type) or @type != current()/@type]" /> + + <xsl:if test="$endnode"> + + <xsl:element name="attribute"> + <xsl:if test="$endnode/@name != ''"> + <xsl:attribute name="name"> + <xsl:value-of select="$endnode/@name" /> + </xsl:attribute> + </xsl:if> + + <xsl:choose> + <xsl:when test="$endnode/type"> + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="node" select="$endnode/type" /> + </xsl:call-template> + </xsl:attribute> + </xsl:when> + + <xsl:when test="$endnode/@type"> + <xsl:attribute name="type"> + <xsl:variable name="typeref" + select="//uml:Model/descendant::packagedElement[@xmi:type='uml:Enumeration' or @xmi:type='uml:DataType' or @xmi:type='uml:Class' or @xmi:type='uml:Interface'][@xmi:id=$endnode/@type]" /> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" select="$typeref" /> + </xsl:call-template> + </xsl:attribute> + </xsl:when> + </xsl:choose> + + <xsl:attribute name="reverseAttributeName"> + <xsl:value-of select="$reversenode/@name" /> + </xsl:attribute> + + <xsl:attribute name="reverseMaxMultiplicity"> + <xsl:choose> + <xsl:when test="$reversenode/upperValue/@value"> + <xsl:choose> + <xsl:when test="$reversenode/upperValue/@value='*'"> + <xsl:text>-1</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$reversenode/upperValue/@value" /> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:text>-1</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + + <xsl:if test="$endnode/@aggregation"> + <xsl:attribute name="associationType"> + <xsl:value-of select="$endnode/@aggregation" /> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="multiplicities"> + <xsl:with-param name="parent" select="$endnode" /> + </xsl:call-template> + + <xsl:attribute name="navigable"> + <xsl:value-of select="contains(parent::packagedElement/@navigableOwnedEnd, $endnode/@xmi:id)"/> + </xsl:attribute> + + <xsl:if test="$endnode/@isOrdered"> + <xsl:attribute name="ordering"> + <xsl:text>ordered</xsl:text> + </xsl:attribute> + </xsl:if> + + <!-- stereotypes --> + <xsl:for-each select="//child::*[@base_Association = current()/parent::packagedElement/@xmi:id]"> + <xsl:element name="stereotype"> + <xsl:attribute name="name"> + <xsl:value-of select="local-name()" /> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + + </xsl:element> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template name="multiplicities"> + <xsl:param name="parent" /> + + <xsl:if test="$parent/lowerValue"> + <xsl:attribute name="minMultiplicity"> + <xsl:choose> + <xsl:when test="$parent/lowerValue/@value"> + <xsl:value-of select="$parent/lowerValue/@value" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>0</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </xsl:if> + + <xsl:if test="$parent/upperValue"> + <xsl:attribute name="maxMultiplicity"> + <xsl:choose> + <xsl:when test="$parent/upperValue/@value"> + <xsl:choose> + <xsl:when test="$parent/upperValue/@value='*'"> + <xsl:text>-1</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$parent/upperValue/@value" /> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:text>-1</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </xsl:if> + </xsl:template> + + <xsl:template name="Participant"> + <xsl:for-each select="ownedEnd"> + + <xsl:variable name="endnode" + select="child::ownedEnd[@association=current()/@association][not(@type) or @type != current()/@type]" /> + <xsl:if test="$endnode"> + <xsl:element name="participant"> + <xsl:choose> + <xsl:when test="$endnode/type"> + <xsl:attribute name="type"> + <xsl:call-template + name="fullClassName"> + <xsl:with-param + name="node" select="$endnode/type" /> + </xsl:call-template> + </xsl:attribute> + </xsl:when> + + <xsl:when test="$endnode/@type"> + <xsl:attribute name="type"> + <xsl:variable name="typeref" + select="//uml:Model/descendant::packagedElement[@xmi:type='uml:Enumeration' or @xmi:type='uml:DataType' or @xmi:type='uml:Class' or @xmi:type='uml:Interface'][@xmi:id=$endnode/@type]" /> + <xsl:call-template + name="fullClassName2"> + <xsl:with-param + name="node" select="$typeref" /> + </xsl:call-template> + </xsl:attribute> + </xsl:when> + </xsl:choose> + </xsl:element> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <!-- + node param must be a Xpath node. the node designed by node param + must have @xmi:type. walks thru the model in order to print + super package names. print fullClassName of type designed by + node param. + --> + <xsl:template name="fullClassName2"> + <xsl:param name="node" /> + + <xsl:choose> + <xsl:when test="$node[@xmi:type='uml:DataType']"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="$node/parent::packagedElement[@xmi:type = 'uml:Package']" /> + </xsl:call-template> + <xsl:value-of select="$node/@name" /> + </xsl:when> + + <xsl:when test="$node[@xmi:type='uml:PrimitiveType']"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="$node/parent::packagedElement[@xmi:type = 'uml:Package']" /> + </xsl:call-template> + <xsl:value-of select="$node/@name" /> + </xsl:when> + + <xsl:when test="$node[@xmi:type='uml:Enumeration']"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="$node/parent::packagedElement[@xmi:type = 'uml:Package']" /> + </xsl:call-template> + <xsl:value-of select="$node/@name" /> + </xsl:when> + + <xsl:when test="$node[@xmi:type = 'uml:Class']"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="$node/parent::packagedElement[@xmi:type = 'uml:Package']" /> + </xsl:call-template> + <xsl:value-of select="$node/@name" /> + </xsl:when> + + <xsl:when test="$node[@xmi:type = 'uml:Interface']"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="$node/parent::packagedElement[@xmi:type = 'uml:Package']" /> + </xsl:call-template> + <xsl:value-of select="$node/@name" /> + </xsl:when> + + <xsl:when test="$node[@xmi:type='uml:Package']"> + <xsl:choose> + <xsl:when + test="$node/parent::packagedElement[@xmi:type = 'uml:Package']"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="$node/parent::packagedElement[@xmi:type = 'uml:Package']" /> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="$node/parent::uml:Model" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="concat($node/@name, '.')" /> + </xsl:when> + + <!-- + <xsl:when test="$node[name()='uml:Model']"> + <xsl:value-of select="concat($modelName, '.')"/> + </xsl:when> + --> + </xsl:choose> + </xsl:template> + + <!-- + node param must be a Xpath node. the node designed by node param + must have @xmi:type and @href attributes. print fullClassName of + type designed by node param (helped by fullClassName2 template). + --> + <xsl:template name="fullClassName"> + <xsl:param name="node" /> + + <xsl:variable name="typeref" select="$node/@href" /> + <xsl:variable name="xmi-type" select="$node/@xmi:type" /> + <xsl:variable name="external-url" + select="substring-before($typeref, '#')" /> + <xsl:variable name="external-id" + select="substring-after($typeref, '#')" /> + + <xsl:choose> + <xsl:when test="$external-url=''"> + <!-- internal reference --> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="//uml:Model/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]" /> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <!-- Dans les modeles externes, le cas est different, FQN seulement pour les types non primitifs --> + <xsl:choose> + <xsl:when test="$node/@xmi:type = 'uml:PrimitiveType'"> + <xsl:value-of select="document($external-url)/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]/@name" /> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" select="document($external-url)/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + <!-- / fin du cas particulier --> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + +</xsl:stylesheet> diff --git a/eugene/src/site/en/rst/LutinGenerator.rst b/eugene/src/site/en/rst/LutinGenerator.rst new file mode 100644 index 0000000..c486fcb --- /dev/null +++ b/eugene/src/site/en/rst/LutinGenerator.rst @@ -0,0 +1,57 @@ +====== +Eugene +====== + +:Authors: Arnaud THIMEL +:Contact: thimel@codelutin.com +:Revision: $Revision$ +:Date: $Date$ + + +.. contents:: + + +Project origin +============== + +Eugene was born after a research of an easy-to-use code generator +oriented on "in memory" models. But the research ended by a failure. + +Analysed projects were : + +- Jostraca ; +- EMF ; +- ... + +Code Generation were chosen instead of Introspection because it allows to use +the compilation processes and therefore to validate the generated code. Even if +the initial need was to generate Java source code, Eugene is able to +generate any type of code. + + + +Technical part +============== + +Eugene allows using a set of generators. These generators are abstract +of any specificity enabling to adapt them to indicidual needs. + + +By default, Eugene has two implementations of these generators : + +- ObjectModelGenerator (generation from an object model) ; +- UIModelGenerator (generation from a graphic model). + +Each of these models has its own specificities due to its strucure and working +mode... + +Anyway, these generators are unuseful without generation templates. Templates +are files allowing to determinate what will be the generated content according +to the initial model. Thanks to LutinProcessor_, these templates are written +with a syntax close to the JSP syntax mixing Java and generated code. The goal +of LutinProcessor is to tranform the templates by replacing JSP code by the +matching Java code. Obtained Java classes can be compiled and so become +independants. + + +.. _LutinProcessor: http://lutinprocessor.labs.libre-entreprise.org/ diff --git a/eugene/src/site/resources/images/Hotel.objectmodel.png b/eugene/src/site/resources/images/Hotel.objectmodel.png new file mode 100644 index 0000000..8884f7a Binary files /dev/null and b/eugene/src/site/resources/images/Hotel.objectmodel.png differ diff --git a/eugene/src/site/resources/images/Hotel.png b/eugene/src/site/resources/images/Hotel.png new file mode 100644 index 0000000..4d98347 Binary files /dev/null and b/eugene/src/site/resources/images/Hotel.png differ diff --git a/eugene/src/site/resources/images/ObjectModel.png b/eugene/src/site/resources/images/ObjectModel.png new file mode 100644 index 0000000..3cafe19 Binary files /dev/null and b/eugene/src/site/resources/images/ObjectModel.png differ diff --git a/eugene/src/site/resources/images/StateModel.png b/eugene/src/site/resources/images/StateModel.png new file mode 100644 index 0000000..c934d0f Binary files /dev/null and b/eugene/src/site/resources/images/StateModel.png differ diff --git a/eugene/src/site/resources/images/plugin_choix.png b/eugene/src/site/resources/images/plugin_choix.png new file mode 100644 index 0000000..7080be9 Binary files /dev/null and b/eugene/src/site/resources/images/plugin_choix.png differ diff --git a/eugene/src/site/resources/images/plugin_menu.png b/eugene/src/site/resources/images/plugin_menu.png new file mode 100644 index 0000000..5fa820d Binary files /dev/null and b/eugene/src/site/resources/images/plugin_menu.png differ diff --git a/eugene/src/site/resources/images/plugin_newdepot.png b/eugene/src/site/resources/images/plugin_newdepot.png new file mode 100644 index 0000000..f87ce0f Binary files /dev/null and b/eugene/src/site/resources/images/plugin_newdepot.png differ diff --git a/eugene/src/site/resources/images/plugin_typeinstall.png b/eugene/src/site/resources/images/plugin_typeinstall.png new file mode 100644 index 0000000..d8e5cb0 Binary files /dev/null and b/eugene/src/site/resources/images/plugin_typeinstall.png differ diff --git a/eugene/src/site/resources/images/plugin_utilisation_editeur.png b/eugene/src/site/resources/images/plugin_utilisation_editeur.png new file mode 100644 index 0000000..28b95fe Binary files /dev/null and b/eugene/src/site/resources/images/plugin_utilisation_editeur.png differ diff --git a/eugene/src/site/rst/ConvertPoseidonToArgoUML.rst b/eugene/src/site/rst/ConvertPoseidonToArgoUML.rst new file mode 100644 index 0000000..c6eca75 --- /dev/null +++ b/eugene/src/site/rst/ConvertPoseidonToArgoUML.rst @@ -0,0 +1,12 @@ +Conversion des modèles UML de Poseidon vers Argo +================================================ + +Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du +fichier .zmul qui est en fait un fichier zip + +xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi + +Ensuite dans ArgoUML ouvrez le fichier généré. + +Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des +classes en faisant du drag&drop. diff --git a/eugene/src/site/rst/DevUIDoc.rst b/eugene/src/site/rst/DevUIDoc.rst new file mode 100644 index 0000000..2ac4554 --- /dev/null +++ b/eugene/src/site/rst/DevUIDoc.rst @@ -0,0 +1,103 @@ +======= +UIModel +======= + +:Authors: Aurelie MAZELIER +:Revision: $Revision$ +:Date: $Date$ + + +.. contents:: + + +Model UIModel +============= + +En parcourant un fichier xml, il est possible de construire un objet +UIModel. Cet objet est défini par les interfaces suivantes. + + +Interfaces +---------- + +- UIModel : + + - version XML + - root de type UIModelObject + - le nom du package + - liste des objets du model + +- UIModelObject : + + - nom + - type + - un UIModelObject parent + - un UIModel + - une liste d'arguments + - une liste de propriétés + - une liste d'évènements + - une liste d'enfants + +- UIModelArgument : + + - une liste d'arguments + +- UIModelProperty : + + - un nom + - une valeur (de différents type : int, float ...) + - un index + +- UIModelEvent : + + - le nom de la addListenerMethod + - le nom de la listenerInterface + - le nom de la listenerMethod + - le nom du handler + - le nom de la eventProperty + +- UIModelChild : + + - un enfant UIModelObject + - la contrainte de l'enfant de type UIModelConstraint + +- UIModelConstraint : + + - une valeur de type Object ou String + + +Implantations +------------- + +Il existe deux implantations de ces interfaces. + + +impl +~~~~ + +Cette première implantation permet d'obtenir un UIModel lors +du parcours du fichier xml de type uimodel par le parser +XMLParser. + + +xml +~~~ + +Cette deuxième implantation permet d'obtenir un UIModel lors +du parcours du fichier xml de type javaxml par le parser +JavaXMLParser. + + +JavaXMLParser +------------- + +Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un +objet UIModel. Ce parser utilise dom4j. + + +Générateurs +=========== + +- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel. + +- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété... diff --git a/eugene/src/site/rst/DiscussionSurTypeDeGeneration.rst b/eugene/src/site/rst/DiscussionSurTypeDeGeneration.rst new file mode 100644 index 0000000..c676704 --- /dev/null +++ b/eugene/src/site/rst/DiscussionSurTypeDeGeneration.rst @@ -0,0 +1,71 @@ +Il y a deux façon de voir la génération. + +La première que l'on rencontre le plus +souvent génère des fichiers avec des sections à +modifier par le développeur. Ces sections sont marquées par des commentaires +que le générateur interprète pour savoir qu'il n'a pas le droit de modifier +cette partie de code. + +La deuxième qui à pour principe: +- le générateur ne doit jamais modifier les fichiers de l'utilisateur. +- l'utilisateur ne doit jamais modifier le code généré +De cette façon les choses sont clairement séparé, et cela est possible sans +utilisation d'artifice perturbant le développeur grâce au nouveau langage à +objet et à l'héritage. + +La grosse différence n'est pas dans les générateurs eux même mais dans les +templates de génération. Si tous les générateurs de la première catégorie +peuvent très bien servir pour faire de la génération de la seconde, +l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs +beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance. + +Code Lutin utilise un générateur du deuxième type: Eugene + +Quelques générateurs de la première catégorie: +- Acceleo (Obeo) +- Pragmatic (Argia) + +Les principes de Eugene +======================= +- le générateur ne doit jamais modifier les fichiers de l'utilisateur. +- l'utilisateur ne doit jamais modifier le code généré +- le modèle est toujours la source (pas de reverse, pas de modification du + modèle par le générateur +- être le plus simple possible (simple à maintenir) +- s'appuyer sur les normes (XMI) +- pouvoir utiliser plusieurs fichiers XMI pour la même génération +- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de + données) mais dans un fichier de propriété à coté du modèle. +- avoir une couche d'abstraction du XMI pour évité la modification des + templates si la version de XMI change (XMLObjectModel) +- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement + car aucun modèle simple n'a été trouvé) +- s'appuyer sur un langage puissant et connu des développeurs (Java) +- ne jamais mélanger le code généré et le code utilisateur +- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...) +- être facilement intégrable dans une phase de génération/compilation + (task ant, plugin maven) +- être indépendant d'un outil de développement spécifique (chacun à le droit de + choisir l'éditeur qu'il souhaite). + +Défaut de la première solution +============================== +- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du + code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il + n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois + écrire le package lorsque l'on souhaite utiliser une classe non encore + importée. +- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier + ce qui complexifie la vue du développeur pour rien + +Défaut des générateurs le plus souvent rencontré +================================================ +- Les générateurs au lieu d'utiliser un langage et façon de faire que tous +les développeurs connaissent réinvente leur propre syntaxe et langage. + +Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>). +De cette façon le générateur reste simple pas de langage à développer et +parser. L'utilisateur qui connait Java connait le langage de template. Et +surtout l'utilisateur n'est pas limité par le langage développé +spécifiquement pour les templates. + diff --git a/eugene/src/site/rst/ObjectModel.rst b/eugene/src/site/rst/ObjectModel.rst new file mode 100644 index 0000000..5be8a87 --- /dev/null +++ b/eugene/src/site/rst/ObjectModel.rst @@ -0,0 +1,85 @@ +=========== +ObjectModel +=========== + +:Authors: Arnaud THIMEL +:Contact: thimel@codelutin.com +:Revision: $Revision$ +:Date: $Date$ + + +.. contents:: + + +Introduction +============ + +Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles +objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est +représenté par un diagramme de classe. Cette vision des modèles objet étant très +répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant +que ce n'est pas obligatoire). + +Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé +à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange). + +La génération de code se fait ensuite en trois étapes : + +- Epuration du XMI en un code XML ne conservant que les informations utiles ; +- Mise en mémoire du modèle simplifié ; +- Application des templates / génération de code. + + +Epuration du modèle XMI +======================= + +La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI +est trop verbeux pour être compréhensible aisement. + +Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML +épuré décrivant le modèle et ne conservant que l'essentiel des informations. + +Parmi les informations extraites, on peut citer : + +- Objets (classes, classes abtraites, interfaces) +- Attributs (nom, type, visibilité, ...) +- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...) +- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...) +- Stéréotypes + +A partir du diagramme suivant : + +.. image:: images/Hotel.png + +On obtient un ObjectModel tel que : + +.. image:: images/Hotel.objectmodel.png + + +Modèle mémoire +============== + +Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en +mémoire afin de subir la génération. + +Ainsi, le modèle instancié est basé sur le diagramme de classes suivant : + +.. image:: images/ObjectModel.png + + +Application des templates +========================= + +Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator. +Toute partie de ce générateur peut donc être surchargée permettant ainsi une +forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est +donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes +interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut, +ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort +donc aucun code généré. Les templates ont donc pour but de surcharger ses +méthodes et décrire le code qui va être généré. + +Les templates peuvent être de toutes sortes car ils peuvent générer un fichier +différent par modèle, par interface, par classe ou encore par classifier (souche +commune aux classes et interfaces). De plus, ils peuvent indifféremment générer +du code Java / XML ou encore tout autre type de code (texte ou autre...). diff --git a/eugene/src/site/rst/ObjectModel.zuml b/eugene/src/site/rst/ObjectModel.zuml new file mode 100644 index 0000000..fd191f6 Binary files /dev/null and b/eugene/src/site/rst/ObjectModel.zuml differ diff --git a/eugene/src/site/rst/Todo.rst b/eugene/src/site/rst/Todo.rst new file mode 100644 index 0000000..04b9d02 --- /dev/null +++ b/eugene/src/site/rst/Todo.rst @@ -0,0 +1,104 @@ +==== +TODO +==== + + +:Revision: $Revision$ +:Date: $Date$ + + +Idées ou choses à faire +======================= + + +- Création d'un plugin Eclipse pour la coloration syntaxique des templates + +- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls + +- Permettre de faire du 'model to model' avant la generation + +Model to Model +============== + +Pour tout ce qui est génération de classe Java, le principe de base d'Eugene +est de dire que le développeur écrit directement ce qu'il souhaite voir dans +le fichier final. + +Cela pose quelques difficultés: + +- difficulté de prévoir les imports +- difficulté d'éviter la génération de deux méthodes ayant le même nom + +L'idée serait alors de constuire la classe Java souhaitée au final en appelant +des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait +alors un nouveau modèle mémoire dont on demanderait la génération à un +générateur sans inteligence qui se contenterait d'écrire le code Java modélisé. + +L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle +n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure. +D'ajouter de façon automatique tous les imports des arguments des méthodes, ... + +Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des +ajouter doivent être fait: + +- pouvoir indiquer sur une Class une série d'import. +- pouvoir ajouter un message de licence +- pouvoir ajouter sur une méthode sont code source + +Ce dernier élément est le plus problèmatique, car il deviendrait pénible de +devoir instancier tout le code de la méthode en objet et on perdrait l'idée +de départ d'Eugene. + +Dans eugène il est déjà possible de modifier la transformation des tags de +génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");' +Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou +encore plus simplement '"..." +' ce qui pourrait donner:: + + addImport(MonObject.class); + method.addCode( + /*{ int i = 0; + i = 1+2; + MonObject result = new MonObject(result); + return result; + }*/ + ); + +qui deviendrait:: + + addImport(MonObject.class); + method.addCode( + "int i = 0;\n" + + "i = 1+2;\n" + + "MonObject result = new MonObject(result);\n" + + "return result;\n" + ); + +On garde la facilte d'écriture du code à générer et on permet d'ajouter +facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun +traitement complexe du code de la méthode n'est donc nécessaire. + +Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la +génération actuelle. + +Travail a faire: + +- ajout d'objet dans ObjectModel +- ajout de méthode de modification dans ObjectModel +- création d'un template de génération d'un POJO (génération direct d'un modèle) + +Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les +interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs. +Il faut donc trouver une solution pour permettre l'instanciation et la +modification de classe implantant l'ObjectModel sans pour autant les ajouter +au interface. + +Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier +le modèle:: + + ObjectModelClass clazz = ObjectModelHelper.createClass(); + ObjectModelOperation method = ObjectModelHelper.addMethod( + clazz, "name", "typeRetour", "paramName", "typeParam"); + ObjectModelHelper.addImport("java.util.List"); + ObjectModelHelper.addCode(method, + /*{ blablabla + }*/ diff --git a/eugene/src/site/rst/buix.guix b/eugene/src/site/rst/buix.guix new file mode 100644 index 0000000..9a52a1a --- /dev/null +++ b/eugene/src/site/rst/buix.guix @@ -0,0 +1,409 @@ +<GuixApplication id="Application"> + <properties> + <property name="name" type="String"><value>Buix Application</value></property> + </properties> + <WidgetWindow id="GuixWindow"> + <properties> + <property name="name" type="String"><value>Buix</value></property> + <property name="title" type="String"><value>Application Buix</value></property> + <property name="x" type="int"><value>50</value></property> + <property name="y" type="int"><value>50</value></property> + <property name="width" type="int"><value>1000</value></property> + <property name="height" type="int"><value>800</value></property> + <property name="menubar" type="ComponentResource"><value>MenuBar</value></property> + </properties> + <signals> + <signal name="closing" argument="false" handler="onClosing"/> + </signals> + <children> + <child> + <WidgetContainer id="GuixGridBag"> + <properties> + <property name="name" type="String"><value>vbox</value></property> + </properties> + <children> + <child> + <layout> + <property name="x" type="int"><value>0</value></property> + <property name="y" type="int"><value>1</value></property> + <property name="weightx" type="double"><value>1.0</value></property> + <property name="weighty" type="double"><value>1.0</value></property> + </layout> + <WidgetContainer id="GuixSpliter"> + <properties> + <property name="name" type="String"><value>verticalSpliter</value></property> + <property name="orientation" type="Enum"><value><enum type="int" select="0"><item>0</item><item>1</item></enum></value></property> + <property name="dividerSize" type="int"><value>9</value></property> + <property name="express" type="boolean"><value>true</value></property> + </properties> + <children> + <child> + <layout> + <property name="position" type="Enum"><value><enum type="String" select="3"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> + </layout> + <WidgetContainer id="GuixScrollPane"> + <properties> + <property name="name" type="String"><value>scrollTree</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixTree"> + <properties> + <property name="name" type="String"><value>tree</value></property> + </properties> + <signals> + <signal name="clicked" argument="false" handler="onTreeClicked"/> + </signals> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="position" type="Enum"><value><enum type="String" select="2"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> + </layout> + <WidgetContainer id="GuixSpliter"> + <properties> + <property name="name" type="String"><value>horizontalSpliter</value></property> + <property name="orientation" type="Enum"><value><enum type="int" select="1"><item>0</item><item>1</item></enum></value></property> + <property name="dividerSize" type="int"><value>9</value></property> + <property name="express" type="boolean"><value>true</value></property> + </properties> + <children> + <child> + <layout> + <property name="position" type="Enum"><value><enum type="String" select="1"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> + </layout> + <WidgetContainer id="GuixTabbedPane"> + <properties> + <property name="name" type="String"><value>tabProperties</value></property> + <property name="childCount" type="int"><value>3</value></property> + </properties> + <children> + <child> + <layout> + <property name="text" type="String"><value>Properties</value></property> + <property name="position" type="int"><value>0</value></property> + </layout> + <WidgetContainer id="GuixScrollPane"> + <properties> + <property name="name" type="String"><value>scrollProperties</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixTable"> + <properties> + <property name="name" type="String"><value>tableProperties</value></property> + </properties> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="position" type="int"><value>1</value></property> + <property name="text" type="String"><value>Container Properties</value></property> + </layout> + <WidgetContainer id="GuixScrollPane"> + <properties> + <property name="name" type="String"><value>scrollContainerProperties</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixTable"> + <properties> + <property name="name" type="String"><value>tableContainerProperties</value></property> + </properties> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="text" type="String"><value>Signals</value></property> + <property name="position" type="int"><value>2</value></property> + </layout> + <WidgetContainer id="GuixGridBag"> + <properties> + <property name="name" type="String"><value>gridSignals</value></property> + </properties> + <children> + <child> + <layout> + <property name="weighty" type="double"><value>0.0</value></property> + </layout> + <WidgetComponent id="GuixComboBox"> + <properties> + <property name="name" type="String"><value>comboAllSignals</value></property> + </properties> + </WidgetComponent> + </child> + <child> + <layout> + <property name="weightx" type="double"><value>0.0</value></property> + <property name="weighty" type="double"><value>0.0</value></property> + <property name="x" type="int"><value>1</value></property> + </layout> + <WidgetComponent id="GuixButton"> + <properties> + <property name="name" type="String"><value>addSignal</value></property> + <property name="text" type="String"><value>add</value></property> + </properties> + <signals> + <signal name="clicked" argument="false" handler="onAddSignal"/> + </signals> + </WidgetComponent> + </child> + <child> + <layout> + <property name="x" type="int"><value>0</value></property> + <property name="y" type="int"><value>1</value></property> + <property name="width" type="int"><value>2</value></property> + </layout> + <WidgetContainer id="GuixScrollPane"> + <properties> + <property name="name" type="String"><value>scrollSignals</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixTable"> + <properties> + <property name="name" type="String"><value>tableSignals</value></property> + </properties> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="position" type="Enum"><value><enum type="String" select="0"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> + </layout> + <WidgetContainer id="GuixGridBag"> + <properties> + <property name="name" type="String"><value>GuixGridBag1</value></property> + </properties> + <children> + <child> + <layout> + <property name="weightx" type="double"><value>0.0</value></property> + <property name="weighty" type="double"><value>0.0</value></property> + </layout> + <WidgetComponent id="GuixButton"> + <properties> + <property name="name" type="String"><value>GuixButton16</value></property> + <property name="text" type="String"><value>Selection</value></property> + </properties> + <signals> + <signal name="clicked" argument="false" handler="onSelectionButton"/> + </signals> + </WidgetComponent> + </child> + <child> + <layout> + <property name="y" type="int"><value>1</value></property> + <property name="width" type="int"><value>2</value></property> + </layout> + <WidgetContainer id="GuixTabbedPane"> + <properties> + <property name="name" type="String"><value>tabTools</value></property> + <property name="childCount" type="int"><value>4</value></property> + </properties> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="weighty" type="double"><value>0.0</value></property> + </layout> + <WidgetContainer id="GuixGrid"> + <properties> + <property name="name" type="String"><value>toolbar</value></property> + </properties> + <children> + <child> + <layout> + <property name="x" type="int"><value>8</value></property> + </layout> + <WidgetComponent id="GuixCheckBox"> + <properties> + <property name="name" type="String"><value>checkboxDesignTime</value></property> + <property name="text" type="String"><value>Design</value></property> + <property name="selected" type="boolean"><value>true</value></property> + </properties> + <signals> + <signal name="itemStateChanged" argument="true" handler="onDesignTime"/> + </signals> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="y" type="int"><value>2</value></property> + <property name="weighty" type="double"><value>0.0</value></property> + </layout> + <WidgetComponent id="GuixLabel"> + <properties> + <property name="name" type="String"><value>statusBar</value></property> + <property name="text" type="String"><value> </value></property> + </properties> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetWindow> + <WidgetWindow id="GuixWindowNG"> + <properties> + <property name="name" type="String"><value>GuixWindowNG1</value></property> + </properties> + <children> + <child> + <WidgetContainer id="GuixMenuBar"> + <properties> + <property name="name" type="String"><value>MenuBar</value></property> + </properties> + <children> + <child> + <WidgetContainer id="GuixMenu"> + <properties> + <property name="name" type="String"><value>GuixMenu1</value></property> + <property name="text" type="String"><value>File</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem1</value></property> + <property name="text" type="String"><value>new</value></property> + <property name="icon" type="Resource"><value></value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onNew"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem2</value></property> + <property name="text" type="String"><value>load</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onLoad"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem3</value></property> + <property name="text" type="String"><value>save</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onSave"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem4</value></property> + <property name="text" type="String"><value>export</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onExport"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem8</value></property> + <property name="text" type="String"><value>preview</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onPreview"/> + </signals> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <WidgetContainer id="GuixMenu"> + <properties> + <property name="name" type="String"><value>GuixMenu2</value></property> + <property name="text" type="String"><value>Edit</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem5</value></property> + <property name="text" type="String"><value>ajouter le composant</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onAddComponent"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem6</value></property> + <property name="text" type="String"><value>couper</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onCouper"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem7</value></property> + <property name="text" type="String"><value>coller</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onColler"/> + </signals> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <WidgetContainer id="GuixMenu"> + <properties> + <property name="name" type="String"><value>GuixMenu3</value></property> + <property name="text" type="String"><value>help</value></property> + </properties> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetWindow> +</GuixApplication> diff --git a/eugene/src/site/rst/exemple.topiaModel b/eugene/src/site/rst/exemple.topiaModel new file mode 100644 index 0000000..b270284 --- /dev/null +++ b/eugene/src/site/rst/exemple.topiaModel @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<topiaModel xmlns:topia="http://www.codelutin.org/topia/topiaModel"> + <class name="Person" stereotype="entity" package="org.codelutin.test"> + <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + </class> + <class name="Employee" type="entity" extends="org.codelutin.test.Person" package="org.codelutin.test"> + <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Company"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + </class> + <class name="Company" type="entity" package="org.codelutin.test"> + <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + <attribute multiplicity="n" name="address" visibility="public" type="org.codelutin.test.Employee"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + <operation name="getTime" visibility="public" returnType="int"> + <parameter name="year" type="org.codelutin.Employee"/> + </operation> + </class> +</topiaModel> diff --git a/eugene/src/site/rst/generatorHelp.txt b/eugene/src/site/rst/generatorHelp.txt new file mode 100644 index 0000000..f4b9d41 --- /dev/null +++ b/eugene/src/site/rst/generatorHelp.txt @@ -0,0 +1,89 @@ + +How to create a UML model for use with Eugene +--------------------------------------------- + +In Poseidon, + - Create an empty project + - Rename root package to your application name (used by ???) + - create a package hierarchy according to your company name and project organisation (eg : org.codelutin.jdevis.entities) + - Create a class diagram is this package, so that classes you will define to it will belong to this package at creation. + - Make a model of your entities : + - All entities must be stereotyped 'entity' + - You may use both class and interface + - You may set several taggedValues on all items : + - doc : documentation related to this item, used for javadoc comments (not used yet) + - You may set several taggedValues on classes : + - asText : OCL expression used as for toString() method generation (eg : this.firstName+" "+this.lastName) + - You may set several taggedValues on attributes : + - readonly : boolean that indicates if change must be made impossible on this attribute (used for setter generation) + - mandatory : boolean that indicates if this attribute is mandatory (used to build a minimal not empty constructor) + - defines : boolean that indicates if this attribute is needed for defining the class (used for default UIs) + - primaryKey : boolean that indicates if this attribute is part of the primary key for the class (not used yet) + - indexed : boolean that indicates if it must be possible to search items by this attribute (not used yet) + + + +TopiaUI : +--------- + +<topiaUI xmlns="http://www.codelutin.org/topia/topiaUI" name="XXX"> + <content> + <item> + <containmentProperties> + <property name="_containementPropertyName_" type="_containementPropertyType_">XXX</property> + </containmentProperties> + <widget name="XXX" type="_widgetType_"> + <properties> + <property name="_propertyName_" type="_propertyType_">XXX</property> + </properties> + <signals> + <signal name="_signalName_" handler="XXX"/> + </signals> + <content> + <item> + ... + </item> + ... + </content> + </widget> + </item> + ... + </content> +</topiaUI> + +widgetType : + gridBag + panel + scrollPane + table + label + textfield + button + +properties : + minimumWidth of type int + minimumHeight of type int + preferedWidth of type int + preferedHeight of type int + maximumWidth of type int + maximumHeight of type int + text of type String (default to "") + editable of type boolean (default to true) + borderType of type String = {"SoftBevelBorder", "EtchedBorder"} + borderDepth of type String = {"LOWERED", "RAISED"} + borderText of type String + +containmentProperties : + gridX of type int (default to 0) + gridY of type int (default to 0) + gridWidth of type int (default to 1) + gridHeight of type int (default to 1) + anchor of type String = {"CENTER", "NORTH", "SOUTH", "EAST", "WEST", "NORTHEAST", "NORTHWEST", "SOUTHEAST", "SOUTHWEST"} (default to CENTER) + fill of type String = {"HORIZONTAL", "VERTICAL", "BOTH", "NONE"} (default to BOTH) + weightX of type double (default to 1.0) + weightY of type double (default to 1.0) + insetTop of type int (default to 2) + insetBottom of type int (default to 2) + insetLeft of type int (default to 2) + insetRight of type int (default to 2) + diff --git a/eugene/src/site/rst/index.rst b/eugene/src/site/rst/index.rst new file mode 100755 index 0000000..75a9462 --- /dev/null +++ b/eugene/src/site/rst/index.rst @@ -0,0 +1,80 @@ +====== +Eugene +====== + +.. contents:: + + +Origine du projet +----------------- + +Eugene est né à la suite d'une recherche de générateur de code basé sur +un modèle mémoire simple qui s'est terminée par un échec. + +Les projets alors étudiés étaient alors entre autres : + +- Jostraca ; +- EMF ; +- ... + +Le choix de la génération de code par rapport à l'introspection a été fait car +la génération code permet de passer par l'étape compilation et donc de +validation du code généré. En effet, si le besoin était initialement porté sur +de la génération de code Java, Eugene a été pensé pour générer tout type +de code. + + +Côté technique +-------------- + +Eugene permet l'utilisation d'un ensemble de générateurs. Ces +générateurs sont abstraits de toute spécificité permettant ainsi de les adapter +en fonction des besoins. + +Par défaut, Eugene propose trois implantations de ces générateurs : + +- ObjectModelGenerator (génération à partir d'un modèle objet) ; +- StateModelGenerator (génération à partir d'un modèle d'états) ; +- UIModelGenerator (génération à partir d'un modèle graphique). + +Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode +de fonctionnement... + +Cependant, ces générateurs sont inutiles sans des templates de génération. Les +templates sont les fichiers qui vont permettre de déterminer quel sera le +contenu généré en fonction du modèle initial. Grâce à LutinProcessor_, ces +templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les +portions de code Java avec les portions de code généré. Le rôle de +LutinProcessor est de transformer ces templates en remplaçant la syntaxe JSP par +la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être +compilées et deviennent autonomes. + +.. _LutinProcessor: http://lutinprocessor.labs.libre-entreprise.org/ + +Règle ant +--------- + +Voici un exemple d'utilisation de la règle ant. + +:: + + <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask" + classpath="${compile.classpath}:${targetbuild}:${resources}" /> + + <target name="generate" description="generate"> + <generator srcdir="${modelDir}" destdir="${targetgen}" + resolver="org.nuiton.exemple.ResourceResolver" + templates="org.nuiton.example.JavaBeanGenerator" + properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton" + classpath="${compile.classpath}:${targetbuild}:${resources}" /> + </target> + +Dans cette exemple, un template de génération sera apliqué sur tous les +fichiers. + +Plugin maven +------------ + +Un plugin maven est disponnible à l'adresse suivante +http://lutingenerator.labs.libre-entreprise.org/maven-eugene-plugin . Il permet l'utilisation +depuis maven de Eugene. diff --git a/eugene/src/site/rst/plugineclipse.rst b/eugene/src/site/rst/plugineclipse.rst new file mode 100644 index 0000000..e3ad177 --- /dev/null +++ b/eugene/src/site/rst/plugineclipse.rst @@ -0,0 +1,44 @@ +Installation du plugin LutinGenerator +===================================== + +Ce guide détail comment installer le plugin eclipse LutinGenerator via +l'update site (assitant d'instalation de plugins). + +Installation +------------ + +Ouvrez l'assitant d'installation de plugin via le menu +(Help/Software Updates/Find and install...). + +.. image:: images/plugin_menu.png + +Sur la fenêtre suivante sélectionnez "Search for new features to install". + +.. image:: images/plugin_typeinstall.png + +Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le +dépot "LutinGenerator". + +L'adresse du dépot à utiliser est : + +:: + + http://lutingenerator.labs.libre-entreprise.org/eclipse/ + +.. image:: images/plugin_newdepot.png + + +Sélectionnez ensuite ce dépot et cliquez sur "Finish". + +Installez ensuite la dernière version disponible et redémarrez eclipse: + +.. image:: images/plugin_choix.png + + +Utilisation +----------- + +Pour disposer de la coloration des templates, cliquez droit sur un fichier +source java et sélectionnez "Open with > / LutinGenerator Template Editor" + +.. image:: images/plugin_utilisation_editeur.png \ No newline at end of file diff --git a/eugene/src/site/site.xml b/eugene/src/site/site.xml new file mode 100644 index 0000000..099c811 --- /dev/null +++ b/eugene/src/site/site.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + </bannerLeft> + + <body> + + <breadcrumbs> + <item name="${project.name}" href="${project.url}" /> + </breadcrumbs> + + <menu ref="parent"/> + + <menu name="Utilisateur"> + <item href="index.html" name="Accueil"/> + </menu> + + <menu name="Téléchargement"> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar" + name="Librairie (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" + name="Javadoc (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" + name="Sources (jar)"/> + </menu> + + <menu name="Developpeur"> + <item name="ObjectModel" href="ObjectModel.html"/> + <item name="StateModel" href="StateModel.html"/> + <item name="UIModel" href="DevUIDoc.html"/> + <item name="Todo" href="Todo.html"/> + </menu> + + <menu ref="reports"/> + + </body> +</project> diff --git a/eugene/src/test/java/org/nuiton/eugene/GeneratorTaskTest.java b/eugene/src/test/java/org/nuiton/eugene/GeneratorTaskTest.java new file mode 100644 index 0000000..421576e --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/GeneratorTaskTest.java @@ -0,0 +1,212 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.IOException; + +import org.apache.tools.ant.BuildLogger; +import org.apache.tools.ant.NoBannerLogger; +import org.apache.tools.ant.Project; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.util.FileUtil; +import org.nuiton.util.ResourceResolver; + +/** + * Test class for Generator Ant task. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class GeneratorTaskTest { + + /** + * All test common task instanciation. + * + * @return task + */ + protected GeneratorTask getGeneratorTask() { + Project antProject = new Project(); + + BuildLogger logger = new NoBannerLogger(); + logger.setMessageOutputLevel(Project.MSG_DEBUG); + logger.setOutputPrintStream(System.out); + logger.setErrorPrintStream(System.err); + antProject.addBuildListener(logger); + + GeneratorTask generatorTask = new GeneratorTask(); + generatorTask.setProject(antProject); + generatorTask.setTaskName("Eugene"); + + return generatorTask; + } + + /** + * Test generation with ant task. + * + * @throws IOException + */ + @Test + public void testGenerateXMI12() throws IOException { + + GeneratorTask generatorTask = getGeneratorTask(); + + /* Configuration */ + generatorTask.setOverwrite(true); + generatorTask.setBuilddirectory("target/anttest"); + generatorTask.setTemplates(ObjectModelGenerator.class.getName()); + generatorTask.setSrcdir(new File("target/test-classes/xmi/1.2")); + generatorTask.setEncoding("UTF-8"); + + File destDirGen = FileUtil.createTempDirectory( + "1.2-", "", new File("target", "ant")); + destDirGen.mkdirs(); + generatorTask.setDestdir(destDirGen); + generatorTask.setBuilddirectory(destDirGen.getAbsolutePath()); + + generatorTask.setProperties("defaultPackage=org.nuiton"); + + generatorTask.setIncludes("**/*.xmi"); + + generatorTask.execute(); + + // TODO Check result + + // remove created temp dir + FileUtil.deleteRecursively(destDirGen); + } + + /** + * Test generation with ant task. + * + * @throws IOException + */ + @Test + public void testGenerateXMI21() throws IOException { + + GeneratorTask generatorTask = getGeneratorTask(); + + /* Configuration */ + generatorTask.setOverwrite(true); + generatorTask.setTemplates(ObjectModelGenerator.class.getName()); + generatorTask.setSrcdir(new File("target/test-classes/xmi/2.1")); + generatorTask.setEncoding("UTF-8"); + generatorTask.setResolver(ResourceResolver.class.getName()); + + File destDirGen = FileUtil.createTempDirectory( + "2.1-", "", new File("target", "ant")); + destDirGen.mkdirs(); + generatorTask.setDestdir(destDirGen); + generatorTask.setBuilddirectory(destDirGen.getAbsolutePath()); + + generatorTask.setProperties("defaultPackage=org.nuiton"); + + generatorTask.setIncludes("**/*.uml"); + + generatorTask.execute(); + + // TODO Check result + + // remove created temp dir + FileUtil.deleteRecursively(destDirGen); + } + + /** + * Test generation with ant task. + * + * @throws IOException + */ + @Test + public void testGenerateXMIObjectModel() throws IOException { + + GeneratorTask generatorTask = getGeneratorTask(); + + /* Configuration */ + generatorTask.setOverwrite(true); + generatorTask.setTemplates(ObjectModelGenerator.class.getName()); + generatorTask.setSrcdir(new File("target/test-classes/models/")); + generatorTask.setEncoding("UTF-8"); + + File destDirGen = FileUtil.createTempDirectory( + "objectmodel-", "", new File("target", "ant")); + destDirGen.mkdirs(); + generatorTask.setDestdir(destDirGen); + generatorTask.setBuilddirectory(destDirGen.getAbsolutePath()); + + generatorTask.setProperties("defaultPackage=org.nuiton"); + + generatorTask.setIncludes("**/*.objectmodel"); + + generatorTask.execute(); + + // TODO Check result + + // remove created temp dir + FileUtil.deleteRecursively(destDirGen); + } + + /** + * Test generation with ant task. + * + * @throws IOException + */ + @Test + public void testCopyPropertiesFile() throws IOException { + + GeneratorTask generatorTask = getGeneratorTask(); + + /* Configuration */ + generatorTask.setOverwrite(true); + generatorTask.setTemplates(ObjectModelGenerator.class.getName()); + generatorTask.setSrcdir(new File("target/test-classes/xmi/2.1")); + generatorTask.setEncoding("UTF-8"); + generatorTask.setResolver(ResourceResolver.class.getName()); + + File destDirGen = FileUtil.createTempDirectory( + "objectmodel-", "", new File("target", "ant")); + destDirGen.mkdirs(); + generatorTask.setDestdir(destDirGen); + generatorTask.setBuilddirectory(destDirGen.getAbsolutePath()); + + generatorTask.setProperties("defaultPackage=org.nuiton"); + + generatorTask.setIncludes("**/TestXMI21.uml"); + + generatorTask.execute(); + + File modelFolder = new File(destDirGen, "models"); + String[] folderFiles = modelFolder.list(); + Assert.assertEquals(2, folderFiles.length); + for (String filePath : folderFiles) { + File file = new File(filePath); + if (!"TestXMI21.objectmodel".equals(file.getName()) + && !"TestXMI21.properties".equals(file.getName())) { + Assert.fail("Unexpected file: " + filePath + + ". Should be TestXMI21.objectmodel or TestXMI21.properties"); + } + } + + // remove created temp dir + FileUtil.deleteRecursively(destDirGen); + } +} diff --git a/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java b/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java new file mode 100644 index 0000000..e450370 --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java @@ -0,0 +1,86 @@ +package org.nuiton.eugene; + +import java.io.Serializable; +import java.util.List; + +import junit.framework.TestCase; + +public class ImportsManagerTest extends TestCase { + + private ImportsManager mgr; + + @Override + protected void setUp() throws Exception { + mgr = new ImportsManager(); + } + + public void testAddImport() throws Exception { + assertTrue(mgr.addImport("org.nuiton.eugene.Toto")); + assertTrue(mgr.addImport("org.nuiton.eugene.Toto")); //Repeat to test acceptance + assertTrue(mgr.addImport("org.nuiton.eugene.Tutu")); + assertFalse(mgr.addImport("org.chorem.eugene.Tutu")); //Conflict, package differs + + assertTrue(mgr.addImport("void")); + assertTrue(mgr.addImport("boolean")); + assertTrue(mgr.addImport("Byte")); + assertTrue(mgr.addImport("java.lang.Toto")); + assertFalse(mgr.addImport("java.lang.sub.Toto")); + + assertTrue(mgr.addImport(Serializable.class)); + assertFalse(mgr.addImport("org.nuiton.eugene.Serializable")); + } + + public void testGetType() throws Exception { + assertEquals("Toto", mgr.getType("org.nuiton.eugene.Toto")); + assertEquals("Toto", mgr.getType("org.nuiton.eugene.Toto")); //Repeat to test acceptance + assertEquals("Tutu", mgr.getType("org.nuiton.eugene.Tutu")); + assertEquals("org.chorem.eugene.Tutu", mgr.getType("org.chorem.eugene.Tutu")); //Conflict, package differs + + assertEquals("void", mgr.getType("void")); + assertEquals("boolean", mgr.getType("boolean")); + assertEquals("Byte", mgr.getType("Byte")); + assertEquals("Toto", mgr.getType("java.lang.Toto")); + assertEquals("java.lang.sub.Toto", mgr.getType("java.lang.sub.Toto")); + } + + public void testGetImports() throws Exception { + assertTrue(mgr.addImport("org.nuiton.eugene.Toto")); + assertTrue(mgr.addImport("org.nuiton.eugene.Tutu")); + assertTrue(mgr.addImport("org.nuiton.eugene.subpackage.Tata")); + List<String> imports = mgr.getImports("org.nuiton.eugene"); + assertEquals(1, imports.size()); + assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(0)); + + imports = mgr.getImports("org.nuiton"); + assertEquals(3, imports.size()); + // Check using alphabetic sort + assertEquals("org.nuiton.eugene.Toto", imports.get(0)); + assertEquals("org.nuiton.eugene.Tutu", imports.get(1)); + assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(2)); + + imports = mgr.getImports("org.chorem"); + assertEquals(3, imports.size()); + + imports = mgr.getImports("org.nuiton.eugene.subpackage"); + assertEquals(2, imports.size()); + assertEquals("org.nuiton.eugene.Toto", imports.get(0)); + assertEquals("org.nuiton.eugene.Tutu", imports.get(1)); + + assertTrue(mgr.addImport("java.lang.String")); + imports = mgr.getImports("org.nuiton.eugene.subpackage"); + assertEquals(2, imports.size()); + assertEquals("org.nuiton.eugene.Toto", imports.get(0)); + assertEquals("org.nuiton.eugene.Tutu", imports.get(1)); + + assertTrue(mgr.addImport("void")); + assertTrue(mgr.addImport("boolean")); + assertTrue(mgr.addImport("Byte")); + assertTrue(mgr.addImport("java.lang.Toto")); + assertFalse(mgr.addImport("java.lang.sub.Titi")); // Read as started, import is refused + assertTrue(mgr.addImport("org.nuiton.eugene.Tutu")); //Already present, must not reject + imports = mgr.getImports("org.nuiton.eugene.subpackage"); + assertEquals(2, imports.size()); + + } + +} diff --git a/eugene/src/test/java/org/nuiton/eugene/ObjectModelGeneratorTest.java b/eugene/src/test/java/org/nuiton/eugene/ObjectModelGeneratorTest.java new file mode 100644 index 0000000..06714fb --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/ObjectModelGeneratorTest.java @@ -0,0 +1,96 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package org.nuiton.eugene; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.Assert; + +import org.junit.Test; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl; + +/** + * Test des fonctions de ObjectModelGenerator. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ObjectModelGeneratorTest { + + @Test + public void testCanGenerate() { + + ObjectModelGenerator generator = new ObjectModelGenerator(); + + // test with null generated list + Assert.assertTrue(generator.canGenerateElement(new ObjectModelElementImpl())); + Assert.assertTrue(generator.canGenerateElement(new ObjectModelClassImpl())); + + List<String> generatedPackages = new ArrayList<String>(); + generatedPackages.add("org.nuiton.eugene"); + + generator.setGeneratedPackages(generatedPackages); + + // Still true + Assert.assertTrue(generator.canGenerateElement(new ObjectModelElementImpl())); + // become false + Assert.assertFalse(generator.canGenerateElement(new ObjectModelClassImpl())); + + ObjectModelClassImpl testClass = new ObjectModelClassImpl(); + testClass.setPackage("org.nuiton.eugene"); + Assert.assertTrue(generator.canGenerateElement(testClass)); + + testClass.setPackage("org.nuiton"); + Assert.assertFalse(generator.canGenerateElement(testClass)); + + testClass.setPackage("org.nuiton.eugene.entities"); + Assert.assertTrue(generator.canGenerateElement(testClass)); + + testClass.setPackage("org.nuiton.eugene2"); + Assert.assertFalse(generator.canGenerateElement(testClass)); + + testClass.setPackage("org.nuiton.eugene2.entities"); + Assert.assertFalse(generator.canGenerateElement(testClass)); + + // test avec les generators recursifs + // sans faire de set sur le fils + ObjectModelGenerator childGenerator = new ObjectModelGenerator(generator); + + testClass.setPackage("org.nuiton.eugene"); + Assert.assertTrue(childGenerator.canGenerateElement(testClass)); + + testClass.setPackage("org.nuiton"); + Assert.assertFalse(childGenerator.canGenerateElement(testClass)); + + testClass.setPackage("org.nuiton.eugene.entities"); + Assert.assertTrue(childGenerator.canGenerateElement(testClass)); + + testClass.setPackage("org.nuiton.eugene2"); + Assert.assertFalse(childGenerator.canGenerateElement(testClass)); + + testClass.setPackage("org.nuiton.eugene2.entities"); + Assert.assertFalse(childGenerator.canGenerateElement(testClass)); + + } +} diff --git a/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java b/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java new file mode 100644 index 0000000..bdab1ac --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java @@ -0,0 +1,100 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.junit.Test; +import org.nuiton.util.Resource; +import org.xml.sax.EntityResolver; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; +import org.xml.sax.helpers.DefaultHandler; + +/** + * StateModelTest.java + * + * @author chatellier + * @version $Revision: 440 $ + * <p/> + * Last update : $Date: 2009-02-18 18:16:21 +0100 (mer 18 fév 2009) $ + * By : $Author: chatellier $ + */ +public class StateModelDTDTest { + + /** + * Test la validation des DTD sur les modeles XML. + * @throws SAXException + * @throws ParserConfigurationException + * @throws IOException + * @throws URISyntaxException + * + * FIXME this test doesn't valid anything + */ + @Test + public void testCorrectStateModel() throws ParserConfigurationException, SAXException, IOException, URISyntaxException { + + File[] testFiles = { + new File(Resource.getURL("models/statemodel/project.statemodel").toURI()), + new File(Resource.getURL("models/statemodel/contact.statemodel").toURI()) + }; + + for( File file : testFiles) { + SAXParserFactory factory = SAXParserFactory.newInstance(); + factory.setValidating(true); + factory.setNamespaceAware(true); + SAXParser parser = factory.newSAXParser(); + + // --- Set Input source + InputSource source = new InputSource(new FileInputStream(file)); + + // --- parse + XMLReader reader = parser.getXMLReader(); + reader.setContentHandler(new DefaultHandler()); + reader.setErrorHandler(new DefaultHandler()); + reader.setEntityResolver( new EntityResolver() { + @Override + public InputSource resolveEntity(String publicId, String systemId) + throws SAXException, IOException { + + String dtd = systemId.substring(systemId.lastIndexOf("/")); + + URL url = Resource.getURL("dtd/" + dtd); + InputSource source; + try { + source = new InputSource(new FileInputStream(new File(url.toURI()))); + } catch (URISyntaxException e) { + throw new SAXException(e); + } + + return source; + } + }); + reader.parse(source); + } + } +} \ No newline at end of file diff --git a/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java b/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java new file mode 100644 index 0000000..fb9bdc3 --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java @@ -0,0 +1,142 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.state; + +import java.io.File; +import java.net.URISyntaxException; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.eugene.StateModelGenerator; +import org.nuiton.util.Resource; + +/** + * StateModelTest.java + * + * @author chatellier + * @version $Revision$ + * <p/> + * Last update : $Date$ + * By : $Author$ + */ +public class StateModelTest { + + /** model */ + protected StateModel stateModel; + + /** init + * @throws URISyntaxException */ + @Before + public void setUp() throws URISyntaxException { + + File[] testFiles = { + new File(Resource.getURL("models/statemodel/project.statemodel").toURI()), + new File(Resource.getURL("models/statemodel/contact.statemodel").toURI()) + }; + + StateModelGenerator generator = new StateModelGenerator(); + generator.generate(testFiles, new File("output")); + stateModel = generator.getModel(); + } + + /** various test */ + @Test + public void testCorrectStateModel() { + List<StateModelStateChart> lstChart = stateModel.getStateCharts(); + + // trois diagrammes + Assert.assertTrue(lstChart.size() == 3); + + // les 3 ont des états + for (StateModelStateChart chart : lstChart) { + Assert.assertFalse(chart.getStates().isEmpty()); + } + + // diagramme contactManagementUseCase + StateModelStateChart cmChart = null; + for (StateModelStateChart smsc : lstChart) { + if ("contactManagementUseCase".equals(smsc.getName())) { + cmChart = smsc; + } + } + Assert.assertNotNull(cmChart); + + // package + Assert.assertEquals(cmChart.getPackageName(), "org.codelutin.chorem.web.contactManagement"); + + // six etats + Collection<StateModelState> lstStates = cmChart.getStates(); + Assert.assertEquals(lstStates.size(), 6); + + // le premier etat est initial + StateModelState initState = null; + StateModelState sfUCState = null; + for (StateModelState state : lstStates.toArray(new StateModelState[lstStates.size()])) { + if ("initContact".equals(state.getName())) { + initState = state; + } + if ("societyFormUC".equals(state.getName())) { + sfUCState = state; + } + } + + // test init + Assert.assertNotNull(initState); + Assert.assertFalse(initState.isComplex()); + StateModelSimpleState sInitState = (StateModelSimpleState) initState; + Assert.assertTrue(sInitState.isInitial()); + + // les 3eme etat est complexe et a 4 etat + Assert.assertNotNull(sfUCState); + StateModelComplexState cpxState = (StateModelComplexState) sfUCState; + Assert.assertEquals(cpxState.getStates().size(), 4); + + // test sur un etat + Collection<StateModelState> lstStatesCpxState = cpxState.getStates(); + StateModelState sfState = null; + for (StateModelState state : lstStatesCpxState.toArray(new StateModelState[lstStatesCpxState.size()])) { + if ("societyForm".equals(state.getName())) { + sfState = state; + } + } + Assert.assertNotNull(sfState); + Assert.assertEquals(sfState.getTransitions().size(), 2); + + // test transition + StateModelTransition trEventCancel = null; + for (StateModelTransition tr : sfState.getTransitions()) { + if ("cancel".equals(tr.getEvent())) { + trEventCancel = tr; + } + } + Assert.assertNotNull(trEventCancel); + Assert.assertNotNull(trEventCancel.getDestinationState()); + Assert.assertEquals(trEventCancel.getDestinationState().getName(), "finalSocietyFormCancel"); + + // tagged value test + Map<String, String> tagValues = stateModel.getTagValues(); + Assert.assertNotNull(tagValues); + String tagUseCaseEngineExtendedClass = tagValues.get("usecaseengineextendedclass"); + Assert.assertNotNull(tagUseCaseEngineExtendedClass); + Assert.assertEquals(tagUseCaseEngineExtendedClass, "BasePage"); + } +} diff --git a/eugene/src/test/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParserTest.java b/eugene/src/test/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParserTest.java new file mode 100644 index 0000000..ca9c280 --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParserTest.java @@ -0,0 +1,126 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.ui.javaxml; + +import java.io.File; +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.eugene.models.ui.UIModel; +import org.nuiton.eugene.models.ui.impl.UIModelChildImpl; +import org.nuiton.eugene.models.ui.impl.UIModelEventImpl; +import org.nuiton.eugene.models.ui.impl.UIModelObjectImpl; +import org.nuiton.util.Resource; + +/** + * JavaXMLParserTest. + * + * Created: Aug 9, 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * Copyright Code Lutin + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class JavaXMLParserTest { // JavaXMLParserTest + + @Test + public void testParse() throws Exception { + + // 1 panel, 2 boutons, gridbaglayout + File testFile = new File(Resource.getURL("models/uimodel/test.javaxml").toURI()); + + // 1 panel, 1 bouton, borderlayout + File testFile1 = new File(Resource.getURL("models/uimodel/test1.javaxml").toURI()); + + // alarmPanel de Chorem dans une JFrame + File testFile2 = new File(Resource.getURL("models/uimodel/test2.javaxml").toURI()); + + if (testFile.exists() && testFile1.exists() && testFile2.exists()) { + + JavaXMLParser parser = new JavaXMLParser(); + UIModel ui = parser.parse(testFile); + UIModel ui1 = parser.parse(testFile1); + UIModel ui2 = parser.parse(testFile2); + //UIModel ui3 = parser.parse(testFile3); + + //System.out.println("UI : \n" + ui); + //System.out.println("UI1 : \n" + ui1); + //System.out.println("UI2 : \n" + ui2); + //System.out.println("UI3 : \n" + ui3); + + // test si l'element racine est parse + Assert.assertNotNull(ui.getRoot()); + Assert.assertNotNull(ui.getRoot().getName()); + + // tests sur tous les elements du root + Assert.assertTrue(ui.getRoot().getArguments().size() == 0); + Assert.assertTrue(ui.getRoot().getChildren().size() == 2); + Assert.assertTrue(ui.getRoot().getEvents().size() == 1); + Assert.assertTrue(ui.getRoot().getProperties().size() == 2); + + // test si le layout est bien recupere + UIModelObjectImpl object = (UIModelObjectImpl) ui.getRoot().getProperty("layout").getValue(); + + Assert.assertEquals(object.getType(), "java.awt.GridBagLayout"); + + // test sur un event de l'enfant + List<?> children = (List<?>) ui.getRoot().getChildren(); + UIModelChildImpl child = (UIModelChildImpl) children.get(0); + + List<?> events = (List<?>) child.getObject().getEvents(); + UIModelEventImpl event = (UIModelEventImpl) events.get(0); + + Assert.assertEquals(event.getAction(), "actionPerformed"); + Assert.assertNotNull(event.getAddMethod()); + + // test sur constraint de l'enfant + UIModelObjectImpl constraint = (UIModelObjectImpl) child.getConstraint().getValue(); + List<?> argConstraint = (List<?>) constraint.getArguments(); + + Assert.assertEquals(constraint.getType(), "java.awt.GridBagConstraints"); + + Assert.assertEquals(argConstraint.get(1).toString(), "0"); + + // test sur le nombre d'enfant d'un enfant + Assert.assertTrue(child.getObject().getChildren().size() == 0); + + // test sur une contrainte string (BorderLayout) + List<?> children1 = (List<?>) ui1.getRoot().getChildren(); + UIModelChildImpl child1 = (UIModelChildImpl) children1.get(0); + + Object constraint1 = child1.getConstraint().getValue(); + Assert.assertEquals(constraint1, "Center"); + + // test sur le nombre d'enfants d'une Frame est correct + List<?> children2 = (List<?>) ui2.getRoot().getChildren(); + Assert.assertTrue(children2.size() == 1); + + // test sur une contrainte d'un panel genere + UIModelChildImpl child2 = (UIModelChildImpl) children2.get(0); + + Object constraint2 = child2.getConstraint().getValue(); + Assert.assertEquals(constraint2, "Center"); + } + } + +} // JavaXMLParserTest + diff --git a/eugene/src/test/java/org/nuiton/eugene/models/xml/ModelMergeTest.java b/eugene/src/test/java/org/nuiton/eugene/models/xml/ModelMergeTest.java new file mode 100644 index 0000000..872dfab --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/models/xml/ModelMergeTest.java @@ -0,0 +1,105 @@ +/* *##% Eugene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.nuiton.eugene.models.xml; + +import java.io.File; +import java.net.URISyntaxException; +import java.net.URL; + +import org.junit.Test; +import org.nuiton.eugene.ObjectModelGenerator; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.util.Resource; + +/** + * ModelMergeTest. + * + * Created: 18 mai 2005 + * + * @author Arnaud Thimel <thimel@codelutin.com> + * @version $Revision$ + */ +public class ModelMergeTest { + + @Test + public void testMerge1() throws URISyntaxException { + parcourirModel(genModel(1)); + } + + @Test + public void testMerge2() throws URISyntaxException { + parcourirModel(genModel(2)); + } + + @Test + public void testMerge3() throws URISyntaxException { + parcourirModel(genModel(3)); + } + + @Test + public void testMerge4() throws URISyntaxException { + parcourirModel(genModel(4)); + } + + @Test + public void testMerge5() throws URISyntaxException { + parcourirModel(genModel(5)); + } + + @Test + public void testMerge6() throws URISyntaxException { + parcourirModel(genModel(6)); + } + + protected ObjectModel genModel(int num) throws URISyntaxException { + System.out.println("\n\n============================================\n\t\ttestMerge" + num + "\n============================================"); + ObjectModelGenerator generator = new ObjectModelGenerator(); + File[] files = new File[num]; + for (int j = 1; j < (num + 1); j++) { + URL url = Resource.getURL("models/objectmodel/security" + j + ".objectmodel"); + files[j - 1] = new File(url.toURI()); + } + generator.generate(files, new File("target")); + return generator.getModel(); + } + + protected void parcourirModel(ObjectModel model) { + System.out.println(":::: model tag: " + model.getTagValues()); + for (Object o3 : model.getClasses()) { + ObjectModelClass clazz = (ObjectModelClass) o3; + System.out.println("\n********* Class : " + clazz.getQualifiedName()); + System.out.println("--- Attributs :"); + for (Object o2 : clazz.getAttributes()) { + System.out.println("\t" + o2); + } + System.out.println("--- Operations :"); + for (Object o1 : clazz.getOperations()) { + System.out.println("\t" + o1); + } + System.out.println("--- Interfaces :"); + for (Object o : clazz.getInterfaces()) { + System.out.println("\t" + o); + } + System.out.println("--- Superclasses :"); + for (Object o : clazz.getSuperclasses()) { + System.out.println("\t" + o); + } + } + } +} diff --git a/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java b/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java new file mode 100644 index 0000000..a1c447d --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java @@ -0,0 +1,228 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package org.nuiton.eugene.xmi.objectmodel; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; + +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.eugene.ObjectModelGenerator; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelDependency; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.util.Resource; +import org.nuiton.util.ResourceResolver; + +/** + * Test de la feuille de style "xmi1.2ToObjectModel.xsl" + * sur l'exemple isis-fish.xmi + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 18 févr. 2009 $ + * By : $Author: chatellier $ + */ +public class XMI12ToObjectModelTest { + + protected File destinationDirectory; + + @Before + public void setUp() { + destinationDirectory = new File("target", "xmi"); + destinationDirectory.mkdirs(); + } + + /** + * Apply XSLT Transformation. + * + * @param xmiFile + * @param modelFile + * @return transformed file + * @throws IOException + * @throws TransformerException + */ + protected File transformXMI(File xmiFile, String modelFile) + throws IOException, TransformerException { + TransformerFactory factory = TransformerFactory.newInstance(); + + URL xsl = Resource.getURL("xmi1.2ToObjectModel.xsl"); + + File result = new File(destinationDirectory, modelFile); + + Transformer transformer = factory.newTransformer(new StreamSource(xsl + .openStream())); + + transformer.setURIResolver(new ResourceResolver()); + + transformer.transform(new StreamSource(xmiFile), new StreamResult( + new FileOutputStream(result))); + + return result; + } + + /** + * Load model into memory. + * + * @param modelFile + * @return object model + */ + protected ObjectModel loadModel(File modelFile) { + ObjectModelGenerator generator = new ObjectModelGenerator(); + generator.setOverwrite(true); + generator.generate(new File[] { modelFile }, new File("output")); + ObjectModel objectModel = generator.getModel(); + return objectModel; + } + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on it. + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLIsis() throws URISyntaxException, IOException, + TransformerException { + + File xmiFile = new File(Resource.getURL("xmi/1.2/isis-fish.xmi") + .toURI()); + + File objectModelFile = transformXMI(xmiFile, "isis-fish.objectmodel"); + + ObjectModel model = loadModel(objectModelFile); + + Assert.assertNotNull(model); + Assert.assertEquals("IsisFish", model.getName()); + Assert.assertEquals(62, model.getClassifiers().size()); + } + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on it. + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLTopia() throws URISyntaxException, IOException, + TransformerException { + + File xmiFile = new File(Resource.getURL("xmi/1.2/topiatest.xmi") + .toURI()); + + File objectModelFile = transformXMI(xmiFile, "topiatest.objectmodel"); + + ObjectModel model = loadModel(objectModelFile); + + Assert.assertNotNull(model); + Assert.assertEquals("TopiaTest", model.getName()); + Assert.assertEquals(22, model.getClassifiers().size()); + + // Test for aggregation attribute (relation) + ObjectModelClass personneClass = model.getClass("org.nuiton.topiatest.Personne"); + Assert.assertNotNull(personneClass); + ObjectModelAttribute addressAttr = personneClass.getAttribute("address"); + Assert.assertNotNull(addressAttr); + Assert.assertTrue(addressAttr.isAggregate()); + } + + /** + * Apply XSL stylesheet on an Argouml model. + * And make test on it. + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLDependency() throws URISyntaxException, IOException, + TransformerException { + + File xmiFile = new File(Resource.getURL("xmi/1.2/dependency.xmi") + .toURI()); + + File objectModelFile = transformXMI(xmiFile, "dependency.objectmodel"); + + ObjectModel model = loadModel(objectModelFile); + + Assert.assertNotNull(model); + Assert.assertEquals("DependencyTest", model.getName()); + Assert.assertEquals(4, model.getClassifiers().size()); + + int nbDependencies = 0; + for (ObjectModelClassifier classifier : model.getClassifiers()) { + nbDependencies += classifier.getDependencies().size(); + for (ObjectModelDependency dependency : classifier.getDependencies()) { + Assert.assertNotNull(dependency.getSupplier()); + } + } + + Assert.assertEquals(4,nbDependencies); + } + + /** + * Apply XSL stylesheet on an Argouml model. + * And make test on it. + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLEnumeration() throws URISyntaxException, IOException, + TransformerException { + + File xmiFile = new File(Resource.getURL("xmi/1.2/enumeration.xmi") + .toURI()); + + File objectModelFile = transformXMI(xmiFile, "enumeration.objectmodel"); + + ObjectModel model = loadModel(objectModelFile); + + Assert.assertNotNull(model); + Assert.assertEquals("EnumerationTest", model.getName()); + Assert.assertEquals(1, model.getEnumerations().size()); + + for (ObjectModelEnumeration enumeration : model.getEnumerations()) { + // 1 seule énumeration avec 3 literals et 2 opérations + Assert.assertNotNull(enumeration.getQualifiedName()); + Assert.assertEquals(3,enumeration.getLiterals().size()); + Assert.assertEquals(2, enumeration.getOperations().size()); + } + } + +} diff --git a/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java b/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java new file mode 100644 index 0000000..9b851c7 --- /dev/null +++ b/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java @@ -0,0 +1,526 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package org.nuiton.eugene.xmi.objectmodel; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.junit.Before; +import org.junit.Test; +import org.nuiton.eugene.ObjectModelGenerator; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.util.Resource; +import org.nuiton.util.ResourceResolver; + + +/** + * Test de la feuille de style "xmi2.1ToObjectModel.xsl" + * sur l'exemple TestXMI21.uml + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 18 févr. 2009 $ + * By : $Author: chatellier $ + */ +public class XMI21ToObjectModelTest { + + protected File destinationDirectory; + + @Before + public void setUp() { + destinationDirectory = new File("target", "xmi"); + destinationDirectory.mkdirs(); + } + + /** + * Apply XSLT Transformation. + * + * @param xmiFile + * @return transformed file + * @throws IOException + * @throws TransformerException + */ + protected File transformXMI(File xmiFile, String outModel) + throws IOException, TransformerException { + TransformerFactory factory = TransformerFactory.newInstance(); + + URL xsl = Resource.getURL("xmi2.1ToObjectModel.xsl"); + + File result = new File(destinationDirectory, outModel); + + Transformer transformer = factory.newTransformer(new StreamSource(xsl + .openStream())); + + String basePath = xmiFile.getParent(); + transformer.setURIResolver(new ResourceResolver(basePath)); + + transformer.transform(new StreamSource(xmiFile), new StreamResult( + new FileOutputStream(result))); + + return result; + } + + /** + * Load model into memory. + * + * @param modelFile + * @return object model + */ + protected ObjectModel loadModel(File modelFile) { + ObjectModelGenerator generator = new ObjectModelGenerator(); + generator.setOverwrite(true); + generator.generate(new File[] { modelFile }, new File("output")); + ObjectModel objectModel = generator.getModel(); + return objectModel; + } + + /** + * Apply xslt on xmi model, and load it. + * + * @param modelName model to load + * + * @throws URISyntaxException + * @throws TransformerException + * @throws IOException + */ + protected ObjectModel xmiToObjectModel(String modelName) throws URISyntaxException, IOException, TransformerException { + File xmiFile = new File(Resource.getURL("xmi/2.1/" + modelName + ".uml") + .toURI()); + + File objectModelFile = transformXMI(xmiFile, modelName + ".objectmodel"); + + ObjectModel model = loadModel(objectModelFile); + return model; + } + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on it. + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLTestXMI21() throws URISyntaxException, IOException, + TransformerException { + + ObjectModel model = xmiToObjectModel("TestXMI21"); + + assertNotNull(model); + assertEquals("XMITest21", model.getName()); + assertEquals(14, model.getClassifiers().size()); + + // ClassB + ObjectModelClass clazzB = model.getClass("org.nuiton.eugene.test21.ClassB"); + assertNotNull(clazzB); + ObjectModelAttribute attrCost = clazzB.getAttribute("cost"); + assertNotNull(attrCost); + assertEquals("Cost attribute comment", attrCost.getTagValue("documentation")); + + // ClassA + ObjectModelClass clazzA = model.getClass("org.nuiton.eugene.test21.ClassA"); + assertNotNull(clazzA); + ObjectModelAttribute attrName = clazzA.getAttribute("name"); + assertNotNull(attrName); + assertEquals(2, attrName.getMinMultiplicity()); + assertEquals(-1, attrName.getMaxMultiplicity()); +// assertTrue(attrName.isOrdered()); +// assertTrue(attrName.isUnique()); + } + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on it. + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLVpod() throws URISyntaxException, IOException, + TransformerException { + + ObjectModel model = xmiToObjectModel("vpod"); + + assertNotNull(model); + assertEquals("org::sharengo::s4a::storage::http::vpod", model.getName()); + assertEquals(4, model.getClassifiers().size()); + + // ClassB + ObjectModelClass clazzVpodMappingDao = model.getClass("daos.VpodMappingDao"); + assertNotNull(clazzVpodMappingDao); + assertTrue(clazzVpodMappingDao.hasStereotype("Dao")); + List<ObjectModelOperation> opFindByVpodId = new ArrayList<ObjectModelOperation>(); + opFindByVpodId.addAll(clazzVpodMappingDao.getOperations("findByVpodId")); + assertEquals("entities.VpodMapping", opFindByVpodId.get(0).getReturnType()); + List<ObjectModelParameter> opFindByVpodIdParams = new ArrayList<ObjectModelParameter>(); + opFindByVpodIdParams.addAll(opFindByVpodId.get(0).getParameters()); + assertEquals("String", opFindByVpodIdParams.get(0).getType()); + } + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on it. + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLWithStereotype() throws URISyntaxException, IOException, + TransformerException { + + ObjectModel model = xmiToObjectModel("cmsLink"); + + assertNotNull(model); + assertEquals("org::sharengo::utils::container::link", model.getName()); + assertEquals(8, model.getClassifiers().size()); + + // LinkEntity + ObjectModelClass clazzLinkEntity = model.getClass("org.sharengo.utils.container.link.entities.LinkEntity"); + assertNotNull(clazzLinkEntity); + assertTrue(clazzLinkEntity.hasStereotype("Entity")); + ObjectModelAttribute attrDefinition = clazzLinkEntity.getAttribute("target"); + assertNotNull(attrDefinition); + assertTrue(attrDefinition.hasStereotype("Embedded")); + + // LinkEntity + ObjectModelClass clazzLinkSrv = model.getClass("org.sharengo.utils.container.link.services.LinkSrv"); + assertNotNull(clazzLinkSrv); + assertTrue(clazzLinkSrv.hasStereotype("Service")); + List<ObjectModelOperation> opFindAllByContent = new ArrayList<ObjectModelOperation>(); + opFindAllByContent.addAll(clazzLinkSrv.getOperations("findAllByContent")); + assertEquals(1, opFindAllByContent.size()); + assertTrue(opFindAllByContent.get(0).hasStereotype("Remote")); + } + + @Test + public void testExtractCmsCore() throws Exception { + + ObjectModel model = xmiToObjectModel("cmsCore"); + assertNotNull(model); + + // There was a problem with sub package + ObjectModelClass clazzFacetViewSrv = model.getClass("org.sharengo.cms.core.services.facet.FacetViewSrv"); + assertNotNull(clazzFacetViewSrv); + assertEquals(11, clazzFacetViewSrv.getOperations().size()); + + // Test attribute type FQN + ObjectModelClass clazzContentDefSearchDto = model.getClass("org.sharengo.cms.core.dtos.ContentDefSearchDto"); + assertNotNull(clazzContentDefSearchDto); + ObjectModelAttribute attrFromDate = clazzContentDefSearchDto.getAttribute("fromDate"); + assertNotNull(attrFromDate); + assertEquals("Date", attrFromDate.getType()); + ObjectModelAttribute attrContentDefId = clazzContentDefSearchDto.getAttribute("contentDefId"); + assertNotNull(attrContentDefId); + assertEquals("String", attrContentDefId.getType()); + ObjectModelAttribute attrAttributes = clazzContentDefSearchDto.getAttribute("attributes"); + assertNotNull(attrAttributes); + assertEquals("org.sharengo.cms.core.dtos.AttributeSearchDto", attrAttributes.getType()); + + ObjectModelClass clazzContentDefDto = model.getClass("org.sharengo.cms.core.dtos.AttributeDef"); + assertNotNull(clazzContentDefDto); + ObjectModelAttribute attrIdContentDef = clazzContentDefDto.getAttribute("idContentDef"); + assertNotNull(attrIdContentDef); + assertEquals("String", attrIdContentDef.getType()); + } + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on embedded primitive type + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLTestXMI21EmbeddedPrimitiveType() throws URISyntaxException, IOException, + TransformerException { + + ObjectModel model = xmiToObjectModel("TestXMI21"); + + assertNotNull(model); + assertEquals("XMITest21", model.getName()); + + // ClassB + ObjectModelClass clazzB = model.getClass("org.nuiton.eugene.test21.ClassB"); + assertNotNull(clazzB); + + //primitiveType double + ObjectModelAttribute attrDouble = clazzB.getAttribute("double"); + assertNotNull(attrDouble); + assertEquals("org.nuiton.eugene.test21.double", attrDouble.getType()); + + // ClassC + ObjectModelClass clazzC = model.getClass("org.nuiton.eugene.test21.ClassC"); + assertNotNull(clazzC); + + //dataType formula + ObjectModelAttribute attrFormula = clazzC.getAttribute("formula"); + assertNotNull(attrFormula); + assertEquals("org.codelutin.types.Formula", attrFormula.getType()); + + } + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on embedded primitive type + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLTestXMI21MultiplicityClass() throws URISyntaxException, IOException, + TransformerException { + + ObjectModel model = xmiToObjectModel("TestXMI21"); + + // ClassB + ObjectModelClass multiClazz = model.getClass("org.nuiton.eugene.test21.MultiplicityClass"); + + // strings + ObjectModelAttribute strings = multiClazz.getAttribute("strings"); + assertNotNull(strings); + assertEquals("String", strings.getType()); + assertEquals(1, strings.getMinMultiplicity()); + assertEquals(-1, strings.getMaxMultiplicity()); + assertTrue(strings.isUnique()); + assertFalse(strings.isOrdered()); + + // doubles + ObjectModelAttribute doubles = multiClazz.getAttribute("doubles"); + assertNotNull(doubles); + assertEquals("org.nuiton.eugene.test21.double", doubles.getType()); + assertEquals(1, doubles.getMinMultiplicity()); + assertEquals(5, doubles.getMaxMultiplicity()); + assertTrue(doubles.isUnique()); + assertTrue(doubles.isOrdered()); + + // dataTypes + ObjectModelAttribute dataTypes = multiClazz.getAttribute("dataTypes"); + assertNotNull(dataTypes); + assertEquals("org.nuiton.eugene.test21.DataType1", dataTypes.getType()); + assertEquals(0, dataTypes.getMinMultiplicity()); + assertEquals(-1, dataTypes.getMaxMultiplicity()); + assertFalse(dataTypes.isUnique()); + assertTrue(dataTypes.isOrdered()); + + // getStrings + ObjectModelOperation op = multiClazz.getOperations("getStrings").iterator().next(); + assertNotNull(op); + assertEquals("String", op.getReturnType()); + assertNotNull(op.getReturnParameter()); + assertEquals("String", op.getReturnParameter().getType()); + assertEquals(1, op.getReturnParameter().getMinMultiplicity()); + assertEquals(-1, op.getReturnParameter().getMaxMultiplicity()); + assertTrue(op.getReturnParameter().isUnique()); + assertTrue(op.getReturnParameter().isOrdered()); + + + // getDoubles + op = multiClazz.getOperations("getDoubles").iterator().next(); + assertNotNull(op); + assertEquals("org.nuiton.eugene.test21.double", op.getReturnType()); + assertNotNull(op.getReturnParameter()); + assertEquals("org.nuiton.eugene.test21.double", op.getReturnParameter().getType()); + assertEquals(2, op.getReturnParameter().getMinMultiplicity()); + assertEquals(-1, op.getReturnParameter().getMaxMultiplicity()); + assertFalse(op.getReturnParameter().isUnique()); + assertTrue(op.getReturnParameter().isOrdered()); + + // getDataTypes + op = multiClazz.getOperations("getDataTypes").iterator().next(); + assertNotNull(op); + assertEquals("org.nuiton.eugene.test21.DataType1", op.getReturnType()); + assertNotNull(op.getReturnParameter()); + assertEquals("org.nuiton.eugene.test21.DataType1", op.getReturnParameter().getType()); + assertEquals(0, op.getReturnParameter().getMinMultiplicity()); + assertEquals(-1, op.getReturnParameter().getMaxMultiplicity()); + assertTrue(op.getReturnParameter().isUnique()); + assertFalse(op.getReturnParameter().isOrdered()); + + // addAndGetAll + op = multiClazz.getOperations("addAndGetAll").iterator().next(); + assertNotNull(op); + assertEquals("org.nuiton.eugene.test21.DataType1", op.getReturnType()); + assertNotNull(op.getReturnParameter()); + assertEquals("org.nuiton.eugene.test21.DataType1", op.getReturnParameter().getType()); + assertEquals(3, op.getReturnParameter().getMinMultiplicity()); + assertEquals(19, op.getReturnParameter().getMaxMultiplicity()); + assertTrue(op.getReturnParameter().isUnique()); + assertFalse(op.getReturnParameter().isOrdered()); + + // param strings + ObjectModelParameter param = findParameter(op, "strings"); + assertNotNull(param); + assertEquals("String", param.getType()); + assertEquals(1, param.getMinMultiplicity()); + assertEquals(-1, param.getMaxMultiplicity()); + assertTrue(param.isUnique()); + assertFalse(param.isOrdered()); + + // param doubles + param = findParameter(op, "doubles"); + assertNotNull(param); + assertEquals("org.nuiton.eugene.test21.double", param.getType()); + assertEquals(5, param.getMinMultiplicity()); + assertEquals(-1, param.getMaxMultiplicity()); + assertTrue(param.isUnique()); + assertTrue(param.isOrdered()); + + // param dataTypes + param = findParameter(op, "dataTypes"); + assertNotNull(param); + assertEquals("org.nuiton.eugene.test21.DataType1", param.getType()); + assertEquals(1, param.getMinMultiplicity()); + assertEquals(18, param.getMaxMultiplicity()); + assertFalse(param.isUnique()); + assertTrue(param.isOrdered()); + + } + + private ObjectModelParameter findParameter(ObjectModelOperation op, String name) { + for (ObjectModelParameter param : op.getParameters()) { + if (name.equals(param.getName())) { + return param; + } + } + return null; + } + + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on embedded primitive type + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testXSLTestXMI21StaticAndDefaultValueAttribute() throws URISyntaxException, IOException, + TransformerException { + + ObjectModel model = xmiToObjectModel("TestXMI21"); + + // StaticClass + ObjectModelClass multiClazz = model.getClass("org.nuiton.eugene.test21.StaticClass"); + + // strings + ObjectModelAttribute strings = multiClazz.getAttribute("azerty"); + assertNotNull(strings); + assertEquals("String", strings.getType()); + assertTrue(strings.isStatic()); + assertEquals("azerty",strings.getDefaultValue()); + + } + + /** + * Apply XSL stylesheet on a topcased model. + * And make test on embedded primitive type + * + * @throws URISyntaxException + * @throws IOException + * @throws TransformerException + */ + @Test + public void testTestXMI21SuperClasses() throws URISyntaxException, IOException, + TransformerException { + + ObjectModel model = xmiToObjectModel("TestXMI21"); + + // StaticClass + ObjectModelClass multiClazz = model.getClass("org.nuiton.eugene.test21.StaticClass"); + + // SubClass + ObjectModelClass subClazz = model.getClass("org.nuiton.eugene.test21.SubClass"); + assertNotNull(subClazz); + assertNotNull(subClazz.getSuperclasses()); + assertEquals(1, subClazz.getSuperclasses().size()); + assertEquals(multiClazz, subClazz.getSuperclasses().iterator().next()); + + // TODO test attributes + } + + /** + * Apply XSL stylesheet on TestXMI21 + * Check documentation tags on model, class, attribute, operation and enumerations + */ + @Test + public void testTestXMI21Documentation() throws URISyntaxException, IOException, + TransformerException { + + ObjectModel model = xmiToObjectModel("TestXMI21"); + + assertNotNull(model); + assertEquals("XMITest21", model.getName()); + assertEquals("model doc!", model.getTagValue("documentation")); + + // ClassC + ObjectModelClass clazzC = model.getClass("org.nuiton.eugene.test21.ClassC"); + assertNotNull(clazzC); + assertEquals("Class C Comment", clazzC.getDocumentation()); + + ObjectModelAttribute attrCost = clazzC.getAttribute("formula"); + assertNotNull(attrCost); + assertEquals("azerty", attrCost.getDocumentation()); + + ObjectModelOperation opLaunchExpression = clazzC.getOperations("launchException").iterator().next(); + assertNotNull(opLaunchExpression); + assertEquals("launchExcep comment", opLaunchExpression.getDocumentation()); + + assertFalse(model.getEnumerations().isEmpty()); + + ObjectModelEnumeration myenum = model.getEnumeration("org.nuiton.eugene.test21.MyEnumeration"); + assertNotNull(myenum); + assertEquals("MyEnumeration is just a simply enumeration in order to test documentation in enumeration.", myenum.getDocumentation()); + + + // ClassB + ObjectModelClass clazzB = model.getClass("org.nuiton.eugene.test21.ClassB"); + assertNotNull(clazzB); + assertEquals("This is some documentation\non multiple lines !\n\nVery hard to do !", clazzB.getDocumentation()); + + } + +} diff --git a/eugene/src/test/resources/log4j.properties b/eugene/src/test/resources/log4j.properties new file mode 100644 index 0000000..95abd8c --- /dev/null +++ b/eugene/src/test/resources/log4j.properties @@ -0,0 +1,11 @@ +# Global logging configuration +log4j.rootLogger=ERROR, stdout + +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n + +# package level +log4j.logger.org.nuiton.eugene=INFO +log4j.logger.org.apache.commons.digester=INFO \ No newline at end of file diff --git a/eugene/src/test/resources/models/objectmodel/security1.objectmodel b/eugene/src/test/resources/models/objectmodel/security1.objectmodel new file mode 100644 index 0000000..6de2576 --- /dev/null +++ b/eugene/src/test/resources/models/objectmodel/security1.objectmodel @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<objectModel xmlns:UML="org.omg.xmi.namespace.UML" xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" xmlns="http://www.codelutin.org/lutingenerator/objectModel" name="Security"> + <interface name="TestInterface" package="org.codelutin.topia.security"> + <stereotype name="entity"/> + </interface> + <class name="RolePermission" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="topiaId" visibility="private" type="java.lang.String"/> + <attribute name="role" visibility="public" type="org.codelutin.topia.security.entities.Role" reverseAttribute="permissions" minMultiplicity="1" maxMultiplicity="1"/> + </class> + <class name="User" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <superclass name="org.codelutin.topia.security.entities.Role" discriminator=""/> + <interface name="org.codelutin.topia.security.TestInterface"/> + <attribute name="password" visibility="private" type="java.lang.String"/> + <attribute name="login" visibility="private" type="java.lang.String"/> + </class> + <class name="Group" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <superclass name="org.codelutin.topia.security.entities.Role" discriminator=""/> + <attribute name="groupName" visibility="private" type="java.lang.String"/> + <attribute name="members" visibility="public" type="org.codelutin.topia.security.entities.Role" reverseAttribute="parent" associationType="aggregate" minMultiplicity="0" maxMultiplicity="-1"/> + </class> + <class name="Role" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="parent" visibility="public" type="org.codelutin.topia.security.entities.Group" reverseAttribute="members" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="permissions" visibility="public" type="org.codelutin.topia.security.entities.RolePermission" reverseAttribute="role" minMultiplicity="0" maxMultiplicity="-1"/> + <attribute name="roleName" visibility="public" type="java.lang.String"/> + </class> +</objectModel> diff --git a/eugene/src/test/resources/models/objectmodel/security1.properties b/eugene/src/test/resources/models/objectmodel/security1.properties new file mode 100644 index 0000000..f3ed571 --- /dev/null +++ b/eugene/src/test/resources/models/objectmodel/security1.properties @@ -0,0 +1,7 @@ +org.codelutin.topia.security.entities.Role.class.stereotype=Permission +org.codelutin.topia.security.entities.Role.class.tagvalue.role=admin + +org.codelutin.topia.security.entities.RolePermission.attribute.topiaId.stereotype=pk +org.codelutin.topia.security.entities.RolePermission.attribute.topiaId.tagvalue.string= topiaId: + +model.tagvalue.lejoliemodel=toto diff --git a/eugene/src/test/resources/models/objectmodel/security2.objectmodel b/eugene/src/test/resources/models/objectmodel/security2.objectmodel new file mode 100644 index 0000000..2ccc409 --- /dev/null +++ b/eugene/src/test/resources/models/objectmodel/security2.objectmodel @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<objectModel xmlns:UML="org.omg.xmi.namespace.UML" xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" xmlns="http://www.codelutin.org/lutingenerator/objectModel" name="Security"> + <class name="User" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="nom" visibility="private" type="java.lang.String"/> + <attribute name="login" visibility="private" type="java.lang.String"/> + </class> +</objectModel> diff --git a/eugene/src/test/resources/models/objectmodel/security3.objectmodel b/eugene/src/test/resources/models/objectmodel/security3.objectmodel new file mode 100644 index 0000000..6f0c7a7 --- /dev/null +++ b/eugene/src/test/resources/models/objectmodel/security3.objectmodel @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<objectModel xmlns:UML="org.omg.xmi.namespace.UML" xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" xmlns="http://www.codelutin.org/lutingenerator/objectModel" name="Security"> + <class name="User" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="password" visibility="private" type="java.lang.String"/> + <attribute name="nom" visibility="private" type="java.lang.String"/> + <attribute name="prenom" visibility="private" type="java.lang.String"/> + </class> +</objectModel> diff --git a/eugene/src/test/resources/models/objectmodel/security4.objectmodel b/eugene/src/test/resources/models/objectmodel/security4.objectmodel new file mode 100644 index 0000000..61280a0 --- /dev/null +++ b/eugene/src/test/resources/models/objectmodel/security4.objectmodel @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<objectModel xmlns:UML="org.omg.xmi.namespace.UML" xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" xmlns="http://www.codelutin.org/lutingenerator/objectModel" name="Security"> + <interface name="ZimZoum" package="org.codelutin.topia.security"> + <stereotype name="entity"/> + </interface> + <class name="RolePermission" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="topiaId" visibility="private" type="java.lang.String"/> + </class> + <class name="User" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <interface name="org.codelutin.topia.security.ZimZoum"/> + <attribute name="password" visibility="private" type="java.lang.String"/> + <operation name="methode" visibility="public"> + <returnParameter type="void"/> + </operation> + </class> + <class name="Group" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="groupName" visibility="private" type="java.lang.String"/> + <attribute name="groupZimZoum" visibility="private" type="java.lang.String"/> + </class> +</objectModel> diff --git a/eugene/src/test/resources/models/objectmodel/security5.objectmodel b/eugene/src/test/resources/models/objectmodel/security5.objectmodel new file mode 100644 index 0000000..55c7963 --- /dev/null +++ b/eugene/src/test/resources/models/objectmodel/security5.objectmodel @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<objectModel xmlns:UML="org.omg.xmi.namespace.UML" xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" xmlns="http://www.codelutin.org/lutingenerator/objectModel" name="Security"> + <class name="RolePermission" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="topiaId" visibility="private" type="java.lang.String"/> + <attribute name="perm" visibility="private" type="java.lang.String"/> + <operation name="permToString" visibility="public"> + <returnParameter type="java.lang.String"/> + </operation> + </class> +</objectModel> diff --git a/eugene/src/test/resources/models/objectmodel/security6.objectmodel b/eugene/src/test/resources/models/objectmodel/security6.objectmodel new file mode 100644 index 0000000..6de2576 --- /dev/null +++ b/eugene/src/test/resources/models/objectmodel/security6.objectmodel @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<objectModel xmlns:UML="org.omg.xmi.namespace.UML" xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator" xmlns="http://www.codelutin.org/lutingenerator/objectModel" name="Security"> + <interface name="TestInterface" package="org.codelutin.topia.security"> + <stereotype name="entity"/> + </interface> + <class name="RolePermission" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="topiaId" visibility="private" type="java.lang.String"/> + <attribute name="role" visibility="public" type="org.codelutin.topia.security.entities.Role" reverseAttribute="permissions" minMultiplicity="1" maxMultiplicity="1"/> + </class> + <class name="User" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <superclass name="org.codelutin.topia.security.entities.Role" discriminator=""/> + <interface name="org.codelutin.topia.security.TestInterface"/> + <attribute name="password" visibility="private" type="java.lang.String"/> + <attribute name="login" visibility="private" type="java.lang.String"/> + </class> + <class name="Group" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <superclass name="org.codelutin.topia.security.entities.Role" discriminator=""/> + <attribute name="groupName" visibility="private" type="java.lang.String"/> + <attribute name="members" visibility="public" type="org.codelutin.topia.security.entities.Role" reverseAttribute="parent" associationType="aggregate" minMultiplicity="0" maxMultiplicity="-1"/> + </class> + <class name="Role" package="org.codelutin.topia.security.entities"> + <stereotype name="entity"/> + <attribute name="parent" visibility="public" type="org.codelutin.topia.security.entities.Group" reverseAttribute="members" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="permissions" visibility="public" type="org.codelutin.topia.security.entities.RolePermission" reverseAttribute="role" minMultiplicity="0" maxMultiplicity="-1"/> + <attribute name="roleName" visibility="public" type="java.lang.String"/> + </class> +</objectModel> diff --git a/eugene/src/test/resources/models/objectmodel/security6.properties b/eugene/src/test/resources/models/objectmodel/security6.properties new file mode 100644 index 0000000..e308509 --- /dev/null +++ b/eugene/src/test/resources/models/objectmodel/security6.properties @@ -0,0 +1,5 @@ +org.codelutin.topia.security.entities.RolePermission.class.stereotype=Permission +org.codelutin.topia.security.entities.RolePermission.class.tagvalue.role=admin + +org.codelutin.topia.security.entities.RolePermission.attribute.topiaId.stereotype=pk +org.codelutin.topia.security.entities.RolePermission.attribute.topiaId.tagvalue.string= topiaId: diff --git a/eugene/src/test/resources/models/statemodel/contact.properties b/eugene/src/test/resources/models/statemodel/contact.properties new file mode 100644 index 0000000..039d138 --- /dev/null +++ b/eugene/src/test/resources/models/statemodel/contact.properties @@ -0,0 +1 @@ +model.tagvalue.usecaseengineextendedclass=BasePage \ No newline at end of file diff --git a/eugene/src/test/resources/models/statemodel/contact.statemodel b/eugene/src/test/resources/models/statemodel/contact.statemodel new file mode 100644 index 0000000..0ec7991 --- /dev/null +++ b/eugene/src/test/resources/models/statemodel/contact.statemodel @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<stateModel xmlns="http://www.codelutin.org/lutingenerator/stateModel" name="Chorem" version=""> + <stateChart name="contactManagementUseCase" package="org.codelutin.chorem.web.contactManagement"> + <state name="initContact" initial="true"> + <transition event="" toState="contactList"/> + </state> + <state name="contactList"> + <transition event="addContact" toState="contactFormUC"/> + <transition event="view" toState="viewContact"/> + </state> + <complexeState name="contactFormUC"> + <state name="initContactForm" initial="true"> + <transition event="" toState="contactForm"/> + </state> + <state name="contactForm"> + <transition event="contactStore" toState="finalContactFormStore"/> + <transition event="contactCancel" toState="finalContactFormCancel"/> + <transition event="addSociety" toState="societyFormUC"/> + </state> + <state name="finalContactFormStore" final="true"/> + <state name="finalContactFormCancel" final="true"/> + </complexeState> + <complexeState name="societyFormUC"> + <state name="initSocietyForm" initial="true"> + <transition event="" toState="societyForm"/> + </state> + <state name="societyForm"> + <transition event="cancel" toState="finalSocietyFormCancel"/> + <transition event="societyStore" toState="finalSocietyFormStore"/> + </state> + <state name="finalSocietyFormStore" final="true"/> + <state name="finalSocietyFormCancel" final="true"/> + </complexeState> + <state name="viewContact"> + <transition event="edit" toState="contactFormUC"/> + <transition event="viewSociety" toState="societyViewUC"/> + </state> + <complexeState name="societyViewUC"> + <state name="societyView"> + <transition event="ok" toState="finalSocietyViewOk"/> + <transition event="edit" toState="societyFormUC"/> + </state> + <state name="initSocietyView" initial="true"> + <transition event="" toState="societyView"/> + </state> + <state name="finalSocietyViewOk" final="true"/> + </complexeState> + </stateChart> + <stateChart name="lol" package="org.codelutin.chorem.web.newForTest.nothing"> + <state name="initNot" initial="true"> + <transition event="" toState="doNothingState"/> + </state> + <state name="doNothingState"> + <transition event="nothing" toState="finalNot"/> + </state> + <state name="finalNot" final="true"/> + </stateChart> +</stateModel> diff --git a/eugene/src/test/resources/models/statemodel/project.statemodel b/eugene/src/test/resources/models/statemodel/project.statemodel new file mode 100644 index 0000000..f9ee295 --- /dev/null +++ b/eugene/src/test/resources/models/statemodel/project.statemodel @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<stateModel xmlns="http://www.codelutin.org/lutingenerator/stateModel" name="Chorem" version=""> + <stateChart name="projectManagementUseCase" package="org.codelutin.chorem.web.contactManagement"> + <initState name="initProject"> + <transition toState="projectList"/> + </initState> + <state name="projectList"> + <transition toState="finalProject"> + <action name="end"/> + </transition> + </state> + <finalState name="finalProject"/> + </stateChart> +</stateModel> \ No newline at end of file diff --git a/eugene/src/test/resources/models/uimodel/test.javaxml b/eugene/src/test/resources/models/uimodel/test.javaxml new file mode 100644 index 0000000..9da5061 --- /dev/null +++ b/eugene/src/test/resources/models/uimodel/test.javaxml @@ -0,0 +1,97 @@ +<?xml version="1.0" encoding="UTF-8"?> +<java version="1.4.2_02" class="java.beans.XMLDecoder"> + <object class="javax.swing.JPanel"> + <void method="add"> + + <object id="JButton0" class="javax.swing.JButton"> + + <string>toto</string> + <void property="name"> + <string>bouton0</string> + </void> + + <void method="addActionListener"> + <object class="java.beans.EventHandler" method="create"> + <class>java.awt.event.ActionListener</class> + <string>this</string> + <string>on_click</string> + <string>arg</string> + <string>actionPerformed</string> + </object> + </void> + </object> + </void> + + <void method="add"> + <object id="JButton1" class="javax.swing.JButton"> + <string>titi</string> + <void property="name"> + <string>bouton1</string> + </void> + </object> + </void> + + <void property="layout"> + <object class="java.awt.GridBagLayout"> + + <void method="addLayoutComponent"> + <object idref="JButton0"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>0</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>0</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + + <void method="addLayoutComponent"> + <object idref="JButton1"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>1</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>0</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + </object> + </void> + + <void property="name"> + <string>JPanel0</string> + </void> + + <void method="addAncestorListener"> + <object class="java.beans.EventHandler" method="create"> + <class>javax.swing.event.AncestorListener</class> + <string>this</string> + <string>on_touch</string> + <string>argument</string> + <string>ancestorMoved</string> + </object> + </void> + </object> +</java> diff --git a/eugene/src/test/resources/models/uimodel/test1.javaxml b/eugene/src/test/resources/models/uimodel/test1.javaxml new file mode 100644 index 0000000..5b243c1 --- /dev/null +++ b/eugene/src/test/resources/models/uimodel/test1.javaxml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<java version="1.4.2_02" class="java.beans.XMLDecoder"> + <object class="javax.swing.JPanel"> + <void method="add"> + <object id="JButton0" class="javax.swing.JButton"> + <string>Save</string> + <void property="name"> + <string>JButton0</string> + </void> + </object> + </void> + <void property="layout"> + <object class="java.awt.BorderLayout"> + <void method="addLayoutComponent"> + <object idref="JButton0"/> + <string>Center</string> + </void> + </object> + </void> + <void property="name"> + <string>JPanel0</string> + </void> + </object> +</java> diff --git a/eugene/src/test/resources/models/uimodel/test2.javaxml b/eugene/src/test/resources/models/uimodel/test2.javaxml new file mode 100644 index 0000000..ea598df --- /dev/null +++ b/eugene/src/test/resources/models/uimodel/test2.javaxml @@ -0,0 +1,497 @@ +<?xml version="1.0" encoding="UTF-8"?> +<java version="1.4.2_02" class="java.beans.XMLDecoder"> + <object class="javax.swing.JFrame"> + <void property="contentPane"> + <void method="add"> + <object id="AlarmPanel0" class="org.codelutin.chorem.entities.ui.AlarmPanel"> + <void method="add"> + <object id="AlarmAttributesPanelPanel0" class="org.codelutin.chorem.entities.ui.AlarmAttributesPanelPanel"> + <void method="add"> + <object id="JLabel0" class="javax.swing.JLabel"> + <void property="name"> + <string>sujetLabel</string> + </void> + <void property="text"> + <string>Sujet</string> + </void> + </object> + </void> + <void method="add"> + <object id="JTextField0" class="javax.swing.JTextField"> + <void property="columns"> + <int>6</int> + </void> + <void property="name"> + <string>sujetEditor</string> + </void> + </object> + </void> + <void method="add"> + <object id="JLabel1" class="javax.swing.JLabel"> + <void property="name"> + <string>activateLabel</string> + </void> + <void property="text"> + <string>Activate</string> + </void> + </object> + </void> + <void method="add"> + <object id="JCheckBox0" class="javax.swing.JCheckBox"> + <void property="name"> + <string>activateEditor</string> + </void> + </object> + </void> + <void method="add"> + <object id="JLabel2" class="javax.swing.JLabel"> + <void property="name"> + <string>descriptionLabel</string> + </void> + <void property="text"> + <string>Description</string> + </void> + </object> + </void> + <void method="add"> + <object id="JTextField1" class="javax.swing.JTextField"> + <void property="columns"> + <int>6</int> + </void> + <void property="name"> + <string>descriptionEditor</string> + </void> + </object> + </void> + <void property="border"> + <object class="javax.swing.border.TitledBorder"> + <object class="javax.swing.border.EtchedBorder"> + <int>0</int> + <null/> + <null/> + </object> + <string>Attributes</string> + <int>0</int> + <int>0</int> + <null/> + <null/> + </object> + </void> + <void property="layout"> + <void method="addLayoutComponent"> + <object idref="JTextField0"/> + <object class="java.awt.GridBagConstraints"> + <int>1</int> + <int>1</int> + <int>1</int> + <int>1</int> + <double>1.0</double> + <double>1.0</double> + <int>10</int> + <int>2</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="JTextField1"/> + <object class="java.awt.GridBagConstraints"> + <int>1</int> + <int>3</int> + <int>1</int> + <int>1</int> + <double>1.0</double> + <double>1.0</double> + <int>10</int> + <int>2</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="JLabel1"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>2</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>1</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="JCheckBox0"/> + <object class="java.awt.GridBagConstraints"> + <int>1</int> + <int>2</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>1</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="JLabel0"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>1</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>1</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="JLabel2"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>3</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>1</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + </void> + <void property="name"> + <string>AlarmAttributesPanelPanel</string> + </void> + </object> + </void> + <void method="add"> + <object id="ManagementButtonsPanel0" class="org.codelutin.topia.ui.swing.ManagementButtonsPanel"> + <void method="add"> + <object id="JButton0" class="javax.swing.JButton"> + <string>Save</string> + <void method="addActionListener"> + <object class="java.beans.EventHandler" method="create"> + <class>java.awt.event.ActionListener</class> + <object idref="ManagementButtonsPanel0"/> + <string>on_save</string> + </object> + </void> + </object> + </void> + <void method="add"> + <object id="JButton1" class="javax.swing.JButton"> + <string>Cancel</string> + <void method="addActionListener"> + <object class="java.beans.EventHandler" method="create"> + <class>java.awt.event.ActionListener</class> + <object idref="ManagementButtonsPanel0"/> + <string>on_cancel</string> + </object> + </void> + </object> + </void> + <void method="add"> + <object id="JButton2" class="javax.swing.JButton"> + <string>Delete</string> + <void method="addActionListener"> + <object class="java.beans.EventHandler" method="create"> + <class>java.awt.event.ActionListener</class> + <object idref="ManagementButtonsPanel0"/> + <string>on_delete</string> + </object> + </void> + </object> + </void> + <void method="add"> + <object id="JButton3" class="javax.swing.JButton"> + <string>Search</string> + <void method="addActionListener"> + <object class="java.beans.EventHandler" method="create"> + <class>java.awt.event.ActionListener</class> + <object idref="ManagementButtonsPanel0"/> + <string>on_search</string> + </object> + </void> + </object> + </void> + <void property="layout"> + <void method="addLayoutComponent"> + <object idref="JButton1"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>1</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>2</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="JButton2"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>2</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>2</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="JButton3"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>3</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>2</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="JButton0"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>0</int> + <int>1</int> + <int>1</int> + <double>0.0</double> + <double>0.0</double> + <int>10</int> + <int>2</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + </void> + <void property="name"> + <string>AlarmButtonsPanel</string> + </void> + </object> + </void> + <void method="add"> + <object id="AlarmTablePanelPanel0" class="org.codelutin.chorem.entities.ui.AlarmTablePanelPanel"> + <void method="add"> + <object id="JScrollPane0" class="javax.swing.JScrollPane"> + <void property="name"> + <string>AlarmScrollPane</string> + </void> + <void property="viewport"> + <void method="add"> + <object class="javax.swing.JTable"> + <void property="model"> + <object class="org.codelutin.topia.ui.swing.TopiaTableModel"/> + </void> + </object> + </void> + </void> + </object> + </void> + <void property="border"> + <object class="javax.swing.border.TitledBorder"> + <object class="javax.swing.border.EtchedBorder"> + <int>0</int> + <null/> + <null/> + </object> + <string>Table</string> + <int>0</int> + <int>0</int> + <null/> + <null/> + </object> + </void> + <void property="layout"> + <void method="addLayoutComponent"> + <object idref="JScrollPane0"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>0</int> + <int>1</int> + <int>1</int> + <double>1.0</double> + <double>1.0</double> + <int>10</int> + <int>1</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + </void> + <void property="name"> + <string>AlarmTablePanelPanel</string> + </void> + </object> + </void> + <void property="layout"> + <void method="addLayoutComponent"> + <object idref="AlarmTablePanelPanel0"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>1</int> + <int>2</int> + <int>1</int> + <double>1.0</double> + <double>1.0</double> + <int>10</int> + <int>1</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="AlarmAttributesPanelPanel0"/> + <object class="java.awt.GridBagConstraints"> + <int>0</int> + <int>0</int> + <int>1</int> + <int>1</int> + <double>1.0</double> + <double>1.0</double> + <int>10</int> + <int>1</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + <void method="addLayoutComponent"> + <object idref="ManagementButtonsPanel0"/> + <object class="java.awt.GridBagConstraints"> + <int>1</int> + <int>0</int> + <int>1</int> + <int>1</int> + <double>1.0</double> + <double>1.0</double> + <int>10</int> + <int>1</int> + <object class="java.awt.Insets"> + <int>0</int> + <int>0</int> + <int>0</int> + <int>0</int> + </object> + <int>0</int> + <int>0</int> + </object> + </void> + </void> + <void property="name"> + <string>AlarmPanel2</string> + </void> + </object> + </void> + <void property="layout"> + <object class="java.awt.BorderLayout"> + <void method="addLayoutComponent"> + <object idref="AlarmPanel0"/> + <string>Center</string> + </void> + </object> + </void> + </void> + <void property="name"> + <string>JFrame1</string> + </void> + </object> +</java> diff --git a/eugene/src/test/resources/uml/Acceleo.Business.profile.uml b/eugene/src/test/resources/uml/Acceleo.Business.profile.uml new file mode 100644 index 0000000..25b2e86 --- /dev/null +++ b/eugene/src/test/resources/uml/Acceleo.Business.profile.uml @@ -0,0 +1,235 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Profile xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.0.0/UML" xmi:id="_JX9fQPWcEdyuYMHNZCqWBQ" name="Acceleo::Business" metaclassReference="_EcR54Fe8Ed2bzMTtqNY1Rw _EcWyYFe8Ed2bzMTtqNY1Rw _EcXZcle8Ed2bzMTtqNY1Rw _EcYnkFe8Ed2bzMTtqNY1Rw _EcZ1sFe8Ed2bzMTtqNY1Rw _Ecacwle8Ed2bzMTtqNY1Rw _Ecbq4Fe8Ed2bzMTtqNY1Rw _EccR8le8Ed2bzMTtqNY1Rw _EcdgEFe8Ed2bzMTtqNY1Rw _Echxgle8Ed2bzMTtq [...] + <eAnnotations xmi:id="_81g14PWcEdyuYMHNZCqWBQ" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <contents xmi:type="ecore:EPackage" xmi:id="_81g14fWcEdyuYMHNZCqWBQ" name="AcceleoBusiness" nsURI="http:///schemas/AcceleoBusiness/_ex16ICKPEd26SOvVLQpYXg/1" nsPrefix="AcceleoBusiness"> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dcVe8Ed2bzMTtqNY1Rw" name="Service"> + <eAnnotations xmi:id="_Ec-dcle8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SrijcPWcEdyuYMHNZCqWBQ"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-dc1e8Ed2bzMTtqNY1Rw" name="base_Class" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Class"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-ddVe8Ed2bzMTtqNY1Rw" name="Dao"> + <eAnnotations xmi:id="_Ec-ddle8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_UBfCsPWcEdyuYMHNZCqWBQ"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-dd1e8Ed2bzMTtqNY1Rw" name="base_Class" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Class"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-deVe8Ed2bzMTtqNY1Rw" name="Dto"> + <eAnnotations xmi:id="_Ec-dele8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_UylvgPWcEdyuYMHNZCqWBQ"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-de1e8Ed2bzMTtqNY1Rw" name="base_Class" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Class"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dfVe8Ed2bzMTtqNY1Rw" name="Entity"> + <eAnnotations xmi:id="_Ec-dfle8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_VvA7gPWcEdyuYMHNZCqWBQ"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-df1e8Ed2bzMTtqNY1Rw" name="base_Class" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Class"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dgVe8Ed2bzMTtqNY1Rw" name="Transactional"> + <eAnnotations xmi:id="_Ec-dgle8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_WjlMAPWcEdyuYMHNZCqWBQ"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-dg1e8Ed2bzMTtqNY1Rw" name="base_Operation" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Operation"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dhVe8Ed2bzMTtqNY1Rw" name="Remote"> + <eAnnotations xmi:id="_Ec-dhle8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_ZflqIPWcEdyuYMHNZCqWBQ"/> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Ec-dh1e8Ed2bzMTtqNY1Rw" name="isolation" ordered="false" lowerBound="1" eType="_Ec-djVe8Ed2bzMTtqNY1Rw"/> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Ec-diVe8Ed2bzMTtqNY1Rw" name="propagation" ordered="false" lowerBound="1" eType="_Ec-dkFe8Ed2bzMTtqNY1Rw"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-di1e8Ed2bzMTtqNY1Rw" name="base_Operation" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Operation"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Ec-djVe8Ed2bzMTtqNY1Rw" name="IsolationKind"> + <eAnnotations xmi:id="_Ec-djle8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_j6wBcPWcEdyuYMHNZCqWBQ"/> + <eLiterals xmi:id="_Ec-dj1e8Ed2bzMTtqNY1Rw" name="DEFAULT"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Ec-dkFe8Ed2bzMTtqNY1Rw" name="PropagationKind"> + <eAnnotations xmi:id="_Ec-dkVe8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tlDjkPWcEdyuYMHNZCqWBQ"/> + <eLiterals xmi:id="_Ec-dkle8Ed2bzMTtqNY1Rw" name="REQUIRED"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dk1e8Ed2bzMTtqNY1Rw" name="Exception"> + <eAnnotations xmi:id="_Ec-dlFe8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_lx7EMASfEd2Qys9YSCxJaQ"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-dlVe8Ed2bzMTtqNY1Rw" name="base_Class" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Class"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dl1e8Ed2bzMTtqNY1Rw" name="BusinessException"> + <eAnnotations xmi:id="_Ec-dmFe8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_nISaMASfEd2Qys9YSCxJaQ"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-dmVe8Ed2bzMTtqNY1Rw" name="base_Class" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Class"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dm1e8Ed2bzMTtqNY1Rw" name="Date"> + <eAnnotations xmi:id="_Ec-dnFe8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_unIxYASfEd2Qys9YSCxJaQ"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dnVe8Ed2bzMTtqNY1Rw" name="Object"> + <eAnnotations xmi:id="_Ec-dnle8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_xqoXkASfEd2Qys9YSCxJaQ"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-dn1e8Ed2bzMTtqNY1Rw" name="Find"> + <eAnnotations xmi:id="_Ec-doFe8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_byHz8CJ_Ed2GDZ9LTWQlnQ"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-doVe8Ed2bzMTtqNY1Rw" name="base_Operation" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Operation"/> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-do1e8Ed2bzMTtqNY1Rw" name="PrimaryKey"> + <eAnnotations xmi:id="_Ec-dpFe8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vD2GEDMDEd2Yc8GSK7DNVQ"/> + <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Ec-dpVe8Ed2bzMTtqNY1Rw" name="generator" ordered="false" lowerBound="1" eType="_Ec-dp1e8Ed2bzMTtqNY1Rw"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Ec-dp1e8Ed2bzMTtqNY1Rw" name="GeneratorKind"> + <eAnnotations xmi:id="_Ec-dqFe8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_NsN9kDMEEd2Yc8GSK7DNVQ"/> + <eLiterals xmi:id="_Ec-dqVe8Ed2bzMTtqNY1Rw" name="SEQUENCE"/> + <eLiterals xmi:id="_Ec-dqle8Ed2bzMTtqNY1Rw" name="UUID" value="1"/> + <eLiterals xmi:id="_Ec-dq1e8Ed2bzMTtqNY1Rw" name="GUID" value="2"/> + <eLiterals xmi:id="_Ec-drFe8Ed2bzMTtqNY1Rw" name="NATIVE" value="3"/> + </eClassifiers> + <eClassifiers xmi:type="ecore:EClass" xmi:id="_Ec-drVe8Ed2bzMTtqNY1Rw" name="Config"> + <eAnnotations xmi:id="_Ec-drle8Ed2bzMTtqNY1Rw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_9mixIFe7Ed2bzMTtqNY1Rw"/> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-dr1e8Ed2bzMTtqNY1Rw" name="base_Class" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Class"/> + </eStructuralFeatures> + <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Ec-dsVe8Ed2bzMTtqNY1Rw" name="base_Property" ordered="false" lowerBound="1"> + <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Property"/> + </eStructuralFeatures> + </eClassifiers> + </contents> + </eAnnotations> + <elementImport xmi:id="_EcR54Fe8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </elementImport> + <elementImport xmi:id="_EcWyYFe8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </elementImport> + <elementImport xmi:id="_EcXZcle8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/> + </elementImport> + <elementImport xmi:id="_EcYnkFe8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </elementImport> + <elementImport xmi:id="_EcZ1sFe8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </elementImport> + <elementImport xmi:id="_Ecacwle8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </elementImport> + <elementImport xmi:id="_Ecbq4Fe8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/> + </elementImport> + <elementImport xmi:id="_EccR8le8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </elementImport> + <elementImport xmi:id="_EcdgEFe8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/> + </elementImport> + <elementImport xmi:id="_Echxgle8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </elementImport> + <elementImport xmi:id="_Eci_oFe8Ed2bzMTtqNY1Rw"> + <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/> + </elementImport> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_SrijcPWcEdyuYMHNZCqWBQ" name="Service"> + <ownedAttribute xmi:id="_EcXZcVe8Ed2bzMTtqNY1Rw" name="base_Class" association="_EcWyYVe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_UBfCsPWcEdyuYMHNZCqWBQ" name="Dao"> + <ownedAttribute xmi:id="_EciYkle8Ed2bzMTtqNY1Rw" name="base_Class" association="_EciYkFe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_UylvgPWcEdyuYMHNZCqWBQ" name="Dto"> + <ownedAttribute xmi:id="_EcbD0le8Ed2bzMTtqNY1Rw" name="base_Class" association="_EcbD0Fe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_VvA7gPWcEdyuYMHNZCqWBQ" name="Entity"> + <ownedAttribute xmi:id="_EcacwVe8Ed2bzMTtqNY1Rw" name="base_Class" association="_EcZ1sVe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_WjlMAPWcEdyuYMHNZCqWBQ" name="Transactional"> + <ownedAttribute xmi:id="_EcjmsVe8Ed2bzMTtqNY1Rw" name="base_Operation" association="_Eci_oVe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_ZflqIPWcEdyuYMHNZCqWBQ" name="Remote"> + <ownedAttribute xmi:id="_b5QQMPWcEdyuYMHNZCqWBQ" name="isolation" type="_j6wBcPWcEdyuYMHNZCqWBQ"/> + <ownedAttribute xmi:id="_cOoDQPWcEdyuYMHNZCqWBQ" name="propagation" type="_tlDjkPWcEdyuYMHNZCqWBQ"/> + <ownedAttribute xmi:id="_EcYAgle8Ed2bzMTtqNY1Rw" name="base_Operation" association="_EcYAgFe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_j6wBcPWcEdyuYMHNZCqWBQ" name="IsolationKind"> + <ownedLiteral xmi:id="_mn0EoPWcEdyuYMHNZCqWBQ" name="DEFAULT"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_tlDjkPWcEdyuYMHNZCqWBQ" name="PropagationKind"> + <ownedLiteral xmi:id="_uKKbwPWcEdyuYMHNZCqWBQ" name="REQUIRED"/> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_lx7EMASfEd2Qys9YSCxJaQ" name="Exception"> + <ownedAttribute xmi:id="_EcZOole8Ed2bzMTtqNY1Rw" name="base_Class" association="_EcZOoFe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_nISaMASfEd2Qys9YSCxJaQ" name="BusinessException"> + <ownedAttribute xmi:id="_EcWLUVe8Ed2bzMTtqNY1Rw" name="base_Class" association="_EcVkQFe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_unIxYASfEd2Qys9YSCxJaQ" name="Date"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_xqoXkASfEd2Qys9YSCxJaQ" name="Object"/> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_byHz8CJ_Ed2GDZ9LTWQlnQ" name="Find"> + <ownedAttribute xmi:id="_EccR8Ve8Ed2bzMTtqNY1Rw" name="base_Operation" association="_Ecbq4Ve8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_vD2GEDMDEd2Yc8GSK7DNVQ" name="PrimaryKey"> + <ownedAttribute xmi:id="_l2B2MDMEEd2Yc8GSK7DNVQ" name="generator" type="_NsN9kDMEEd2Yc8GSK7DNVQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_NsN9kDMEEd2Yc8GSK7DNVQ" name="GeneratorKind"> + <ownedLiteral xmi:id="_Tq9M4DMEEd2Yc8GSK7DNVQ" name="SEQUENCE"/> + <ownedLiteral xmi:id="_aZ6YMDMEEd2Yc8GSK7DNVQ" name="UUID"/> + <ownedLiteral xmi:id="_dKfpcDMEEd2Yc8GSK7DNVQ" name="GUID"/> + <ownedLiteral xmi:id="_jkPZwDMEEd2Yc8GSK7DNVQ" name="NATIVE"/> + </packagedElement> + <packagedElement xmi:type="uml:Stereotype" xmi:id="_9mixIFe7Ed2bzMTtqNY1Rw" name="Config"> + <ownedAttribute xmi:id="_Ecc5Ale8Ed2bzMTtqNY1Rw" name="base_Class" association="_Ecc5AFe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/> + </ownedAttribute> + <ownedAttribute xmi:id="_EchxgVe8Ed2bzMTtqNY1Rw" name="base_Property" association="_EchKcFe8Ed2bzMTtqNY1Rw"> + <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_EcVkQFe8Ed2bzMTtqNY1Rw" name="Class_BusinessException" memberEnd="_EcWLUFe8Ed2bzMTtqNY1Rw _EcWLUVe8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EcWLUFe8Ed2bzMTtqNY1Rw" name="extension_BusinessException" type="_nISaMASfEd2Qys9YSCxJaQ" aggregation="composite" association="_EcVkQFe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_EcWyYVe8Ed2bzMTtqNY1Rw" name="Class_Service" memberEnd="_EcXZcFe8Ed2bzMTtqNY1Rw _EcXZcVe8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EcXZcFe8Ed2bzMTtqNY1Rw" name="extension_Service" type="_SrijcPWcEdyuYMHNZCqWBQ" aggregation="composite" association="_EcWyYVe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_EcYAgFe8Ed2bzMTtqNY1Rw" name="Operation_Remote" memberEnd="_EcYAgVe8Ed2bzMTtqNY1Rw _EcYAgle8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EcYAgVe8Ed2bzMTtqNY1Rw" name="extension_Remote" type="_ZflqIPWcEdyuYMHNZCqWBQ" aggregation="composite" association="_EcYAgFe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_EcZOoFe8Ed2bzMTtqNY1Rw" name="Class_Exception" memberEnd="_EcZOoVe8Ed2bzMTtqNY1Rw _EcZOole8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EcZOoVe8Ed2bzMTtqNY1Rw" name="extension_Exception" type="_lx7EMASfEd2Qys9YSCxJaQ" aggregation="composite" association="_EcZOoFe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_EcZ1sVe8Ed2bzMTtqNY1Rw" name="Class_Entity" memberEnd="_EcacwFe8Ed2bzMTtqNY1Rw _EcacwVe8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EcacwFe8Ed2bzMTtqNY1Rw" name="extension_Entity" type="_VvA7gPWcEdyuYMHNZCqWBQ" aggregation="composite" association="_EcZ1sVe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_EcbD0Fe8Ed2bzMTtqNY1Rw" name="Class_Dto" memberEnd="_EcbD0Ve8Ed2bzMTtqNY1Rw _EcbD0le8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EcbD0Ve8Ed2bzMTtqNY1Rw" name="extension_Dto" type="_UylvgPWcEdyuYMHNZCqWBQ" aggregation="composite" association="_EcbD0Fe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_Ecbq4Ve8Ed2bzMTtqNY1Rw" name="Operation_Find" memberEnd="_EccR8Fe8Ed2bzMTtqNY1Rw _EccR8Ve8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EccR8Fe8Ed2bzMTtqNY1Rw" name="extension_Find" type="_byHz8CJ_Ed2GDZ9LTWQlnQ" aggregation="composite" association="_Ecbq4Ve8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_Ecc5AFe8Ed2bzMTtqNY1Rw" name="Class_Config" memberEnd="_Ecc5AVe8Ed2bzMTtqNY1Rw _Ecc5Ale8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Ecc5AVe8Ed2bzMTtqNY1Rw" name="extension_Config" type="_9mixIFe7Ed2bzMTtqNY1Rw" aggregation="composite" association="_Ecc5AFe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_EchKcFe8Ed2bzMTtqNY1Rw" name="Property_Config" memberEnd="_EchxgFe8Ed2bzMTtqNY1Rw _EchxgVe8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EchxgFe8Ed2bzMTtqNY1Rw" name="extension_Config" type="_9mixIFe7Ed2bzMTtqNY1Rw" aggregation="composite" association="_EchKcFe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_EciYkFe8Ed2bzMTtqNY1Rw" name="Class_Dao" memberEnd="_EciYkVe8Ed2bzMTtqNY1Rw _EciYkle8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EciYkVe8Ed2bzMTtqNY1Rw" name="extension_Dao" type="_UBfCsPWcEdyuYMHNZCqWBQ" aggregation="composite" association="_EciYkFe8Ed2bzMTtqNY1Rw"/> + </packagedElement> + <packagedElement xmi:type="uml:Extension" xmi:id="_Eci_oVe8Ed2bzMTtqNY1Rw" name="Operation_Transactional" memberEnd="_EcjmsFe8Ed2bzMTtqNY1Rw _EcjmsVe8Ed2bzMTtqNY1Rw"> + <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_EcjmsFe8Ed2bzMTtqNY1Rw" name="extension_Transactional" type="_WjlMAPWcEdyuYMHNZCqWBQ" aggregation="composite" association="_Eci_oVe8Ed2bzMTtqNY1Rw"/> + </packagedElement> +</uml:Profile> diff --git a/eugene/src/test/resources/xmi/1.2/dependency.xmi b/eugene/src/test/resources/xmi/1.2/dependency.xmi new file mode 100644 index 0000000..16e3c6e --- /dev/null +++ b/eugene/src/test/resources/xmi/1.2/dependency.xmi @@ -0,0 +1,84 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Thu Apr 23 15:41:38 CEST 2009'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>0.26.2(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000B06' + name = 'DependencyTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '-64--88-99-15-403e16ef:120d3349a11:-8000:0000000000000DB3' + name = 'thepackage' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Interface xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CAF' + name = 'OneInterface' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB1' + name = 'OtherInterface' visibility = 'public' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.clientDependency> + <UML:Dependency xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CBA'/> + <UML:Dependency xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CBB'/> + </UML:ModelElement.clientDependency> + <UML:Namespace.ownedElement> + <UML:Dependency xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CBA' + name = 'Dependency3' isSpecification = 'false'> + <UML:Dependency.client> + <UML:Interface xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB1'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Class xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB0'/> + </UML:Dependency.supplier> + </UML:Dependency> + <UML:Dependency xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CBB' + name = 'Dependency4' isSpecification = 'false'> + <UML:Dependency.client> + <UML:Interface xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB1'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Interface xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CAF'/> + </UML:Dependency.supplier> + </UML:Dependency> + </UML:Namespace.ownedElement> + </UML:Interface> + <UML:Class xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CAE' + name = 'OneClass' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Dependency xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB3'/> + <UML:Dependency xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB9'/> + </UML:ModelElement.clientDependency> + <UML:Namespace.ownedElement> + <UML:Dependency xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB3' + name = 'Dependency1' isSpecification = 'false'> + <UML:Dependency.client> + <UML:Class xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CAE'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Class xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB0'/> + </UML:Dependency.supplier> + </UML:Dependency> + <UML:Dependency xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB9' + name = 'Dependency2' isSpecification = 'false'> + <UML:Dependency.client> + <UML:Class xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CAE'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Interface xmi.idref = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CAF'/> + </UML:Dependency.supplier> + </UML:Dependency> + </UML:Namespace.ownedElement> + </UML:Class> + <UML:Class xmi.id = '-64--88-99-15-68eb495d:120d207b126:-8000:0000000000000CB0' + name = 'OtherClass' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Model> + </XMI.content> +</XMI> diff --git a/eugene/src/test/resources/xmi/1.2/enumeration.xmi b/eugene/src/test/resources/xmi/1.2/enumeration.xmi new file mode 100644 index 0000000..8642c7a --- /dev/null +++ b/eugene/src/test/resources/xmi/1.2/enumeration.xmi @@ -0,0 +1,89 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon May 04 14:18:59 CEST 2009'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>0.26.2(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EBA' + name = 'EnumerationTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC5' + name = 'org.test.enums' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Enumeration xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EBB' + name = 'OneEnumeration' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Classifier.feature> + <UML:Operation xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EBC' + name = 'method1' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'true' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EBD' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EBE' + name = 'method2' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EBF' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000873'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC3' + name = 'param' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + <UML:Enumeration.literal> + <UML:EnumerationLiteral xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC0' + name = 'LITERAL1' isSpecification = 'false'/> + <UML:EnumerationLiteral xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC1' + name = 'LITERAL2' isSpecification = 'false'/> + <UML:EnumerationLiteral xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC2' + name = 'LITERAL3' isSpecification = 'false'/> + </UML:Enumeration.literal> + </UML:Enumeration> + <UML:Class xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC6' + name = 'TestClass' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC7' + name = 'typeEnum' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC8'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EC9' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Enumeration xmi.idref = '-64--88-99-15--134e8b6f:1210ad9bedb:-8000:0000000000000EBB'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Model> + </XMI.content> +</XMI> diff --git a/eugene/src/test/resources/xmi/1.2/isis-fish.xmi b/eugene/src/test/resources/xmi/1.2/isis-fish.xmi new file mode 100644 index 0000000..52e2809 --- /dev/null +++ b/eugene/src/test/resources/xmi/1.2/isis-fish.xmi @@ -0,0 +1,4461 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Jan 12 18:09:11 CET 2009'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>0.26(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = 'Im75a362c1m1095378ef06mm7a57' name = 'IsisFish' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7f51' isSpecification = 'false'> + <UML:TaggedValue.dataValue>3.2</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aa7'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7b03' name = 'fr.ifremer.isisfish.entities' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7f3f' name = 'Port' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f4d' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f49' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7f45' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7f47' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7f41' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7f43' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7f45'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7f29' name = 'Cell' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7f3d' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Représente le plus petit élément géographique de la région. Plusieurs Mesh composé constitues une Zone.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f3b' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f39' name = 'latitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f37' name = 'longitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f35' name = 'land' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f33' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' ordering = 'unordered'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7f2f' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7f31' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7f2b' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7f2d' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7f2f'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7f15' name = 'TripType' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f25' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f23' name = 'tripDuration' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a87'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f21' name = 'minTimeBetweenTrip' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a87'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f1f' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7f1b' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7f1d' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7f17' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7f19' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7f1b'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ef7' name = 'VesselType' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f13' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f11' name = 'length' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f0f' name = 'speed' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f0d' name = 'maxTripDuration' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a87'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f0b' name = 'activityRange' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f07' name = 'minCrewSize' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7f09' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Taille minimum de l'équipage sur ce style de bateau</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f03' name = 'unitFuelCostOfTravel' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7f05' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coût d'un heure de carburant</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7f01' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7efd' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7eff' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7ef9' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7efb' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7efd'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7edd' name = 'SetOfVessels' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ef5' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ef3' name = 'numberOfVessels' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eef' name = 'fixedCosts' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7ef1' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coûts fixes décaissés</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eed' name = 'vesselCosts' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eeb' name = 'capitalDeprecation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ee9' name = 'interestCost' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ee7' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7ee3' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ee5' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7edf' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7ee1' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7ee3'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000ADF' + name = 'technicalEfficiencyEquation' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE0'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE1' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE6' + name = 'getTechnicalEfficiency' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE7' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE8' + name = 'date' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a9d'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE9' + name = 'metier' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7ecf' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7ed7' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7ed9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7edb' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7edd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7ed1' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7ed3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7ed5' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f3f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ebd' name = 'Metier' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ecd' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ecb' name = 'gearParameterValue' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ec9' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ec7' name = 'capturableSpeciesComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7ec3' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ec5' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7ebf' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7ec1' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7ec3'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm67cb' name = 'getMetierSeasonInfo' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm67b3' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm67b2' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm67c9' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm67ca' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm67cb'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I44e09810m10d85da62cemm67b3' name = 'getGearParameterValueAsDouble' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I44e09810m10d85da62cemm679b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I44e09810m10d85da62cemm67b1' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I44e09810m10d85da62cemm67b2' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I44e09810m10d85da62cemm67b3'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ea5' name = 'Gear' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ebb' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eb9' name = 'effortUnit' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eb7' name = 'standardisationFactor' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eb5' name = 'parameterName' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eb1' name = 'cost' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7eb3' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coût d'achat de l'engin</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm6903' name = 'possibleValue' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im7ac2ea13m109d5712258mm6967'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7eaf' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7eab' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ead' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7ea7' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7ea9' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7eab'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7e97' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7e9f' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7ea1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7ea3' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7e99' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7e9b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7e9d' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ea5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7e17' name = 'FisheryRegion' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7e95' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Area represente la région dans lequel on va définir la pêcherie. Les objets de la pêcherie n'ont plus de lien vers elle, car il n'y en existe qu'une seul dans chaque pêcherie.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e93' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e91' name = 'minLongitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e8f' name = 'maxLongitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e8d' name = 'minLatitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e8b' name = 'maxLatitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e89' name = 'cellLengthLongitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e87' name = 'cellLengthLatitude' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7afb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e85' name = 'mapFiles' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e81' name = 'getMapFileList' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e83' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e7d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e7f' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e81'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e77' name = 'setMapFileList' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e7b' name = 'v' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad7'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e79' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7aff'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e73' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e75' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e77'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e6f' name = 'getMapFilePath' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e71' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e6b' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e6d' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e6f'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e69' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e65' name = 'getGear' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e67' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7acf'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e61' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e63' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e65'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e5d' name = 'getCell' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e5f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e59' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e5b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e5d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e55' name = 'getTripType' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e57' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7acb'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e51' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e53' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e55'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e4d' name = 'getVesselType' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e4f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e49' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e4b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e4d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e45' name = 'getSpecies' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e47' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac3'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e41' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e43' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e45'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e3d' name = 'getZone' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e3f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad3'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e39' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e3b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e3d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e35' name = 'getStrategy' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e37' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e31' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e33' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e35'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e2d' name = 'getPort' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e2f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad1'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e29' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e2b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e2d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e25' name = 'getMetier' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e27' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7acd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e21' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e23' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e25'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7e1d' name = 'getSetOfVessels' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7e1f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7e19' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7e1b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e1d'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7e09' name = 'possibleTripTypes' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7e11' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm6994'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm6993' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ef7'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7e0b' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7e0d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7e0f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f15'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7dc1' name = 'Population' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e05' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7df1' name = 'geographicId' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7def' name = 'plusGroup' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e03' name = 'growth' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7e01' name = 'growthReverse' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ded' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7df3' name = 'meanWeight' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7df5' name = 'price' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7df7' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Le prix en Kg</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm6879' name = 'naturalDeathRate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7deb' name = 'caractBioComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7df9' name = 'reproductionEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7dfd' name = 'monthGapBetweenReproRecrutement' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7dfb' name = 'recruitmentDistribution' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de5' name = 'recruitmentComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de9' name = 'zonesComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de7' name = 'seasonsComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de3' name = 'capturabilityComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7de1' name = 'migrationComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7ddb' name = 'getPopulationSeasonInfo' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ddf' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ddd' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c73'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7dd7' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7dd9' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7ddb'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7dd1' name = 'N2DToN1D' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7dd5' name = 'm' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7dd3' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7dcd' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7dcf' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7dd1'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7dc7' name = 'split2D' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7dcb' name = 'm' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7dc9' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7dc3' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7dc5' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7dc7'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm6868' name = 'getNaturalDeathBirth' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im1b146941m10d30239e16mm689c' name = 'zone' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im1b146941m10d30239e16mm689b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm6866' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm6867' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm6868'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im1db15ae1m109f9a23092mm696c' name = 'getAge' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm6867' name = 'length' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm6866' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm6865' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im1db15ae1m109f9a23092mm696a' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im1db15ae1m109f9a23092mm696b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im1db15ae1m109f9a23092mm696c'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im1db15ae1m109f9a23092mm6947' name = 'getLength' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm68b8' name = 'age' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm68b7' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3399eed4m109f9aa1b3bmm68b6' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im1db15ae1m109f9a23092mm6945' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im1db15ae1m109f9a23092mm6946' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im1db15ae1m109f9a23092mm6947'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm6911' name = 'mappingZoneReproZoneRecru' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm65b3' name = 'capturability' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '127-0-1-1-29355a30:11d91b439f5:-8000:000000000000109E' + name = 'getNaturalDeathRateMatrix' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '127-0-1-1-29355a30:11d91b439f5:-8000:000000000000109F' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = '127-0-1-1-29355a30:11d91b439f5:-8000:00000000000010A0' + name = 'getNaturalDeathRateMatrix' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = '127-0-1-1-29355a30:11d91b439f5:-8000:00000000000010A1' + language = '' body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = '127-0-1-1-29355a30:11d91b439f5:-8000:000000000000109E'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:AssociationClass xmi.id = 'Im75a362c1m1095378ef06mm7da3' name = 'Selectivity' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7dbb' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7dbd'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7dbf' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7db5' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm6984'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm6983' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ea5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7db3' name = 'equation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7da9' name = 'getCoefficient' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6891' name = 'pop' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6890' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm688f' name = 'metier' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm688e' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7da5' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7da7' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7da9'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7d71' name = 'PopulationGroup' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7da1' name = 'id' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d99' name = 'reproductionRate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d9b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Le taux de fécondité pour le group</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7d7d' name = 'getLength' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im7ac2ea13m109d5712258mm67eb' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7d79' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7d7b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7d7d'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm68c3' name = 'getNaturalDeathRate' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6641' name = 'zone' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6640' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm68c1' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm68c2' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm68c3'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm689e' name = 'getMeanWeight' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im7ac2ea13m109d5712258mm6886' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm689c' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm689d' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm689e'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm6843' name = 'getPrice' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im7ac2ea13m109d5712258mm682b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm6841' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm6842' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm6843'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm681e' name = 'age' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm680d' name = 'minLength' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm67fc' name = 'maxLength' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d73' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'I7cd3ef46m10c166d0777mm6957' name = 'isInLength' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I7cd3ef46m10c166d0777mm693f' name = 'length' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I7cd3ef46m10c166d0777mm693e' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I7cd3ef46m10c166d0777mm6955' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I7cd3ef46m10c166d0777mm6956' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I7cd3ef46m10c166d0777mm6957'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7d63' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d6b' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7d6d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7d6f' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d65' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7d67'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7d69' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'I4b51df9bm109d715de8dmm6966' isSpecification = 'false'> + <UML:TaggedValue.dataValue>id</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'I6fd0e703m109cdb8199dmm6963'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7d4d' name = 'Species' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d61' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d5f' name = 'scientificName' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d5d' name = 'codeRubbin' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d5b' name = 'codeCEE' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d59' name = 'ageGroupType' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d57' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7d53' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7d55' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7d4f' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7d51' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7d53'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:AssociationClass xmi.id = 'Im75a362c1m1095378ef06mm7d29' name = 'TargetSpecies' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d37' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7d39'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7d3b' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d31' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7d33'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7d35' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d4d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d2f' name = 'targetFactorEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d2b' name = 'primaryCatch' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d2d' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Vrai si la MetaPopulation est une espèce visée prioritairement</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm6711' name = 'getTargetFactor' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6691' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6690' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm670f' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm6710' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm6711'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:AssociationClass xmi.id = 'Im75a362c1m1095378ef06mm7cf5' name = 'EffortDescription' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d23' name = 'possibleMetiers' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-118--5a094e24:10f38b38caf:-8000:0000000000000AEB'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-118--5a094e24:10f38b38caf:-8000:0000000000000AEA' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7d1d' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im4979ef54m10e614066ffmm676b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im4979ef54m10e614066ffmm676a' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7edd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d19' name = 'fishingOperation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d1b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Nombre d'opération de pêche par jour</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d17' name = 'fishingOperationDuration' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a87'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d15' name = 'gearsNumberPerOperation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d11' name = 'crewSize' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d13' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Taille de l'équipage pour le métier. Ne peut-être inférieur à VesselType.minCrewSize.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d0d' name = 'unitCostOfFishing' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d0f' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coût de fonctionnement lié à une opération de pêche: carburant, huile, appât, glace (hors transport sur zone)</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d09' name = 'fixedCrewSalary' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d0b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Salaire fixe pour l'ensemble de l'équipage pour un mois</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d05' name = 'crewShareRate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d07' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Taux de part de l'équipage</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7d01' name = 'crewFoodCost' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7d03' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Frais de vivres pour l'ensemble de l'équipage par jour.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cfd' name = 'repairAndMaintenanceGearCost' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7cff' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Coût de maintenance et de réparation par jour d'utilisation</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cf9' name = 'otherRunningCost' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7cfb' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>autres coûts par jour</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cf7' name = 'landingCosts' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '-64--88-99-118--5a094e24:10f38b38caf:-8000:0000000000000AEC' + name = 'toString' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-118--5a094e24:10f38b38caf:-8000:0000000000000AED' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ce5' name = 'Strategy' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cf3' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cf1' name = 'proportionSetOfVessels' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cef' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7ceb' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7ced' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7ce7' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7ce9' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7ceb'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm680b' name = 'getStrategyMonthInfo' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm67f3' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm67f2' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ca1'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm6809' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm680a' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm680b'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AD9' + name = 'inactivityEquationUsed' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000ADA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000ADB' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000ADC' + name = 'inactivityEquation' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000ADD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000ADE' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE2' + name = 'getInactivityDays' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE3' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '127-0-0-1-66ea5032:11bb719bc92:-8000:0000000000000AE4' + name = 'month' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7cd7' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7cdf' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Ia3748d6m10e345e32d8mm676b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Ia3748d6m10e345e32d8mm676a' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ce5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7cd9' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7cdb'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7cdd' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7edd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7cb3' name = 'Result' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cc5' name = 'resultDate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' ordering = 'unordered'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7cc7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7cc9' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a9d'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cbd' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + ordering = 'unordered'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7cc1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7cc3' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7cbf' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Contient la description associé à un type.</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cb5' name = 'matrix' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' + ordering = 'unordered'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7cb9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7cbb' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7cb7' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>contient les matrices associées à chaque type de résultat. La cle est un type et la valeur une matrice</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7cad' name = 'Script' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7cb1' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7caf' name = 'code' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ca1' name = 'StrategyMonthInfo' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ca9' name = 'month' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ca7' name = 'minInactivityDays' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7ca3' name = 'numberOfTrips' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7ca5' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Nombre de Trip par mois. Le nombre de jour d'inactivite et le nombre la duree d'un trip doivent être cohérent pour le mois</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'I54a56778m10d5942be2amm67a0' name = 'proportionMetier' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'I54a56778m10d5942be2amm678f' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I54a56778m10d5942be2amm6777' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I54a56778m10d5942be2amm678d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I54a56778m10d5942be2amm678e' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I54a56778m10d5942be2amm678f'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I54a56778m10d5942be2amm676a' name = 'getProportionMetier' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I54a56778m10d5942be2amm6752' name = 'metier' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I54a56778m10d5942be2amm6751' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I54a56778m10d5942be2amm6768' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I54a56778m10d5942be2amm6769' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I54a56778m10d5942be2amm676a'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I750ca9dfm10dd42991bcmm679b' name = 'setProportionMetier' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I750ca9dfm10dd42991bcmm6783' name = 'metier' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I750ca9dfm10dd42991bcmm6782' name = 'prop' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I750ca9dfm10dd42991bcmm6781' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7aff'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I750ca9dfm10dd42991bcmm6799' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I750ca9dfm10dd42991bcmm679a' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I750ca9dfm10dd42991bcmm679b'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c93' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c9b' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c9d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c9f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ca1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c95' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c97'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c99' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f15'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7c8d' name = 'MetierSeasonInfo' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = 'Im75a362c1m1095378ef06mm7b07'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c91' name = 'seasonZoneComment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c8f' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm66d1' name = 'getTargetFactor' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6669' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm6668' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm66cf' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm66d0' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm66d1'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = '-64--88-99-118--523393cd:10f4d32d651:-8000:0000000000000AD6' + name = 'getCells' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-118--523393cd:10f4d32d651:-8000:0000000000000AD7' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ad5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7c73' name = 'PopulationSeasonInfo' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = 'Im75a362c1m1095378ef06mm7b05'/> + </UML:GeneralizableElement.generalization> + <UML:Namespace.ownedElement> + <UML:Actor xmi.id = 'Im75a362c1m1095378ef06mm7c8b' name = 'java.util.List<fr.ifremer.types.Month>' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Actor xmi.id = 'Im75a362c1m1095378ef06mm7c89' name = 'java.util.List<fr.ifremer.isisfish.types.Month>' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c85' name = 'reproductionDistribution' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c87' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrice représentant la distribution de la reproduction sur les différents mois de la saison.</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c81' name = 'groupChange' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c83' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Si vrai alors la population change de groupe d'age ou de longueurs en debut de saison</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c7d' name = 'simpleLengthChangeMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c7f' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Indique si la matrice de changementde longeur est une matrice simple ou complexe</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c79' name = 'lengthChangeMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c7b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>La matrice de changement de longueur. Appliquable que si la MetaPopulation est en longueur. Cette matrice est [group x group] ou [ (group, zone) x ( group, zone)]</p> +<p></p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7c75' name = 'reproduction' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7c77' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Indique s'il y a de la reproduction durant la saison</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68ef' name = 'useEquationMigration' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68de' name = 'migrationMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d4' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [group x zone(left) x zone(reached)]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68cd' name = 'emigrationMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d3' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [group x zone(left)]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68bc' name = 'immigrationMatrix' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d2' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [group x zone(reached)]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm68ab' name = 'migrationEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm689a' name = 'emigrationEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im3ff869aem10a0d04d456mm6889' name = 'immigrationEquation' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm6878' name = 'getCapturability' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6860' name = 'group' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm685f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm6876' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm6877' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm6878'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm6838' name = 'spacializeLengthChangeMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6813' name = 'mat' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6812' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm6836' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm6837' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm6838'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm67eb' name = 'computeLengthChangeMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm67d3' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm67e9' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm67ea' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm67eb'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm67c6' name = 'getGroupChangeMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6666' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6665' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm67c4' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm67c5' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm67c6'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm67a1' name = 'getMigrationMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d1' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [(group, zone(left)) x (group, zone(reached))]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6789' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6788' name = 'N' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6787' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm679f' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm67a0' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm67a1'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm6738' name = 'getEmigrationMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65d0' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [(group, zone(left)) x (group, zone(left))]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6720' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm671f' name = 'N' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm671e' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm6736' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm6737' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm6738'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm66cf' name = 'getImmigrationMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65cf' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [(group, zone(reached)) x (group, zone(reached))]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm66b7' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm66b6' name = 'N' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm66b5' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm66cd' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm66ce' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm66cf'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im3ff869aem10a0d04d456mm663e' name = 'getReproductionMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im3ff869aem10a0d04d456mm65ce' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>Matrix [zone(repro)]</p></UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6626' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6625' name = 'N' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im3ff869aem10a0d04d456mm6624' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im3ff869aem10a0d04d456mm663c' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im3ff869aem10a0d04d456mm663d' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im3ff869aem10a0d04d456mm663e'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I3988abbcm10c212fd60fmm6934' name = 'unspacializeLengthChangeMatrix' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I3988abbcm10c212fd60fmm691c' name = 'mat' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I3988abbcm10c212fd60fmm691b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aa5'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I3988abbcm10c212fd60fmm6932' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I3988abbcm10c212fd60fmm6933' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I3988abbcm10c212fd60fmm6934'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c65' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c6d' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c6f'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c71' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c67' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c69'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c6b' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'I4b51df9bm109d715de8dmm6962' isSpecification = 'false'> + <UML:TaggedValue.dataValue>firstMonth, lastMonth</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'I6fd0e703m109cdb8199dmm6963'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c73'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c49' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c51' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c53'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c55' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d4d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c4b' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c4d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c4f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c3b' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c43' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c45'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c47' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ebd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c3d' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c3f'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c41' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'I6fd0e703m109cdb8199dmm695f' isSpecification = 'false'> + <UML:TaggedValue.dataValue>firstMonth, lastMonth</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'I6fd0e703m109cdb8199dmm6963'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c1f' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c27' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c29'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c2b' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7edd'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c21' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c23'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c25' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ef7'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7b9b' name = 'ExportScript' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7b9f' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7b9d' name = 'code' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7b25' name = 'Season' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7b35' name = 'getMonths' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7b37' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac1'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7b31' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7b33' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7b35'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7b2b' name = 'setMonths' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7b2f' name = 'listMonth' + isSpecification = 'false' kind = 'in'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7ac1'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7b2d' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7aff'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7b27' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7b29' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7b2b'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'I12c12b7cm10d3828cd40mm678b' name = 'containsMonth' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm675f' name = 'month' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'I12c12b7cm10d3828cd40mm675e' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af7'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'I12c12b7cm10d3828cd40mm6789' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'I12c12b7cm10d3828cd40mm678a' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'I12c12b7cm10d3828cd40mm678b'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b17' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b1f' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b21'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b23' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7b25'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b19' name = 'firstMonth' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b1b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b1d' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b09' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b11' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b13'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b15' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7b25'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b0b' name = 'lastMonth' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b0d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b0f' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Generalization xmi.id = 'Im75a362c1m1095378ef06mm7b07' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7b25'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Generalization xmi.id = 'Im75a362c1m1095378ef06mm7b05' isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c73'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7b25'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm539f' name = 'Zone' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm538c' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm537b' name = 'comment' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm536a' name = 'getFisheryRegion' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5352' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7e17'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm5368' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm5369' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm536a'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b8d' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b95' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b97'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b99' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b8f' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b91'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b93' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f29'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b7f' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b87' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm6992'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm6991' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7c8d'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b81' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b83'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b85' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b55' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b5d' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm6990'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm698f' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b57' name = 'reproductionZone' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b59'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b5b' lower = '1' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b39' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b41' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm698c'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm698b' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b3b' name = 'populationZone' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b3d'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b3f' lower = '1' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7b47' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b4f' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I7d66fd4cm1097d2a905dmm698e'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I7d66fd4cm1097d2a905dmm698d' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7b49' name = 'recruitmentZone' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7b4b'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7b4d' lower = '1' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm539f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a63' name = 'Equation' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Abstraction xmi.idref = 'Im75a362c1m1095378ef06mm52a8'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Namespace.ownedElement> + <UML:Actor xmi.id = 'I3988abbcm10c212fd60fmm68bc' name = 'java.lang.Class' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a71' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a6f' name = 'content' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a69' name = 'evaluate' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a6d' name = 'param' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm50c8'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a6b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a65' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a67' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a69'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm5220' name = 'category' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm520f' name = 'evaluate' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5164' name = 'name' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5163' name = 'value' isSpecification = 'false' + kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aeb'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5162' name = '... others' + isSpecification = 'false' kind = 'in'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7aeb'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5161' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm520d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm520e' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm520f'/> + </UML:Method.specification> + </UML:Method> + <UML:Attribute xmi.id = 'I3988abbcm10c212fd60fmm68df' name = 'language' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'I3988abbcm10c212fd60fmm68ce' name = 'javaInterface' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'I3988abbcm10c212fd60fmm68bb'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm52bd' name = 'Formule' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Classifier.feature> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm528f' name = 'getName' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5277' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm528d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm528e' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm528f'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm526a' name = 'getCategory' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm5252' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm5268' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm5269' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm526a'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm5245' name = 'getContent' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm522d' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm5243' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm5244' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm5245'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Interface> + <UML:Abstraction xmi.id = 'Im75a362c1m1095378ef06mm52a8' isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7ab5'/> + </UML:ModelElement.stereotype> + <UML:Dependency.client> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a63'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm52bd'/> + </UML:Dependency.supplier> + </UML:Abstraction> + <UML:Association xmi.id = 'I4b51df9bm109d715de8dmm6983' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'I4b51df9bm109d715de8dmm6989' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'I4b51df9bm109d715de8dmm6987'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I4b51df9bm109d715de8dmm6988' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7dc1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'I4b51df9bm109d715de8dmm6986' name = 'maturityGroup' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-1-1-78ec9054:11ecbd05bf0:-8000:00000000000010A5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-1-1-78ec9054:11ecbd05bf0:-8000:00000000000010A4' + lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7d71'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = 'Im1b146941m10d30239e16mm68ec' name = 'ActiveRule' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = 'Im75a362c1m1095378ef06mm7a5f'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im1b146941m10d30239e16mm68d9' name = 'activeRuleDate' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a9d'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im1b146941m10d30239e16mm68c8' name = 'name' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im1b146941m10d30239e16mm68b7' name = 'param' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = 'Im75a362c1m1095378ef06mm7c2d' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c35' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c37'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c39' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ce5'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im75a362c1m1095378ef06mm7c2f' name = '' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'ordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7c31'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7c33' lower = '12' + upper = '12'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'I4b51df9bm109d715de8dmm6937' isSpecification = 'false'> + <UML:TaggedValue.dataValue>month</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'I6fd0e703m109cdb8199dmm6963'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7ca1'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = 'Im3c914382m10e6301c457mm6742' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = 'Im3c914382m10e6301c457mm6748' visibility = 'public' + isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im3c914382m10e6301c457mm6725'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im3c914382m10e6301c457mm6724' lower = '0' + upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f3f'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = 'Im3c914382m10e6301c457mm6745' visibility = 'public' + isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' + targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = 'Im3c914382m10e6301c457mm6743'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im3c914382m10e6301c457mm6744' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7f29'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-118--523393cd:10f4d32d651:-8000:0000000000000AD8' + name = 'Set<Cell>' visibility = 'public' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7ab7' name = 'java' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7ae7' name = 'lang' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7b01' name = 'int' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7aff' name = 'void' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7afd' name = 'String' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7afb' name = 'float' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7af9' name = 'double' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7af7' name = 'boolean' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7af5' name = 'int[]' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7af3' name = 'double[]' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7af1' name = 'String[]' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7aef' name = 'Double' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7aed' name = 'Integer' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7aeb' name = 'Object' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ae9' name = 'Exception' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:Namespace.ownedElement> + <UML:Exception xmi.id = 'Im75a362c1m1095378ef06mm52cf' name = 'exception' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Class> + <UML:Class xmi.id = 'I3988abbcm10c212fd60fmm68bb' name = 'Class' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7abd' name = 'util' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ae5' name = 'Collection' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ae3' name = 'Hashtable' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ae1' name = 'HashMap' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7adf' name = 'Set' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7add' name = 'Map' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7adb' name = 'List' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7ad9' name = 'Date' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ad7' name = 'List<String>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ad5' name = 'List<Cell>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ad3' name = 'List<Zone>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ad1' name = 'List<Port>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7acf' name = 'List<Gear>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7acd' name = 'List<Metier>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7acb' name = 'List<TripType>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac9' name = 'List<VesselType>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac7' name = 'List<SetOfVessels>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac5' name = 'List<Strategy>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac3' name = 'List<Species>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7ac1' name = 'List<fr.ifremer.isisfish.types.Month>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm7abf' name = 'List<ManagementRuleParameter>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + <UML:Interface xmi.id = 'Im75a362c1m1095378ef06mm50c8' name = 'Map<String, Object>' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7ab9' name = 'util' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7abb' name = 'ArrayList' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = 'Im75a362c1m1095378ef06mm7ab5' name = 'realize' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:TagDefinition xmi.id = 'Im75a362c1m1095378ef06mm7aaf' name = 'documentation' + isSpecification = 'false' tagType = 'String'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7ab1'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7ab3' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:DataType xmi.id = 'Im75a362c1m1095378ef06mm7aad' name = 'List[]' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + <UML:TagDefinition xmi.id = 'Im75a362c1m1095378ef06mm7aa7' name = 'version' + isSpecification = 'false'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = 'Im75a362c1m1095378ef06mm7aa9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'Im75a362c1m1095378ef06mm7aab' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7aa3' name = 'org.codelutin.math.matrix' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7aa5' name = 'MatrixND' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = 'Im75a362c1m1095378ef06mm7aa1' name = 'ordered' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7a61' name = 'fr.ifremer.isisfish.types' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a9d' name = 'Date' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a9f' name = 'date' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a87' name = 'TimeUnit' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a99' name = 'time' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = 'Im75a362c1m1095378ef06mm7a9b' isSpecification = 'false'> + <UML:TaggedValue.dataValue><p>temps stoké en seconde</p> +</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = 'Im75a362c1m1095378ef06mm7aaf'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a95' name = 'getHour' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a97' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a91' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a93' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a95'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a8d' name = 'getDay' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a8f' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7af9'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a89' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a8b' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a8d'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a73' name = 'Month' visibility = 'public' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' + isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im75a362c1m1095378ef06mm7a85' name = 'monthNumber' + visibility = 'private' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:DataType xmi.idref = 'Im75a362c1m1095378ef06mm7b01'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a81' name = 'next' visibility = 'public' + isSpecification = 'false' ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a83' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a7d' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a7f' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a81'/> + </UML:Method.specification> + </UML:Method> + <UML:Operation xmi.id = 'Im75a362c1m1095378ef06mm7a79' name = 'previous' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im75a362c1m1095378ef06mm7a7b' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7a73'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im75a362c1m1095378ef06mm7a75' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im75a362c1m1095378ef06mm7a77' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7a79'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = 'Im7ac2ea13m109d5712258mm6967' name = 'RangeOfValues' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:Classifier.feature> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm694a' name = 'type' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = 'Im7ac2ea13m109d5712258mm6939' name = 'values' visibility = 'private' + isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable'> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = 'Im75a362c1m1095378ef06mm7afd'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = 'Im7ac2ea13m109d5712258mm6928' name = 'getPossibleValues' + visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = 'Im7ac2ea13m109d5712258mm6910' name = 'return' isSpecification = 'false' + kind = 'return'> + <UML:Parameter.type> + <UML:Interface xmi.idref = 'Im75a362c1m1095378ef06mm7adb'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Method xmi.id = 'Im7ac2ea13m109d5712258mm6926' isSpecification = 'false' + isQuery = 'false'> + <UML:Method.body> + <UML:ProcedureExpression xmi.id = 'Im7ac2ea13m109d5712258mm6927' language = 'java' + body = ''/> + </UML:Method.body> + <UML:Method.specification> + <UML:Operation xmi.idref = 'Im7ac2ea13m109d5712258mm6928'/> + </UML:Method.specification> + </UML:Method> + </UML:Classifier.feature> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = 'Im75a362c1m1095378ef06mm7a5f' name = 'entity' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = 'Im75a362c1m1095378ef06mm7a59' name = 'fr.ifremer.isisfish' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = 'Im75a362c1m1095378ef06mm7a5b' name = 'IsisFishException' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false' isActive = 'false'> + <UML:Namespace.ownedElement> + <UML:Exception xmi.id = 'Im75a362c1m1095378ef06mm7a5d' name = 'exception' + isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> + </UML:Namespace.ownedElement> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:TagDefinition xmi.id = 'I6fd0e703m109cdb8199dmm6963' name = 'order-by' + isSpecification = 'false'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = 'I6fd0e703m109cdb8199dmm6962'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I6fd0e703m109cdb8199dmm6961' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:Stereotype xmi.id = 'I4b51df9bm109d715de8dmm6960' name = 'indexed' + visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>AssociationEnd</UML:Stereotype.baseClass> + </UML:Stereotype> + </UML:Namespace.ownedElement> + </UML:Model> + <UML:Multiplicity xmi.id = 'I4b51df9bm109d715de8dmm6984'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = 'I4b51df9bm109d715de8dmm6985' lower = '1' + upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + <UML:Multiplicity xmi.id = '127-0-1-1-78ec9054:11ecbd05bf0:-8000:00000000000010A3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-1-1-78ec9054:11ecbd05bf0:-8000:00000000000010A2' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + <UML:A_context_raisedSignal> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7e65'/> + <UML:Exception xmi.idref = 'Im75a362c1m1095378ef06mm52cf'/> + <UML:Operation xmi.idref = 'Im75a362c1m1095378ef06mm7da9'/> + <UML:Exception xmi.idref = 'Im75a362c1m1095378ef06mm7a5d'/> + </UML:A_context_raisedSignal> + </XMI.content> +</XMI> diff --git a/eugene/src/test/resources/xmi/1.2/topiatest.xmi b/eugene/src/test/resources/xmi/1.2/topiatest.xmi new file mode 100644 index 0000000..b56b14a --- /dev/null +++ b/eugene/src/test/resources/xmi/1.2/topiatest.xmi @@ -0,0 +1,1334 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Tue Jul 21 15:18:23 CEST 2009'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>0.28(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000077B' + name = 'TopiaTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E3' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>1</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Namespace.ownedElement> + <UML:TagDefinition xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4' + name = 'version' isSpecification = 'false' tagType = 'String'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E6'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E5' + lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:Stereotype xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7' + name = 'entity' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090B' + name = 'org' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090C' + name = 'nuiton' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090D' + name = 'topiatest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA' + name = 'Personne' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF9' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFC' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB0' + name = 'otherNames' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB8'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB7' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE' + name = 'Employe' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D54' + name = 'salary' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D59' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0' + name = 'Company' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011BD' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C4' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9' + name = 'Address' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000903' + name = 'city' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF6' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CE8' + name = 'adress' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF2' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FB' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FC' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'aggregate' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FE' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FF' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000900'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000901' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Generalization xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFE' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFF' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102B' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D02' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001029' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B' + name = 'Department' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D25' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D29'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D28' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A' + name = 'Product' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D37' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B' + name = 'Store' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7D' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D83'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D82' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40' + name = 'Type' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4D' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D53'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D52' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:AssociationClass xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D65' + name = 'Bill' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D66' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D89'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D88' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D69' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8C' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D6D' + name = 'cost' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D75'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D74' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D76' + name = 'date' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D79' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D18' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D19' + name = 'lead' visibility = 'public' isSpecification = 'false' isNavigable = 'false' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D24'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D23' + lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1C' + name = 'leader' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0D' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D10' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D11' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D17'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D16' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2C' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2D' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2E'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2F' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D30' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D36'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D35' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D42' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D43' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4B' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D46' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D47'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D48' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Package xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E71' + name = 'beangen' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72' + name = 'Voiture' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'true' isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Abstraction xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA1' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>Doc for BeanA</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7C' + name = 'immatriculation' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA2' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>attrA of BeanA</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7F' + name = 'modele' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E80'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E81' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE6' + name = 'proprietaire' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE8' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75' + name = 'Roue' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E85' + name = 'mount' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E86' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E87' + name = 'getModel' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E88' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E89' + name = 'id' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Abstraction xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77' + isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'/> + </UML:ModelElement.stereotype> + <UML:Dependency.client> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Interface xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'/> + </UML:Dependency.supplier> + </UML:Abstraction> + <UML:Interface xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76' + name = 'Vehicule' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:Classifier.feature> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7A' + name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7B' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Interface> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8A' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8B' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED2'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED1' + lower = '4' upper = '4'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB' + name = 'RelationDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAC' + name = 'idCompany' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAE' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAF' + name = 'idDepartement' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB0'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB1' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBB' + name = 'dateDebut' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBD' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9' + name = 'PersonneDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Dependency xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> + </UML:ModelElement.stereotype> + <UML:Namespace.ownedElement> + <UML:Dependency xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA' + isSpecification = 'false'> + <UML:Dependency.client> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Dependency.supplier> + </UML:Dependency> + </UML:Namespace.ownedElement> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB2' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB3' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB9' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB6' + name = 'person' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB8' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3' + name = 'Siege' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDB' + name = 'noSerie' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDD' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED4' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED5' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE4' + lower = '1' upper = '4'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED8' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDA' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100A' + name = 'deletetest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B' + name = 'Contact2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001019' + name = 'contactValue' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101B' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101C' + name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102F' + name = 'findAllByCompany' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'/> + </UML:ModelElement.stereotype> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001030' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001033' + name = 'company' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100C' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100D' + name = 'contacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001026'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001025' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001010' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001028'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001027' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017' + name = 'Telephone2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001021' + name = 'prefix' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001022'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001023' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001024' + name = 'country' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001025'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001026' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F' + name = 'Party2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121D' + name = 'topia' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121E' + name = 'test' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121F' + name = 'entities' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220' + name = 'Person' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001228' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001229'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122A' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122B' + name = 'firstname' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221' + name = 'Pet' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001222' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001223'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001224' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001225' + name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001226'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001227' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001237' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001238' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001239'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123A' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123B' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123E' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102A' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102B' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001030' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029' + name = 'Race' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001031' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001032'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001033' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73' + name = 'bean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74' + name = 'dto' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78' + name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001031' + name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032' + name = 'Set<Contact2>' visibility = 'public' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034' + name = 'dao' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Operation</UML:Stereotype.baseClass> + </UML:Stereotype> + </UML:Namespace.ownedElement> + </UML:Model> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001233'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001234' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </XMI.content> +</XMI> diff --git a/eugene/src/test/resources/xmi/1.2/topiatest.zargo b/eugene/src/test/resources/xmi/1.2/topiatest.zargo new file mode 100644 index 0000000..2e86d26 Binary files /dev/null and b/eugene/src/test/resources/xmi/1.2/topiatest.zargo differ diff --git a/eugene/src/test/resources/xmi/2.1/TestXMI21.properties b/eugene/src/test/resources/xmi/2.1/TestXMI21.properties new file mode 100644 index 0000000..709ae39 --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/TestXMI21.properties @@ -0,0 +1,2 @@ + +model.tagvalue.anytag=azerty diff --git a/eugene/src/test/resources/xmi/2.1/TestXMI21.uml b/eugene/src/test/resources/xmi/2.1/TestXMI21.uml new file mode 100644 index 0000000..e7715ff --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/TestXMI21.uml @@ -0,0 +1,246 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xmi:id="_qb8akM37EdqwVrslYOdUDA" name="XMITest21"> + <packagedElement xmi:type="uml:Package" xmi:id="_w8IxIM37EdqwVrslYOdUDA" name="org.nuiton.eugene.test21"> + <eAnnotations xmi:id="_WUax4GWDEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_WUax4WWDEd64qsCRqbn5Bg" key="documentation" value="model doc!"/> + </eAnnotations> + <packagedElement xmi:type="uml:Class" xmi:id="_NNUyUP58Ed2zEeRO-8Et9Q" name="ClassA" clientDependency="_X7ZekP58Ed2zEeRO-8Et9Q _YbeFwf58Ed2zEeRO-8Et9Q" isAbstract="true"> + <eAnnotations xmi:id="_La8WoGVyEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_La-L0GVyEd64qsCRqbn5Bg" key="documentation" value="My Class A is a super Class!"/> + </eAnnotations> + <ownedAttribute xmi:id="_OkwfUP58Ed2zEeRO-8Et9Q" name="name" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qOxkEFUHEd6orZyN8N8Vlw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S7E-oFUIEd6orZyN8N8Vlw" value="2"/> + </ownedAttribute> + <interfaceRealization xmi:id="_X7ZekP58Ed2zEeRO-8Et9Q" name="InterfaceRealization1" supplier="_TdnrsP58Ed2zEeRO-8Et9Q" client="_NNUyUP58Ed2zEeRO-8Et9Q" contract="_TdnrsP58Ed2zEeRO-8Et9Q"/> + <interfaceRealization xmi:id="_YbeFwf58Ed2zEeRO-8Et9Q" name="InterfaceRealization2" supplier="_VvGmIP58Ed2zEeRO-8Et9Q" client="_NNUyUP58Ed2zEeRO-8Et9Q" contract="_VvGmIP58Ed2zEeRO-8Et9Q"/> + <ownedOperation xmi:id="_hm5koP6qEd2zEeRO-8Et9Q" name="add"> + <eAnnotations xmi:id="_kJ_xsGVvEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_kJ_xsWVvEd64qsCRqbn5Bg" key="documentation" value="That is just a method to add a Formula!"/> + </eAnnotations> + <ownedParameter xmi:id="_il4VYP6qEd2zEeRO-8Et9Q" name="formula" type="_DIpMEP6iEd2zEeRO-8Et9Q"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_TdnrsP58Ed2zEeRO-8Et9Q" name="InterfaceA"> + <eAnnotations xmi:id="_Pl1NQGVzEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_Pl10UGVzEd64qsCRqbn5Bg" key="documentation" value="Interface A. What is interface A? Interface A is the interface called A. What else?"/> + </eAnnotations> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_VvGmIP58Ed2zEeRO-8Et9Q" name="InterfaceB"/> + <packagedElement xmi:type="uml:Class" xmi:id="_ZsQYMP58Ed2zEeRO-8Et9Q" name="ClassB"> + <eAnnotations xmi:id="_qD2fAGWFEd65mK_2GazyJQ" source="http://www.topcased.org/documentation"> + <details xmi:id="_qD3GEGWFEd65mK_2GazyJQ" key="documentation" value="This is some documentation on multiple lines ! Very hard to do !"/> + </eAnnotations> + <generalization xmi:id="_eo5RUP58Ed2zEeRO-8Et9Q" general="_NNUyUP58Ed2zEeRO-8Et9Q"/> + <ownedAttribute xmi:id="_aqVxEP58Ed2zEeRO-8Et9Q" name="cost"> + <eAnnotations xmi:id="_19P_QP6VEd2zEeRO-8Et9Q" source="http://www.topcased.org/documentation"> + <details xmi:id="_19QmUP6VEd2zEeRO-8Et9Q" key="documentation" value="Cost attribute comment"/> + </eAnnotations> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_je1FgP58Ed2zEeRO-8Et9Q" name="protectedCost" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_nr6xAP58Ed2zEeRO-8Et9Q" name="privateCost" visibility="private"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Ak0J8P6NEd2zEeRO-8Et9Q" name="packageCost" visibility="package"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_8-GlgFRNEd6cNsKbEBJ-iA" name="double" type="_7MEnMFRNEd6cNsKbEBJ-iA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_f4vvoP58Ed2zEeRO-8Et9Q" name="ClassC"> + <eAnnotations xmi:id="_wS4dcP6VEd2zEeRO-8Et9Q" source="http://www.topcased.org/documentation"> + <details xmi:id="_wS6SoP6VEd2zEeRO-8Et9Q" key="documentation" value="Class C Comment"/> + </eAnnotations> + <generalization xmi:id="_hukBwP58Ed2zEeRO-8Et9Q" general="_NNUyUP58Ed2zEeRO-8Et9Q"/> + <ownedAttribute xmi:id="_FrUkMP6iEd2zEeRO-8Et9Q" name="formula" type="_DIpMEP6iEd2zEeRO-8Et9Q"> + <eAnnotations xmi:id="_l4vwgGWFEd65mK_2GazyJQ" source="http://www.topcased.org/documentation"> + <details xmi:id="_l4wXkGWFEd65mK_2GazyJQ" key="documentation" value="azerty"/> + </eAnnotations> + </ownedAttribute> + <ownedOperation xmi:id="_0E3xQP6pEd2zEeRO-8Et9Q" name="launchException" raisedException="_O_SJQP6qEd2zEeRO-8Et9Q"> + <eAnnotations xmi:id="_mX81AGWFEd65mK_2GazyJQ" source="http://www.topcased.org/documentation"> + <details xmi:id="_mX81AWWFEd65mK_2GazyJQ" key="documentation" value="launchExcep comment"/> + </eAnnotations> + <ownedParameter xmi:id="_4JuGwP6pEd2zEeRO-8Et9Q" name="msg"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_3DtAEP6MEd2zEeRO-8Et9Q" name="ClassD" visibility="protected"> + <ownedOperation xmi:id="_ETYGYP6NEd2zEeRO-8Et9Q" name="getFirst"> + <ownedParameter xmi:id="_GtUZQP6NEd2zEeRO-8Et9Q" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_JRci4P6NEd2zEeRO-8Et9Q" name="getSecond" visibility="protected"> + <ownedParameter xmi:id="_MI6fQP6NEd2zEeRO-8Et9Q" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_eBT-AP6qEd2zEeRO-8Et9Q" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_OoKv8P6NEd2zEeRO-8Et9Q" name="close" visibility="package"/> + <ownedOperation xmi:id="_RvNZYP6NEd2zEeRO-8Et9Q" name="getInstance" isStatic="true"> + <ownedParameter xmi:id="_Ss04MP6NEd2zEeRO-8Et9Q" name="return" type="_3DtAEP6MEd2zEeRO-8Et9Q" direction="return"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_dFFFcP6NEd2zEeRO-8Et9Q" name="ClassE"/> + <packagedElement xmi:type="uml:Association" xmi:id="_hQn40P6NEd2zEeRO-8Et9Q" name="Association3" memberEnd="_hQn40f6NEd2zEeRO-8Et9Q _hQn41P6NEd2zEeRO-8Et9Q" navigableOwnedEnd="_hQn40f6NEd2zEeRO-8Et9Q _hQn41P6NEd2zEeRO-8Et9Q"> + <eAnnotations xmi:id="_0N974GWAEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_0N-i8GWAEd64qsCRqbn5Bg" key="documentation" value="this is class D class E asso"/> + </eAnnotations> + <ownedEnd xmi:id="_hQn40f6NEd2zEeRO-8Et9Q" name="source" type="_3DtAEP6MEd2zEeRO-8Et9Q" association="_hQn40P6NEd2zEeRO-8Et9Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hQn40v6NEd2zEeRO-8Et9Q" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hQn40_6NEd2zEeRO-8Et9Q"/> + </ownedEnd> + <ownedEnd xmi:id="_hQn41P6NEd2zEeRO-8Et9Q" name="target" visibility="public" type="_dFFFcP6NEd2zEeRO-8Et9Q" association="_hQn40P6NEd2zEeRO-8Et9Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hQn41f6NEd2zEeRO-8Et9Q" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hQn41v6NEd2zEeRO-8Et9Q"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_pboycP6NEd2zEeRO-8Et9Q" name="ClassF"> + <ownedAttribute xmi:id="_rdaF0P6hEd2zEeRO-8Et9Q" name="equation" type="_ncUO8P6hEd2zEeRO-8Et9Q"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_rmReBP6NEd2zEeRO-8Et9Q" name="Association4" memberEnd="_rmReBf6NEd2zEeRO-8Et9Q _rmReCP6NEd2zEeRO-8Et9Q"> + <ownedEnd xmi:id="_rmReBf6NEd2zEeRO-8Et9Q" name="source" type="_pboycP6NEd2zEeRO-8Et9Q" association="_rmReBP6NEd2zEeRO-8Et9Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rmReBv6NEd2zEeRO-8Et9Q" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rmReB_6NEd2zEeRO-8Et9Q" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_rmReCP6NEd2zEeRO-8Et9Q" name="target" type="_dFFFcP6NEd2zEeRO-8Et9Q" aggregation="composite" association="_rmReBP6NEd2zEeRO-8Et9Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rmReCf6NEd2zEeRO-8Et9Q" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rmReCv6NEd2zEeRO-8Et9Q" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_vhCqcP6NEd2zEeRO-8Et9Q" name="ClassG"/> + <packagedElement xmi:type="uml:AssociationClass" xmi:id="_0bvC4P6NEd2zEeRO-8Et9Q" name="AssociationClassGToF" memberEnd="_0bvp4P6NEd2zEeRO-8Et9Q _0bvp4_6NEd2zEeRO-8Et9Q" navigableOwnedEnd="_0bvp4_6NEd2zEeRO-8Et9Q"> + <eAnnotations xmi:id="_nTt-4GVzEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_nTt-4WVzEd64qsCRqbn5Bg" key="documentation" value="An association Class! That is beautifull!"/> + </eAnnotations> + <ownedAttribute xmi:id="_SRvpQP6OEd2zEeRO-8Et9Q" name="price" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EFloat"/> + </ownedAttribute> + <ownedOperation xmi:id="_QmGm0P6OEd2zEeRO-8Et9Q" name="getPrice"> + <ownedParameter xmi:id="_WKIQEP6OEd2zEeRO-8Et9Q" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EFloat"/> + </ownedParameter> + </ownedOperation> + <ownedEnd xmi:id="_0bvp4P6NEd2zEeRO-8Et9Q" name="source" type="_vhCqcP6NEd2zEeRO-8Et9Q" association="_0bvC4P6NEd2zEeRO-8Et9Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0bvp4f6NEd2zEeRO-8Et9Q" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0bvp4v6NEd2zEeRO-8Et9Q"/> + </ownedEnd> + <ownedEnd xmi:id="_0bvp4_6NEd2zEeRO-8Et9Q" name="target" type="_pboycP6NEd2zEeRO-8Et9Q" association="_0bvC4P6NEd2zEeRO-8Et9Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0bvp5P6NEd2zEeRO-8Et9Q" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0bvp5f6NEd2zEeRO-8Et9Q"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_4u46Gv6NEd2zEeRO-8Et9Q" name="Association5" memberEnd="_4u46G_6NEd2zEeRO-8Et9Q _4u46Hv6NEd2zEeRO-8Et9Q"> + <eAnnotations xmi:id="_czdsMGVzEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_czdsMWVzEd64qsCRqbn5Bg" key="documentation" value="This is an association from ClassC to ClassE."/> + </eAnnotations> + <ownedEnd xmi:id="_4u46G_6NEd2zEeRO-8Et9Q" name="source" type="_dFFFcP6NEd2zEeRO-8Et9Q" isOrdered="true" association="_4u46Gv6NEd2zEeRO-8Et9Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4u46HP6NEd2zEeRO-8Et9Q" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4u46Hf6NEd2zEeRO-8Et9Q"/> + </ownedEnd> + <ownedEnd xmi:id="_4u46Hv6NEd2zEeRO-8Et9Q" name="target" type="_f4vvoP58Ed2zEeRO-8Et9Q" association="_4u46Gv6NEd2zEeRO-8Et9Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4u46H_6NEd2zEeRO-8Et9Q" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4u46IP6NEd2zEeRO-8Et9Q" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_O_SJQP6qEd2zEeRO-8Et9Q" name="ClassCException"/> + <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_7MEnMFRNEd6cNsKbEBJ-iA" name="double"> + <eAnnotations xmi:id="_X-h9kGVzEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_X-ikoGVzEd64qsCRqbn5Bg" key="documentation" value="This is the PrimitiveType Double!"/> + </eAnnotations> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_ZK95QFUREd6orZyN8N8Vlw" name="MultiplicityClass"> + <ownedAttribute xmi:id="_dA6QEFUREd6orZyN8N8Vlw" name="strings"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_THY7UFUTEd6orZyN8N8Vlw" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:id="_fT0t4FUREd6orZyN8N8Vlw" name="doubles" type="_7MEnMFRNEd6cNsKbEBJ-iA" isOrdered="true"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Tx7GEFUTEd6orZyN8N8Vlw" value="5"/> + </ownedAttribute> + <ownedAttribute xmi:id="_9VqJ0lUREd6orZyN8N8Vlw" name="dataTypes" type="_yRJ6kFUREd6orZyN8N8Vlw" isOrdered="true" isUnique="false"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_URmEoFUTEd6orZyN8N8Vlw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UtFGwFUTEd6orZyN8N8Vlw"/> + </ownedAttribute> + <ownedOperation xmi:id="_g4qkwFUREd6orZyN8N8Vlw" name="getStrings"> + <ownedParameter xmi:id="_saqoUFUREd6orZyN8N8Vlw" name="return" isOrdered="true" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hVB7MFUSEd6orZyN8N8Vlw" value="*"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_omE8YFUREd6orZyN8N8Vlw" name="getDoubles"> + <ownedParameter xmi:id="_aD6eAFUSEd6orZyN8N8Vlw" name="return" type="_7MEnMFRNEd6cNsKbEBJ-iA" isOrdered="true" isUnique="false" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iNo-MFUSEd6orZyN8N8Vlw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h1gLAFUSEd6orZyN8N8Vlw" value="2"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_pibP4FUREd6orZyN8N8Vlw" name="addAndGetAll"> + <ownedParameter xmi:id="_cCm_UFUSEd6orZyN8N8Vlw" name="return" type="_yRJ6kFUREd6orZyN8N8Vlw" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kqsPcFUSEd6orZyN8N8Vlw" value="19"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iyibAFUSEd6orZyN8N8Vlw" value="3"/> + </ownedParameter> + <ownedParameter xmi:id="_tjh4YFUSEd6orZyN8N8Vlw" name="strings"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1C7pMFUSEd6orZyN8N8Vlw" value="*"/> + </ownedParameter> + <ownedParameter xmi:id="_upvSgFUSEd6orZyN8N8Vlw" name="doubles" type="_7MEnMFRNEd6cNsKbEBJ-iA" isOrdered="true"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0nKTMFUSEd6orZyN8N8Vlw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vh5iMFUVEd6orZyN8N8Vlw" value="5"/> + </ownedParameter> + <ownedParameter xmi:id="_vP1pMFUSEd6orZyN8N8Vlw" name="dataTypes" type="_yRJ6kFUREd6orZyN8N8Vlw" isOrdered="true" isUnique="false"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0JQPMFUSEd6orZyN8N8Vlw" value="18"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_6fjfYFUREd6orZyN8N8Vlw" name="getDataTypes"> + <ownedParameter xmi:id="_nnO5EFUSEd6orZyN8N8Vlw" name="return" type="_yRJ6kFUREd6orZyN8N8Vlw" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s3BXsFUSEd6orZyN8N8Vlw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGn1gFUSEd6orZyN8N8Vlw"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_yRJ6kFUREd6orZyN8N8Vlw" name="DataType1"> + <eAnnotations xmi:id="_UsryUGVzEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_UsryUWVzEd64qsCRqbn5Bg" key="documentation" value="Just call it DataType1"/> + </eAnnotations> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_y9HIAFUZEd6orZyN8N8Vlw" name="StaticClass"> + <ownedAttribute xmi:id="_0gQ80lUZEd6orZyN8N8Vlw" name="azerty" isStatic="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <defaultValue xmi:type="uml:LiteralString" xmi:id="_2VwygFWgEd6d4fJXl9gajg" value="azerty"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_brBJ8FZrEd6IzL8VmWdbhw" name="SubClass"> + <generalization xmi:id="_fFgT01ZrEd6IzL8VmWdbhw" general="_y9HIAFUZEd6orZyN8N8Vlw"/> + <ownedAttribute xmi:id="_gfXpwFZrEd6IzL8VmWdbhw" name="toto"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_9y2ygGWAEd64qsCRqbn5Bg" name="MyEnumeration"> + <eAnnotations xmi:id="_agNu0GWBEd64qsCRqbn5Bg" source="http://www.topcased.org/documentation"> + <details xmi:id="_agOV4GWBEd64qsCRqbn5Bg" key="documentation" value="MyEnumeration is just a simply enumeration in order to test documentation in enumeration."/> + </eAnnotations> + <ownedLiteral xmi:id="_BGl0IGWBEd64qsCRqbn5Bg" name="Literal1"/> + <ownedLiteral xmi:id="_B75EcmWBEd64qsCRqbn5Bg" name="Literal2"/> + </packagedElement> + <profileApplication xmi:id="_7Jv4UP6gEd2zEeRO-8Et9Q"> + <eAnnotations xmi:id="_7Jv4Uf6gEd2zEeRO-8Et9Q" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w"/> + </eAnnotations> + <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_ncUO8P6hEd2zEeRO-8Et9Q" name="Equation"/> + <packagedElement xmi:type="uml:Package" xmi:id="_8d2vEP6hEd2zEeRO-8Et9Q" name="org"> + <packagedElement xmi:type="uml:Package" xmi:id="_-aZUQP6hEd2zEeRO-8Et9Q" name="codelutin"> + <packagedElement xmi:type="uml:Package" xmi:id="_BYCKEP6iEd2zEeRO-8Et9Q" name="types"> + <packagedElement xmi:type="uml:DataType" xmi:id="_DIpMEP6iEd2zEeRO-8Et9Q" name="Formula"/> + </packagedElement> + </packagedElement> + </packagedElement> +</uml:Model> diff --git a/eugene/src/test/resources/xmi/2.1/TestXMI21.umldi b/eugene/src/test/resources/xmi/2.1/TestXMI21.umldi new file mode 100644 index 0000000..2be2169 --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/TestXMI21.umldi @@ -0,0 +1,527 @@ +<?xml version="1.0" encoding="UTF-8"?> +<diagrams:Diagrams xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.topcased.org/DI/1.0" xmlns:diagrams="http://www.topcased.org/Diagrams/1.0" xmi:id="__zkfAf3jEd2LebRc8diKJw" activeDiagram="__zpXgP3jEd2LebRc8diKJw"> + <model href="TestXMI21.uml#_w8IxIM37EdqwVrslYOdUDA"/> + <diagrams xmi:id="__zpXgP3jEd2LebRc8diKJw" position="0,0" size="100,100" name="CDTest21" viewport="0,80"> + <property xmi:id="__7azcP3jEd2LebRc8diKJw" key="pageFormatName" value="A4"/> + <property xmi:id="__7azcf3jEd2LebRc8diKJw" key="diagramWidth" value="840"/> + <property xmi:id="__7azcv3jEd2LebRc8diKJw" key="diagramHeight" value="1188"/> + <property xmi:id="__7azc_3jEd2LebRc8diKJw" key="pageMarginName" value="Small Margin"/> + <property xmi:id="__7azdP3jEd2LebRc8diKJw" key="diagramTopMargin" value="20"/> + <property xmi:id="__7azdf3jEd2LebRc8diKJw" key="diagramBottomMargin" value="20"/> + <property xmi:id="__7azdv3jEd2LebRc8diKJw" key="diagramLeftMargin" value="20"/> + <property xmi:id="__7azd_3jEd2LebRc8diKJw" key="diagramRightMargin" value="20"/> + <property xmi:id="__7azeP3jEd2LebRc8diKJw" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="__zqloP3jEd2LebRc8diKJw" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="TestXMI21.uml#_w8IxIM37EdqwVrslYOdUDA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_NM0cAP58Ed2zEeRO-8Et9Q" position="237,149" size="253,-1"> + <anchorage xmi:id="_X7T_AP58Ed2zEeRO-8Et9Q" graphEdge="_X7Y3gP58Ed2zEeRO-8Et9Q _YbdesP58Ed2zEeRO-8Et9Q _eo4qQP58Ed2zEeRO-8Et9Q _hujasP58Ed2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_NM0cAf58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_NNUyUP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_NM1DEP58Ed2zEeRO-8Et9Q"> + <property xmi:id="_NM1DEf58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_NM1DEv58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_NNUyUP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_OkPh8P58Ed2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_OkPh8f58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_OkwfUP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_NM1DE_58Ed2zEeRO-8Et9Q"> + <property xmi:id="_NM1DFP58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_NM1DFf58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_NNUyUP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_hm4WgP6qEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_hm4Wgf6qEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_hm5koP6qEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_TdM08P58Ed2zEeRO-8Et9Q" position="160,28" size="135,-1"> + <anchorage xmi:id="_X7T_Af58Ed2zEeRO-8Et9Q" graphEdge="_X7Y3gP58Ed2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_TdM08f58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_TdnrsP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_TdM08v58Ed2zEeRO-8Et9Q"> + <property xmi:id="_TdM08_58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_TdM09P58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_TdnrsP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_TdM09f58Ed2zEeRO-8Et9Q"> + <property xmi:id="_TdM09v58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_TdM09_58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_TdnrsP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_VvEw8P58Ed2zEeRO-8Et9Q" position="363,30" size="135,-1"> + <anchorage xmi:id="_YbbpgP58Ed2zEeRO-8Et9Q" graphEdge="_YbdesP58Ed2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_VvEw8f58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_VvGmIP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_VvEw8v58Ed2zEeRO-8Et9Q"> + <property xmi:id="_VvEw8_58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_VvEw9P58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_VvGmIP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_VvEw9f58Ed2zEeRO-8Et9Q"> + <property xmi:id="_VvEw9v58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_VvEw9_58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_VvGmIP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_X7Y3gP58Ed2zEeRO-8Et9Q" anchor="_X7T_AP58Ed2zEeRO-8Et9Q _X7T_Af58Ed2zEeRO-8Et9Q"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_X7Y3gf58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_X7ZekP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_X7Y3gv58Ed2zEeRO-8Et9Q" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_YbdesP58Ed2zEeRO-8Et9Q" anchor="_X7T_AP58Ed2zEeRO-8Et9Q _YbbpgP58Ed2zEeRO-8Et9Q"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Ybdesf58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_YbeFwf58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_YbeFwP58Ed2zEeRO-8Et9Q" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ZsN78P58Ed2zEeRO-8Et9Q" position="114,257" size="195,-1"> + <anchorage xmi:id="_eo1m8P58Ed2zEeRO-8Et9Q" graphEdge="_eo4qQP58Ed2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZsN78f58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_ZsQYMP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ZsN78v58Ed2zEeRO-8Et9Q"> + <property xmi:id="_ZsN78_58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZsN79P58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_ZsQYMP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_aqT74P58Ed2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_aqUi8P58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_aqVxEP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_jez3YP58Ed2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_jez3Yf58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_je1FgP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_nr5i4P58Ed2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_nr5i4f58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_nr6xAP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Aky70P6NEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Aky70f6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_Ak0J8P6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_8-C7IFRNEd6cNsKbEBJ-iA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_8-C7IVRNEd6cNsKbEBJ-iA" presentation="default"> + <element href="TestXMI21.uml#_8-GlgFRNEd6cNsKbEBJ-iA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ZsN79f58Ed2zEeRO-8Et9Q"> + <property xmi:id="_ZsN79v58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZsN79_58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_ZsQYMP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_eo4qQP58Ed2zEeRO-8Et9Q" anchor="_eo1m8P58Ed2zEeRO-8Et9Q _X7T_AP58Ed2zEeRO-8Et9Q"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_eo4qQf58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_eo5RUP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_eo4qQv58Ed2zEeRO-8Et9Q" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_f4tTYP58Ed2zEeRO-8Et9Q" position="453,268" size="233,-1"> + <anchorage xmi:id="_hug-cP58Ed2zEeRO-8Et9Q" graphEdge="_hujasP58Ed2zEeRO-8Et9Q _4u46EP6NEd2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_f4t6cP58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_f4vvoP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_f4t6cf58Ed2zEeRO-8Et9Q"> + <property xmi:id="_f4t6cv58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_f4t6c_58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_f4vvoP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_FrTWEP6iEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_FrTWEf6iEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_FrUkMP6iEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_f4t6dP58Ed2zEeRO-8Et9Q"> + <property xmi:id="_f4t6df58Ed2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_f4t6dv58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_f4vvoP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_0E2jIP6pEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_0E2jIf6pEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_0E3xQP6pEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_hujasP58Ed2zEeRO-8Et9Q" anchor="_hug-cP58Ed2zEeRO-8Et9Q _X7T_AP58Ed2zEeRO-8Et9Q"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_hujasf58Ed2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_hukBwP58Ed2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_hujasv58Ed2zEeRO-8Et9Q" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_3Dqj0P6MEd2zEeRO-8Et9Q" position="22,436" size="291,-1"> + <anchorage xmi:id="_hQjAUP6NEd2zEeRO-8Et9Q" graphEdge="_hQnRwP6NEd2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_3Dqj0f6MEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_3DtAEP6MEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_3Dqj0v6MEd2zEeRO-8Et9Q"> + <property xmi:id="_3Dqj0_6MEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_3Dqj1P6MEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_3DtAEP6MEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_3Dqj1f6MEd2zEeRO-8Et9Q"> + <property xmi:id="_3Dqj1v6MEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_3Dqj1_6MEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_3DtAEP6MEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ETR_wP6NEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ETSm0P6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_ETYGYP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_JRbUwP6NEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_JRbUwf6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_JRci4P6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_OoI6wP6NEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_OoI6wf6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_OoKv8P6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_RvMLQP6NEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_RvMLQf6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_RvNZYP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_dFDQQP6NEd2zEeRO-8Et9Q" position="522,475" size="100,-1"> + <anchorage xmi:id="_hQjAUf6NEd2zEeRO-8Et9Q" graphEdge="_hQnRwP6NEd2zEeRO-8Et9Q _rmQ28P6NEd2zEeRO-8Et9Q _4u46EP6NEd2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_dFDQQf6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_dFFFcP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_dFDQQv6NEd2zEeRO-8Et9Q"> + <property xmi:id="_dFDQQ_6NEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_dFDQRP6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_dFFFcP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_dFDQRf6NEd2zEeRO-8Et9Q"> + <property xmi:id="_dFDQRv6NEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_dFDQR_6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_dFFFcP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_hQnRwP6NEd2zEeRO-8Et9Q" anchor="_hQjAUP6NEd2zEeRO-8Et9Q _hQjAUf6NEd2zEeRO-8Et9Q"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_hQnRwf6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_hQn40P6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_hQnRwv6NEd2zEeRO-8Et9Q" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_hQnRw_6NEd2zEeRO-8Et9Q" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_hQnRxP6NEd2zEeRO-8Et9Q" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_hQnRxf6NEd2zEeRO-8Et9Q" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_hQnRxv6NEd2zEeRO-8Et9Q" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_hQnRx_6NEd2zEeRO-8Et9Q" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_hQnRyP6NEd2zEeRO-8Et9Q" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_hQnRyf6NEd2zEeRO-8Et9Q" id="stereotypeEdgeObject" offset="0,-10"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_pbmWMP6NEd2zEeRO-8Et9Q" position="484,678" size="172,-1"> + <anchorage xmi:id="_rmAYQP6NEd2zEeRO-8Et9Q" graphEdge="_rmQ28P6NEd2zEeRO-8Et9Q _0bvC0P6NEd2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_pbmWMf6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_pboycP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_pbmWMv6NEd2zEeRO-8Et9Q"> + <property xmi:id="_pbm9QP6NEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_pbm9Qf6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_pboycP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_rdY3sP6hEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_rdY3sf6hEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_rdaF0P6hEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_pbm9Qv6NEd2zEeRO-8Et9Q"> + <property xmi:id="_pbm9Q_6NEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_pbm9RP6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_pboycP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_rmQ28P6NEd2zEeRO-8Et9Q" anchor="_rmAYQP6NEd2zEeRO-8Et9Q _hQjAUf6NEd2zEeRO-8Et9Q"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_rmQ28f6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_rmReBP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_rmQ28v6NEd2zEeRO-8Et9Q" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_rmQ28_6NEd2zEeRO-8Et9Q" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_rmQ29P6NEd2zEeRO-8Et9Q" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_rmQ29f6NEd2zEeRO-8Et9Q" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_rmReAP6NEd2zEeRO-8Et9Q" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_rmReAf6NEd2zEeRO-8Et9Q" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_rmReAv6NEd2zEeRO-8Et9Q" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_rmReA_6NEd2zEeRO-8Et9Q" id="stereotypeEdgeObject" offset="0,-10"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_vhAOMP6NEd2zEeRO-8Et9Q" position="47,683" size="100,-1"> + <anchorage xmi:id="_0bpjQP6NEd2zEeRO-8Et9Q" graphEdge="_0bvC0P6NEd2zEeRO-8Et9Q"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_vhAOMf6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_vhCqcP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_vhAOMv6NEd2zEeRO-8Et9Q"> + <property xmi:id="_vhAOM_6NEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_vhAONP6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_vhCqcP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_vhAONf6NEd2zEeRO-8Et9Q"> + <property xmi:id="_vhAONv6NEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_vhAON_6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_vhCqcP6NEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_0bvC0P6NEd2zEeRO-8Et9Q" anchor="_0bpjQP6NEd2zEeRO-8Et9Q _rmAYQP6NEd2zEeRO-8Et9Q"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_0bvC0f6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_0bvC4P6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_0bvC0v6NEd2zEeRO-8Et9Q" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_0bvC0_6NEd2zEeRO-8Et9Q" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_0bvC1P6NEd2zEeRO-8Et9Q" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_0bvC1f6NEd2zEeRO-8Et9Q" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_0bvC1v6NEd2zEeRO-8Et9Q" visible="false" id="middleNameEdgeObject" offset="0,20"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_0bvC1_6NEd2zEeRO-8Et9Q" id="stereotypeEdgeObject"/> + <contained xsi:type="di:GraphNode" xmi:id="_0bvC2P6NEd2zEeRO-8Et9Q" position="236,804" size="100,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_0bvC2f6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_0bvC4P6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_0bvC2v6NEd2zEeRO-8Et9Q"> + <property xmi:id="_0bvC2_6NEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_0bvC3P6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_0bvC4P6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_SRubIP6OEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_SRubIf6OEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_SRvpQP6OEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_0bvC3f6NEd2zEeRO-8Et9Q"> + <property xmi:id="_0bvC3v6NEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_0bvC3_6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_0bvC4P6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_QmExoP6OEd2zEeRO-8Et9Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_QmExof6OEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_QmGm0P6OEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_4u46EP6NEd2zEeRO-8Et9Q" anchor="_hQjAUf6NEd2zEeRO-8Et9Q _hug-cP58Ed2zEeRO-8Et9Q"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_4u46Ef6NEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_4u46Gv6NEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_4u46Ev6NEd2zEeRO-8Et9Q" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_4u46E_6NEd2zEeRO-8Et9Q" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_4u46FP6NEd2zEeRO-8Et9Q" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_4u46Ff6NEd2zEeRO-8Et9Q" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_4u46Fv6NEd2zEeRO-8Et9Q" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_4u46F_6NEd2zEeRO-8Et9Q" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_4u46GP6NEd2zEeRO-8Et9Q" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_4u46Gf6NEd2zEeRO-8Et9Q" id="stereotypeEdgeObject" offset="0,-10"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_O_QUEP6qEd2zEeRO-8Et9Q" position="560,155" size="159,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_O_QUEf6qEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_O_SJQP6qEd2zEeRO-8Et9Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_O_QUEv6qEd2zEeRO-8Et9Q"> + <property xmi:id="_O_QUE_6qEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_O_QUFP6qEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_O_SJQP6qEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_O_QUFf6qEd2zEeRO-8Et9Q"> + <property xmi:id="_O_QUFv6qEd2zEeRO-8Et9Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_O_QUF_6qEd2zEeRO-8Et9Q" presentation="default"> + <element href="TestXMI21.uml#_O_SJQP6qEd2zEeRO-8Et9Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_7Lc8IFRNEd6cNsKbEBJ-iA" position="615,72" size="148,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_7LdjMFRNEd6cNsKbEBJ-iA" presentation="default"> + <element href="TestXMI21.uml#_7MEnMFRNEd6cNsKbEBJ-iA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_7LdjMVRNEd6cNsKbEBJ-iA"> + <property xmi:id="_7LdjMlRNEd6cNsKbEBJ-iA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_7LdjM1RNEd6cNsKbEBJ-iA" presentation="default"> + <element href="TestXMI21.uml#_7MEnMFRNEd6cNsKbEBJ-iA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_7LdjNFRNEd6cNsKbEBJ-iA"> + <property xmi:id="_7LdjNVRNEd6cNsKbEBJ-iA" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_7LdjNlRNEd6cNsKbEBJ-iA" presentation="default"> + <element href="TestXMI21.uml#_7MEnMFRNEd6cNsKbEBJ-iA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ZK1WYFUREd6orZyN8N8Vlw" position="48,804" size="712,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZK1WYVUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_ZK95QFUREd6orZyN8N8Vlw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ZK1WYlUREd6orZyN8N8Vlw"> + <property xmi:id="_ZK1WY1UREd6orZyN8N8Vlw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZK1WZFUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_ZK95QFUREd6orZyN8N8Vlw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_dA3z0FUREd6orZyN8N8Vlw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_dA3z0VUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_dA6QEFUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_fT0G0FUREd6orZyN8N8Vlw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_fT0G0VUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_fT0t4FUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_9VqJ0FUREd6orZyN8N8Vlw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9VqJ0VUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_9VqJ0lUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ZK1WZVUREd6orZyN8N8Vlw"> + <property xmi:id="_ZK1WZlUREd6orZyN8N8Vlw" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZK1WZ1UREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_ZK95QFUREd6orZyN8N8Vlw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_g4ha0FUREd6orZyN8N8Vlw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_g4ha0VUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_g4qkwFUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_omEVUFUREd6orZyN8N8Vlw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_omEVUVUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_omE8YFUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_piao0FUREd6orZyN8N8Vlw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_piao0VUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_pibP4FUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6fi4UFUREd6orZyN8N8Vlw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6fi4UVUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_6fjfYFUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_yRCl0FUREd6orZyN8N8Vlw" position="586,18" size="150,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yRCl0VUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_yRJ6kFUREd6orZyN8N8Vlw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_yRCl0lUREd6orZyN8N8Vlw"> + <property xmi:id="_yRCl01UREd6orZyN8N8Vlw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yRCl1FUREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_yRJ6kFUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_yRCl1VUREd6orZyN8N8Vlw"> + <property xmi:id="_yRCl1lUREd6orZyN8N8Vlw" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yRCl11UREd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_yRJ6kFUREd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_y9F54FUZEd6orZyN8N8Vlw" position="89,1000" size="163,-1"> + <anchorage xmi:id="_fFfFsVZrEd6IzL8VmWdbhw" graphEdge="_fFgT0FZrEd6IzL8VmWdbhw"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_y9F54VUZEd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_y9HIAFUZEd6orZyN8N8Vlw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_y9F54lUZEd6orZyN8N8Vlw"> + <property xmi:id="_y9F541UZEd6orZyN8N8Vlw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_y9F55FUZEd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_y9HIAFUZEd6orZyN8N8Vlw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_0gQ80FUZEd6orZyN8N8Vlw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_0gQ80VUZEd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_0gQ80lUZEd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_y9F55VUZEd6orZyN8N8Vlw"> + <property xmi:id="_y9F55lUZEd6orZyN8N8Vlw" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_y9F551UZEd6orZyN8N8Vlw" presentation="default"> + <element href="TestXMI21.uml#_y9HIAFUZEd6orZyN8N8Vlw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_bqatAFZrEd6IzL8VmWdbhw" position="430,1003" size="100,-1"> + <anchorage xmi:id="_fFfFsFZrEd6IzL8VmWdbhw" graphEdge="_fFgT0FZrEd6IzL8VmWdbhw"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bqbUEFZrEd6IzL8VmWdbhw" presentation="default"> + <element href="TestXMI21.uml#_brBJ8FZrEd6IzL8VmWdbhw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_bqbUEVZrEd6IzL8VmWdbhw"> + <property xmi:id="_bqbUElZrEd6IzL8VmWdbhw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bqbUE1ZrEd6IzL8VmWdbhw" presentation="default"> + <element href="TestXMI21.uml#_brBJ8FZrEd6IzL8VmWdbhw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_gfVNgFZrEd6IzL8VmWdbhw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_gfVNgVZrEd6IzL8VmWdbhw" presentation="default"> + <element href="TestXMI21.uml#_gfXpwFZrEd6IzL8VmWdbhw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_bqbUFFZrEd6IzL8VmWdbhw"> + <property xmi:id="_bqbUFVZrEd6IzL8VmWdbhw" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bqbUFlZrEd6IzL8VmWdbhw" presentation="default"> + <element href="TestXMI21.uml#_brBJ8FZrEd6IzL8VmWdbhw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_fFgT0FZrEd6IzL8VmWdbhw" anchor="_fFfFsFZrEd6IzL8VmWdbhw _fFfFsVZrEd6IzL8VmWdbhw"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_fFgT0VZrEd6IzL8VmWdbhw" presentation="default"> + <element href="TestXMI21.uml#_fFgT01ZrEd6IzL8VmWdbhw"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_fFgT0lZrEd6IzL8VmWdbhw" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_9ytokGWAEd64qsCRqbn5Bg" position="682,516" size="100,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9ytokWWAEd64qsCRqbn5Bg" presentation="default"> + <element href="TestXMI21.uml#_9y2ygGWAEd64qsCRqbn5Bg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_9ytokmWAEd64qsCRqbn5Bg"> + <property xmi:id="_9ytok2WAEd64qsCRqbn5Bg" key="eStructuralFeatureID" value="39"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9ytolGWAEd64qsCRqbn5Bg" presentation="default"> + <element href="TestXMI21.uml#_9y2ygGWAEd64qsCRqbn5Bg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_BGMykGWBEd64qsCRqbn5Bg" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_BGNZoGWBEd64qsCRqbn5Bg" presentation="default"> + <element href="TestXMI21.uml#_BGl0IGWBEd64qsCRqbn5Bg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_B75EcGWBEd64qsCRqbn5Bg" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_B75EcWWBEd64qsCRqbn5Bg" presentation="default"> + <element href="TestXMI21.uml#_B75EcmWBEd64qsCRqbn5Bg"/> + </semanticModel> + </contained> + </contained> + </contained> + </diagrams> +</diagrams:Diagrams> diff --git a/eugene/src/test/resources/xmi/2.1/cmsCore.uml b/eugene/src/test/resources/xmi/2.1/cmsCore.uml new file mode 100644 index 0000000..b730790 --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/cmsCore.uml @@ -0,0 +1,4998 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:AcceleoBusiness="http:///schemas/AcceleoBusiness/_81fAsPWcEdyuYMHNZCqWBQ/0" xmlns:Sharengoserviceprofile="http:///schemas/Sharengoserviceprofile/_bMLXQKEQEd2L7a68DRX6Bg/1" xmlns:Sharengoserviceprofile_1="http:///schemas/Sharengoserviceprofile/_pCa5EPQ4Ed2_aZMAEjWDNQ/2" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/um [...] + <uml:Model xmi:id="_qb8akM37EdqwVrslYOdUDA" name="org::sharengo::cms::core"> + <packagedElement xmi:type="uml:Package" xmi:id="_w8IxIM37EdqwVrslYOdUDA" name="org.sharengo.cms.core.services"> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_EvqPMOiTEd25AsNl_TBRDQ" name="ImportStrategy"> + <ownedLiteral xmi:id="_HU8PYOiTEd25AsNl_TBRDQ" name="CREATE_UPDATE"/> + <ownedLiteral xmi:id="_HrlNwOiTEd25AsNl_TBRDQ" name="UPDATE_ONLY"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_dMNk0OhrEd25AsNl_TBRDQ" name="XMLImportExportSrv" clientDependency="_G83CYOiaEd25AsNl_TBRDQ _MvnEI-iaEd25AsNl_TBRDQ _Z76GVOiaEd25AsNl_TBRDQ _h1gf0-iaEd25AsNl_TBRDQ _ugQAw-uSEd2nbcXqLzlhyA _e3MN8-uiEd2w6L86tbByuw _yGzKsOvUEd2y9MAFkymhaQ _0V7Us-vUEd2y9MAFkymhaQ _FpAlo-7AEd2vc7ElAwQEXw _q0zzQ-7TEd2vc7ElAwQEXw _EIExVPdmEd2Fr5Df5xrkyw _HqrVZPdmEd2Fr5Df5xrkyw _uF1O9PkiEd2ngN8mqQoDPw _uoP_hPkiEd2ngN8mqQoDPw _8dreQ_kiEd2ngN8mqQoDPw _TDTVY_klEd [...] + <ownedOperation xmi:id="_fbp34OhrEd25AsNl_TBRDQ" name="exportContentsByContentDef"> + <ownedParameter xmi:id="_TAPjQOhvEd25AsNl_TBRDQ" name="definitionIds" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OGfJkOhwEd25AsNl_TBRDQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OjP-EOhwEd25AsNl_TBRDQ"/> + </ownedParameter> + <ownedParameter xmi:id="_fChCUOhvEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_hzn00OhrEd25AsNl_TBRDQ" name="exportContentsBySearch"> + <ownedParameter xmi:id="_Wvm7gOhwEd25AsNl_TBRDQ" name="searchCriteria" type="_FzLjsLoaEd2A0rZMX9hUqA" isOrdered="true"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7i_jwOhwEd25AsNl_TBRDQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_76CKwOhwEd25AsNl_TBRDQ"/> + </ownedParameter> + <ownedParameter xmi:id="_xY6OAOhzEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_j-yr4OhrEd25AsNl_TBRDQ" name="exportContentsBySoc"> + <ownedParameter xmi:id="_agNC0OhxEd25AsNl_TBRDQ" name="SocIds" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cmlggOhxEd25AsNl_TBRDQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cFBEgOhxEd25AsNl_TBRDQ"/> + </ownedParameter> + <ownedParameter xmi:id="_y3C_8OhzEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_pSZ6kOhrEd25AsNl_TBRDQ" name="exportContentDefByIds"> + <ownedParameter xmi:id="_oVSjUOhxEd25AsNl_TBRDQ" name="ContentDefIds" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qys7YOh0Ed25AsNl_TBRDQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QgETQOh0Ed25AsNl_TBRDQ"/> + </ownedParameter> + <ownedParameter xmi:id="_0JsTkOhzEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_NaoF8OhsEd25AsNl_TBRDQ" name="exportAllContentDef"> + <ownedParameter xmi:id="_1gaO4OhzEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_Wlc2wOhsEd25AsNl_TBRDQ" name="exportAllLinks"> + <ownedParameter xmi:id="_3rxTMOhzEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_cYvEAOhsEd25AsNl_TBRDQ" name="exportLinksRelatedToContent"> + <ownedParameter xmi:id="_4wQ2EOhzEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_8K04cOhzEd25AsNl_TBRDQ" name="contentId" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NvJDwOh0Ed25AsNl_TBRDQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NbvmoOh0Ed25AsNl_TBRDQ"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_ccEPYOhtEd25AsNl_TBRDQ" name="exportLinksOfLinkDef"> + <ownedParameter xmi:id="_54cmIOhzEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_C3-s8Oh0Ed25AsNl_TBRDQ" name="LinkDefId" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O5O4UOh0Ed25AsNl_TBRDQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OnvfsOh0Ed25AsNl_TBRDQ"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_kxi3IOhuEd25AsNl_TBRDQ" name="importContents"> + <ownedParameter xmi:id="_XFj2AOhzEd25AsNl_TBRDQ" name="return" type="_kXbRgOhvEd25AsNl_TBRDQ" direction="return"/> + <ownedParameter xmi:id="_hsuB8OhzEd25AsNl_TBRDQ" name="resource"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-yF6AOiREd25AsNl_TBRDQ" name="strategy" type="_EvqPMOiTEd25AsNl_TBRDQ"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_R_qg8OYHEd2ikLHnwqSzSg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_JUeMMOlZEd2hcOPlZHSiFw"/> + </ownedOperation> + <ownedOperation xmi:id="_mu5UoOhuEd25AsNl_TBRDQ" name="importContentDef"> + <ownedParameter xmi:id="_YV1LEOhzEd25AsNl_TBRDQ" name="return" type="_kXbRgOhvEd25AsNl_TBRDQ" direction="return"/> + <ownedParameter xmi:id="_pjgYAOhzEd25AsNl_TBRDQ" name="resource"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-yF6AOiREd25AsNl_TBRDQ" name="strategy" type="_EvqPMOiTEd25AsNl_TBRDQ"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_R_qg8OYHEd2ikLHnwqSzSg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_JUeMMOlZEd2hcOPlZHSiFw"/> + </ownedOperation> + <ownedOperation xmi:id="_oerQMOhuEd25AsNl_TBRDQ" name="importLinks"> + <ownedParameter xmi:id="_ZhGrYOhzEd25AsNl_TBRDQ" name="return" type="_kXbRgOhvEd25AsNl_TBRDQ" direction="return"/> + <ownedParameter xmi:id="_sbJTgOhzEd25AsNl_TBRDQ" name="resource"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-yF6AOiREd25AsNl_TBRDQ" name="strategy" type="_EvqPMOiTEd25AsNl_TBRDQ"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_R_qg8OYHEd2ikLHnwqSzSg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_JUeMMOlZEd2hcOPlZHSiFw"/> + </ownedOperation> + <ownedOperation xmi:id="_YL-0EOiKEd25AsNl_TBRDQ" name="importSoc"> + <ownedParameter xmi:id="_Zh7TUOiKEd25AsNl_TBRDQ" name="resource"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-yF6AOiREd25AsNl_TBRDQ" name="strategy" type="_EvqPMOiTEd25AsNl_TBRDQ"/> + <ownedParameter xmi:id="_ZzEtsOiKEd25AsNl_TBRDQ" name="return" type="_kXbRgOhvEd25AsNl_TBRDQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_R_qg8OYHEd2ikLHnwqSzSg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_JUeMMOlZEd2hcOPlZHSiFw"/> + </ownedOperation> + <ownedOperation xmi:id="_spkSkOiKEd25AsNl_TBRDQ" name="exportSocByIds"> + <ownedParameter xmi:id="_uHozEOiKEd25AsNl_TBRDQ" name="ids"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xB92MOiKEd25AsNl_TBRDQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wtTNwOiKEd25AsNl_TBRDQ"/> + </ownedParameter> + <ownedParameter xmi:id="_uL0vgOiKEd25AsNl_TBRDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_xNxvMOxcEd2y9MAFkymhaQ" name="exportContentsByIds"> + <ownedParameter xmi:id="_1PcN0OxcEd2y9MAFkymhaQ" name="contentIds" visibility="public" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SgoP8OxdEd2y9MAFkymhaQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VAkdIOxdEd2y9MAFkymhaQ"/> + </ownedParameter> + <ownedParameter xmi:id="_DZdcgOxdEd2y9MAFkymhaQ" name="Parameter1" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_aSQxAPdlEd2Fr5Df5xrkyw" name="exportNomenclatureById"> + <ownedParameter xmi:id="_dwvDAPdlEd2Fr5Df5xrkyw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_gm7NAPdlEd2Fr5Df5xrkyw" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_rz40svdlEd2Fr5Df5xrkyw" name="importNomenclature"> + <ownedParameter xmi:id="_uo4E0PdlEd2Fr5Df5xrkyw" name="return" type="_kXbRgOhvEd25AsNl_TBRDQ" direction="return"/> + <ownedParameter xmi:id="_wU6I0PdlEd2Fr5Df5xrkyw" name="resourse"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_5f-xQPdlEd2Fr5Df5xrkyw" name="strategy" type="_EvqPMOiTEd25AsNl_TBRDQ"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_R_qg8OYHEd2ikLHnwqSzSg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_JUeMMOlZEd2hcOPlZHSiFw"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_Ugb_4Hi_Ed2oZoPbWJIMHg" name="ContentSrv" clientDependency="_JMIko3jAEd2oZoPbWJIMHg _sqMpo3jJEd2vSLEPekkQZw _W1GZ43sfEd2br5ngUa3Ghw _PG6HAIYTEd2FDsNjNrtp7Q _PckZkOleEd2w6L86tbByuw"> + <ownedOperation xmi:id="_LpgsYHjIEd2vSLEPekkQZw" name="create"> + <ownedParameter xmi:id="_OSEDAHjIEd2vSLEPekkQZw" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_RbyNAHjIEd2vSLEPekkQZw" name="content" type="_3UukkHjHEd2vSLEPekkQZw"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </ownedOperation> + <ownedOperation xmi:id="_IaaAMHjVEd2XX6MpUtjnfg" name="find"> + <ownedParameter xmi:id="_KeeJsHjVEd2XX6MpUtjnfg" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return" effect="read"/> + <ownedParameter xmi:id="_Kg8O4HjVEd2XX6MpUtjnfg" name="contentID"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_cqEC8X_REd2UJZ6mvauuHQ" name="delete"> + <ownedParameter xmi:id="_laVlwH_REd2UJZ6mvauuHQ" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_AjD0MEEtEd6CQdz5SsrpPw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_vdrM8IATEd2AxNDbeUs4Sw" name="update"> + <ownedParameter xmi:id="_8-K9gIATEd2AxNDbeUs4Sw" name="content" type="_3UukkHjHEd2vSLEPekkQZw"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_K8Su8JOAEd2PpNHrflS_6A" name="deleteAttributesFromAttributeDef"> + <ownedParameter xmi:id="_QVyjMJOAEd2PpNHrflS_6A" name="attributeDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_OXz74JuJEd2hhejVV_1tQg" name="findAll"> + <ownedParameter xmi:id="_ewFK0JuJEd2hhejVV_1tQg" name="return" type="_G8ZTMJuJEd2hhejVV_1tQg" direction="return"/> + <ownedParameter xmi:id="_iejnsJuJEd2hhejVV_1tQg" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_igZawJuJEd2hhejVV_1tQg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_1INfoJwnEd2jKtVlU3vFlQ" name="findContentHeader"> + <ownedParameter xmi:id="__7k7kJwnEd2jKtVlU3vFlQ" name="return" type="__rDAwJttEd2hONjUBs7mIQ" direction="return"/> + <ownedParameter xmi:id="_BkpLIJwoEd2jKtVlU3vFlQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_2cDtIJwnEd2jKtVlU3vFlQ" name="findContentsByIds"> + <ownedParameter xmi:id="_3aIe8JwnEd2jKtVlU3vFlQ" name="return" type="_5PgFIJwnEd2jKtVlU3vFlQ" direction="return"/> + <ownedParameter xmi:id="_-iY7EJwnEd2jKtVlU3vFlQ" name="ids" type="_o1-dkIVgEd2N0bQZBk24XA"/> + </ownedOperation> + <ownedOperation xmi:id="_Uo5a4LsDEd2hnI17Wy1x7w" name="findContentIdsCorrespondingToContentDefs"> + <ownedParameter xmi:id="_ZplGgLsDEd2hnI17Wy1x7w" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_iI-7wLsDEd2hnI17Wy1x7w" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_P3yNoPm_Ed2-r9_matJLyA" name="findContents"> + <ownedParameter xmi:id="_XNnywPm_Ed2-r9_matJLyA" name="return" type="_nOLcQKXAEd2BUJWkFP_TZQ" direction="return"/> + <ownedParameter xmi:id="_dRgAwPm_Ed2-r9_matJLyA" name="ids" type="_o1-dkIVgEd2N0bQZBk24XA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_-u-c1XTbEd20yqJGyRKhKA" name="Dependency1" supplier="_3ac7wHTaEd20yqJGyRKhKA" client="_yvPJ2HTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_zAlIsHggEd2Vxr2aiClL8g" name="AttributeDefinitionSrv" clientDependency="_CTSdxXghEd2Vxr2aiClL8g _52HgE3jDEd2y99hUAsLkzQ _3JaPFHm8Ed2ql75AYIhxSA _zZJ1IpPJEd24J-xmUsjYjg"> + <ownedOperation xmi:id="_0lpMkHghEd2Vxr2aiClL8g" name="create"> + <ownedParameter xmi:id="_Sddw4HgiEd2Vxr2aiClL8g" name="return" type="_4oxq2HghEd2Vxr2aiClL8g" direction="return"/> + <ownedParameter xmi:id="_VgEmQHgiEd2Vxr2aiClL8g" name="attributeDefinitionData" type="_4oxq2HghEd2Vxr2aiClL8g"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="#_eJUcAN5UEd2Bgrjmm1cxJQ"/> + <raisedException xmi:type="uml:Class" href="#_Qwk5QN5UEd2Bgrjmm1cxJQ"/> + </ownedOperation> + <ownedOperation xmi:id="_QCWoQHhBEd2X9uNQyI_qHw" name="findByContentDef"> + <ownedParameter xmi:id="_kei_oHhBEd2X9uNQyI_qHw" name="return" type="_ZytvEHhBEd2X9uNQyI_qHw" direction="return"/> + <ownedParameter xmi:id="_c3YOIHjqEd2MH8DN-NMNrA" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_0vbNIHhBEd2X9uNQyI_qHw" name="moveAtIndex"> + <ownedParameter xmi:id="_9Z5p8HhBEd2X9uNQyI_qHw" name="index"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_6VQiUHhDEd2X9uNQyI_qHw" name="attributeDefinitionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_bYAHQHkEEd2Atp1vvmnWrA" name="createItem"> + <ownedParameter xmi:id="_j_5KIHkEEd2Atp1vvmnWrA" name="itemData" type="_tM0CIHkDEd2Atp1vvmnWrA"/> + <ownedParameter xmi:id="_tR_noHkEEd2Atp1vvmnWrA" name="return" type="_tM0CIHkDEd2Atp1vvmnWrA" direction="return"/> + <ownedParameter xmi:id="_ih7lEHkJEd2Atp1vvmnWrA" name="idClosedList"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_IsL5oHkKEd2Atp1vvmnWrA" name="moveItemAtIndex"> + <ownedParameter xmi:id="_L5kboHkKEd2Atp1vvmnWrA" name="index"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_QoFZMHkKEd2Atp1vvmnWrA" name="itemId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_m28oEHkKEd2Atp1vvmnWrA" name="deleteItem"> + <ownedParameter xmi:id="_p-XsAHkKEd2Atp1vvmnWrA" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_70CtEHkKEd2Atp1vvmnWrA" name="findItemByClosedListId"> + <ownedParameter xmi:id="_Ayb5sHkLEd2Atp1vvmnWrA" name="idClosedList"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_MtfWcHkLEd2Atp1vvmnWrA" name="return" type="_IB7mQHkLEd2Atp1vvmnWrA" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_M-qAgAl6Ed63k8rLfgI_ng" name="findNamesBeginingWith"> + <ownedParameter xmi:id="_PkOUkAl6Ed63k8rLfgI_ng" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <ownedParameter xmi:id="_SQ-1wAl6Ed63k8rLfgI_ng" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_TgeuwAl6Ed63k8rLfgI_ng" name="nameBeginning"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_v3FY8DVhEd6Qg9MkiTPhqA" name="findById"> + <ownedParameter xmi:id="_yBQxgDVhEd6Qg9MkiTPhqA" name="attDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_0ekhcDVhEd6Qg9MkiTPhqA" name="return" type="_4oxq2HghEd2Vxr2aiClL8g" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_tb8nQESLEd6vAcvzaNvDvA" name="findAllWhichNameIs"> + <ownedParameter xmi:id="_vHNPMESLEd6vAcvzaNvDvA" name="return" type="_ZytvEHhBEd2X9uNQyI_qHw" direction="return"/> + <ownedParameter xmi:id="_x51u4ESLEd6vAcvzaNvDvA" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_CTSdxXghEd2Vxr2aiClL8g" name="Dependency5" supplier="_-4GJSHggEd2Vxr2aiClL8g" client="_zAlIsHggEd2Vxr2aiClL8g"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_JMIko3jAEd2oZoPbWJIMHg" name="Dependency2" supplier="_iO1pkHi_Ed2oZoPbWJIMHg" client="_Ugb_4Hi_Ed2oZoPbWJIMHg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_52HgE3jDEd2y99hUAsLkzQ" name="Dependency3" supplier="_3ac7wHTaEd20yqJGyRKhKA" client="_zAlIsHggEd2Vxr2aiClL8g"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_sqMpo3jJEd2vSLEPekkQZw" name="Dependency4" supplier="_3ac7wHTaEd20yqJGyRKhKA" client="_Ugb_4Hi_Ed2oZoPbWJIMHg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_3JaPFHm8Ed2ql75AYIhxSA" name="Dependency6" supplier="_pfA7oHm8Ed2ql75AYIhxSA" client="_zAlIsHggEd2Vxr2aiClL8g"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_W1GZ43sfEd2br5ngUa3Ghw" name="Dependency7" supplier="_QKN2QHsfEd2br5ngUa3Ghw" client="_Ugb_4Hi_Ed2oZoPbWJIMHg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_O-C80oCrEd2cf9nnj9AFLw" name="Dependency8" supplier="_iO1pkHi_Ed2oZoPbWJIMHg" client="_yvPJ2HTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_IfiXMIVfEd2N0bQZBk24XA" name="ContentIndexSrv"> + <ownedOperation xmi:id="_7ifcgIVfEd2N0bQZBk24XA" name="indexContent"> + <ownedParameter xmi:id="_N5Y7UIVgEd2N0bQZBk24XA" name="content" type="_NcHbSHXPEd2gat_LwJwOew"/> + </ownedOperation> + <ownedOperation xmi:id="_99MkYoVfEd2N0bQZBk24XA" name="deleteContent"> + <ownedParameter xmi:id="_Zb7KYIVgEd2N0bQZBk24XA" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="__vVQYoVfEd2N0bQZBk24XA" name="deleteContentByDefinition"> + <ownedParameter xmi:id="_fdENcIVgEd2N0bQZBk24XA" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_lCpIMLfcEd2R1IIOAjE5TA" name="searchContents"> + <ownedParameter xmi:id="_qZaYkLfcEd2R1IIOAjE5TA" name="return" type="_9szvMJwtEd2jKtVlU3vFlQ" direction="return"/> + <ownedParameter xmi:id="_1QMU4LfcEd2R1IIOAjE5TA" name="keywords" type="_o1-dkIVgEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_2X_DYLfcEd2R1IIOAjE5TA" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_3MlwILfcEd2R1IIOAjE5TA" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_McjHwLpDEd2ea__X_Ke6sQ" name="requestContent"> + <ownedParameter xmi:id="_PzRmALrSEd2ea__X_Ke6sQ" name="restriction" type="_SdWXILpEEd2ea__X_Ke6sQ"/> + <ownedParameter xmi:id="_XHk6ELrSEd2ea__X_Ke6sQ" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_YoEccLrSEd2ea__X_Ke6sQ" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_gDP0kLrSEd2ea__X_Ke6sQ" name="return" type="_9szvMJwtEd2jKtVlU3vFlQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_PG6HAIYTEd2FDsNjNrtp7Q" name="Dependency9" supplier="_IfiXMIVfEd2N0bQZBk24XA" client="_Ugb_4Hi_Ed2oZoPbWJIMHg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_1uQxU5OHEd2PpNHrflS_6A" name="Dependency10" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_yvPJ2HTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_tPcMQ5PGEd24J-xmUsjYjg" name="Dependency12" supplier="_zAlIsHggEd2Vxr2aiClL8g" client="_yvPJ2HTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_zZJ1IpPJEd24J-xmUsjYjg" name="Dependency11" supplier="_QKN2QHsfEd2br5ngUa3Ghw" client="_zAlIsHggEd2Vxr2aiClL8g"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_5PgFIJwnEd2jKtVlU3vFlQ" name="List<ContentHeader>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_9szvMJwtEd2jKtVlU3vFlQ" name="PagedResult<String>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_s08WwKGqEd2ENuCUfYNU7A" name="SetOfContentsSrv" clientDependency="_vhomg6GqEd2ENuCUfYNU7A _WH5fYKTREd2FhPzHNqBWcg _WQgo06TREd2FhPzHNqBWcg _fBi08KZjEd2MuuCSF2EUvA _Akb40aaQEd2G__lOTDfUPw"> + <ownedOperation xmi:id="_qjqdYKQrEd2GAYp1IpBaGw" name="findAllOrderedBy"> + <ownedParameter xmi:id="_uGTdsKQrEd2GAYp1IpBaGw" name="return" type="_wjKoGKQzEd2GAYp1IpBaGw" direction="return"/> + <ownedParameter xmi:id="_zIK1EKQrEd2GAYp1IpBaGw" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_HEKCYKQsEd2GAYp1IpBaGw" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_qrcD4KQsEd2GAYp1IpBaGw" name="sortConstraints" type="_idubkKQsEd2GAYp1IpBaGw"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_92YqIKW-Ed2BUJWkFP_TZQ" name="addContent"> + <ownedParameter xmi:id="_JI7VYKW_Ed2BUJWkFP_TZQ" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_6fGfEKXbEd2kj_N50xZfpA" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_OtjOwKZzEd2vf6b7mmCg9Q" name="return" type="_g6OzsNcdEd2nifBZRRnUOg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="__5FhsKW-Ed2BUJWkFP_TZQ" name="addContents"> + <ownedParameter xmi:id="_CbSYsKW_Ed2BUJWkFP_TZQ" name="return" type="_g6OzsNcdEd2nifBZRRnUOg" direction="return"/> + <ownedParameter xmi:id="_FFNoUKW_Ed2BUJWkFP_TZQ" name="listOfContentIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_8ZZBgKXbEd2kj_N50xZfpA" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_F1R5oKaLEd2G__lOTDfUPw" name="getContents"> + <ownedParameter xmi:id="_NZxl0KaLEd2G__lOTDfUPw" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_PSD9IKaLEd2G__lOTDfUPw" name="return" type="_5PgFIJwnEd2jKtVlU3vFlQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_HD8sMKaLEd2G__lOTDfUPw" name="removeContent"> + <ownedParameter xmi:id="_dVFzAKaLEd2G__lOTDfUPw" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_e_FPoKaLEd2G__lOTDfUPw" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_QYjX0NciEd2nifBZRRnUOg" name="return" type="_g6OzsNcdEd2nifBZRRnUOg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_CjwPgKcwEd26eZS_gEW-Hg" name="getContentsOrderedByContentDef"> + <ownedParameter xmi:id="_FWIQgKcwEd26eZS_gEW-Hg" name="return" type="_G8ZTMJuJEd2hhejVV_1tQg" direction="return"/> + <ownedParameter xmi:id="_HbVpgKcwEd26eZS_gEW-Hg" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_HjijQKcwEd26eZS_gEW-Hg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_Hru18KcwEd26eZS_gEW-Hg" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_BkY-YLSQEd2Svo_ZuxkYww" name="getContentsOrderedBy"> + <ownedParameter xmi:id="_FwGw4LSQEd2Svo_ZuxkYww" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_G5D9ALSQEd2Svo_ZuxkYww" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_Hjmu0LSQEd2Svo_ZuxkYww" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_It-3QLSQEd2Svo_ZuxkYww" name="sortConstraints" type="_idubkKQsEd2GAYp1IpBaGw"/> + <ownedParameter xmi:id="_Li7rILSQEd2Svo_ZuxkYww" name="return" type="_G8ZTMJuJEd2hhejVV_1tQg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_zdDEsLcKEd24mr0Xuj8kuQ" name="removeContents"> + <ownedParameter xmi:id="_3Lo2ULcKEd24mr0Xuj8kuQ" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_5TUUgLcKEd24mr0Xuj8kuQ" name="listOfContentIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_-RCLsLcKEd24mr0Xuj8kuQ" name="return" type="_g6OzsNcdEd2nifBZRRnUOg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_pBtfcvm_Ed2-r9_matJLyA" name="getContentsDtoOrderedByContentDef"> + <ownedParameter xmi:id="_26RKsPm_Ed2-r9_matJLyA" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_1yBTwPnAEd2-r9_matJLyA" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_2-wzsPnAEd2-r9_matJLyA" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_5cHm8PnAEd2-r9_matJLyA" name="setOfContentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_vhomg6GqEd2ENuCUfYNU7A" name="Dependency13" supplier="_dSGT8KGqEd2ENuCUfYNU7A" client="_s08WwKGqEd2ENuCUfYNU7A"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_idubkKQsEd2GAYp1IpBaGw" name="List<SortConstraint>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_fBi08KZjEd2MuuCSF2EUvA" name="Dependency14" supplier="_iO1pkHi_Ed2oZoPbWJIMHg" client="_s08WwKGqEd2ENuCUfYNU7A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Akb40aaQEd2G__lOTDfUPw" name="Dependency15" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_s08WwKGqEd2ENuCUfYNU7A"/> + <packagedElement xmi:type="uml:Class" xmi:id="_YAvggLo_Ed29K_Ps1iXPuQ" name="ContentSearchSrv" clientDependency="_bAZvkLo_Ed29K_Ps1iXPuQ _bREBw7o_Ed29K_Ps1iXPuQ _2Cdy9LuYEd2r54aHCi3ysg _ndJqY-LfEd2Ft61T9l4BYg"> + <ownedOperation xmi:id="_g-dCYLo_Ed29K_Ps1iXPuQ" name="doAdvancedSearch"> + <ownedParameter xmi:id="_j3d24Lo_Ed29K_Ps1iXPuQ" name="contentDefs" type="_mxjpcLo_Ed29K_Ps1iXPuQ"/> + <ownedParameter xmi:id="_vJNQ4Lo_Ed29K_Ps1iXPuQ" name="return" type="_G8ZTMJuJEd2hhejVV_1tQg" direction="return"/> + <ownedParameter xmi:id="_Cg9UALrVEd2Re4E5q7qDVg" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_FVgfQLrVEd2Re4E5q7qDVg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_FDblgMbCEd2uuaPd80qeIQ" name="doSearch"> + <ownedParameter xmi:id="_Qe90sMbCEd2uuaPd80qeIQ" name="searchDtos" type="_JAhtMMbCEd2uuaPd80qeIQ"/> + <ownedParameter xmi:id="_Td65IMbCEd2uuaPd80qeIQ" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_Uj4boMbCEd2uuaPd80qeIQ" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_ipN-oMbCEd2uuaPd80qeIQ" name="return" type="_G8ZTMJuJEd2hhejVV_1tQg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_4OyvUAJfEd6NXsEhrbvcFg" name="doSearchContentIds"> + <ownedParameter xmi:id="_4OyvUQJfEd6NXsEhrbvcFg" name="searchDtos" type="_JAhtMMbCEd2uuaPd80qeIQ"/> + <ownedParameter xmi:id="_4OyvUgJfEd6NXsEhrbvcFg" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_4OyvUwJfEd6NXsEhrbvcFg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_4OyvVAJfEd6NXsEhrbvcFg" name="return" type="_9szvMJwtEd2jKtVlU3vFlQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_bAZvkLo_Ed29K_Ps1iXPuQ" name="Dependency16" supplier="_IfiXMIVfEd2N0bQZBk24XA" client="_YAvggLo_Ed29K_Ps1iXPuQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_bREBw7o_Ed29K_Ps1iXPuQ" name="Dependency17" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_YAvggLo_Ed29K_Ps1iXPuQ"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_mxjpcLo_Ed29K_Ps1iXPuQ" name="List<ContentDefSearchDto>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_Uzat0LrMEd2ea__X_Ke6sQ" name="List<RestrictionDto>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_2Cdy9LuYEd2r54aHCi3ysg" name="Dependency18" supplier="_zAlIsHggEd2Vxr2aiClL8g" client="_YAvggLo_Ed29K_Ps1iXPuQ"/> + <packagedElement xmi:type="uml:Class" xmi:id="_Qwk5QN5UEd2Bgrjmm1cxJQ" name="InvalidTypeException"> + <generalization xmi:id="_W08Pc95UEd2Bgrjmm1cxJQ"> + <general xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </generalization> + <ownedAttribute xmi:id="_qH-mYt5UEd2Bgrjmm1cxJQ" name="expectedType" type="_OoJh0HXVEd2XodZQ_XQIpQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_eJUcAN5UEd2Bgrjmm1cxJQ" name="InvalidDefaultValueException"> + <generalization xmi:id="_jSD3c95UEd2Bgrjmm1cxJQ"> + <general xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </generalization> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_fw3BkN5UEd2Bgrjmm1cxJQ" name="MandatoryValueException"> + <generalization xmi:id="_jiTS495UEd2Bgrjmm1cxJQ"> + <general xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </generalization> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_7_RdIuI7Ed2T1_-09lWd5Q" name="impl"/> + <packagedElement xmi:type="uml:Class" xmi:id="_x1MNMOkqEd2VcLeORko10g" name="ContentLinkSrv" clientDependency="_Jy7_w-krEd2VcLeORko10g _yWuXg-krEd2VcLeORko10g _y3MAQ-krEd2VcLeORko10g _6iGEM-kwEd2w6L86tbByuw"> + <ownedOperation xmi:id="_x1MNMekqEd2VcLeORko10g" name="deleteByContentId"> + <ownedParameter xmi:id="_x1MNMukqEd2VcLeORko10g" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_x1MNM-kqEd2VcLeORko10g" name="findByContentId"> + <ownedParameter xmi:id="_x1MNNOkqEd2VcLeORko10g" name="return" type="_GDHoYO64Ed2f7NU7M_arnA" direction="return"/> + <ownedParameter xmi:id="_x1MNNekqEd2VcLeORko10g" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_x1MNNukqEd2VcLeORko10g" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_x1MNN-kqEd2VcLeORko10g" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </ownedOperation> + <ownedOperation xmi:id="_x1MNOOkqEd2VcLeORko10g" name="linkContents"> + <ownedParameter xmi:id="_x1MNOekqEd2VcLeORko10g" name="linkDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_x1MNOukqEd2VcLeORko10g" name="linkName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_x1MNO-kqEd2VcLeORko10g" name="fromContentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_x1MNPOkqEd2VcLeORko10g" name="toContentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_YPxfsPOSEd2JbqIoInRhNw" name="ContentNomenclatureSrv" clientDependency="_0X9nRPQzEd22_7AHmZR45g _0gwW4_QzEd22_7AHmZR45g _0psQc_QzEd22_7AHmZR45g _azYGoA72Ed6i07THnW3V5A _w_-Eow72Ed6i07THnW3V5A _NN8JsA8MEd6i07THnW3V5A"> + <ownedOperation xmi:id="_YPxfsfOSEd2JbqIoInRhNw" name="addContents"> + <ownedParameter xmi:id="_YPxfsvOSEd2JbqIoInRhNw" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_YPxfs_OSEd2JbqIoInRhNw" name="contentIds" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YPxftPOSEd2JbqIoInRhNw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YPxftfOSEd2JbqIoInRhNw"/> + </ownedParameter> + <ownedParameter xmi:id="_RVBYMPbAEd2HAbtEgyVO4g" name="return" type="_g6OzsNcdEd2nifBZRRnUOg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_YPxft_OSEd2JbqIoInRhNw" name="removeContents"> + <ownedParameter xmi:id="_YPxfuPOSEd2JbqIoInRhNw" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_YPxfufOSEd2JbqIoInRhNw" name="contentIds" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YPxfuvOSEd2JbqIoInRhNw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YPxfu_OSEd2JbqIoInRhNw"/> + </ownedParameter> + <ownedParameter xmi:id="_Yg2FsPbAEd2HAbtEgyVO4g" name="return" type="_g6OzsNcdEd2nifBZRRnUOg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_YPxfvfOSEd2JbqIoInRhNw" name="findContentsByNode"> + <ownedParameter xmi:id="_YPxfvvOSEd2JbqIoInRhNw" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_YPxfv_OSEd2JbqIoInRhNw" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_YPxfwPOSEd2JbqIoInRhNw" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_ePEz0PbAEd2HAbtEgyVO4g" name="return" type="_G8ZTMJuJEd2hhejVV_1tQg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_2a80ovnDEd2-r9_matJLyA" name="findContentsDtoByNode"> + <ownedParameter xmi:id="_NldzcPnEEd2-r9_matJLyA" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_SjmhYPnEEd2-r9_matJLyA" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_YJOtIPnEEd2-r9_matJLyA" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_ZifmIPnEEd2-r9_matJLyA" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_rAF68A74Ed6i07THnW3V5A" name="searchContents"> + <ownedParameter xmi:id="_yocMYA74Ed6i07THnW3V5A" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_-qN8MA74Ed6i07THnW3V5A" name="cnSearchDto" type="_50mREA74Ed6i07THnW3V5A"/> + <ownedParameter xmi:id="_CVD2QA75Ed6i07THnW3V5A" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_DZMz0A75Ed6i07THnW3V5A" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_So_a8BPfEd6gmdaSlhZGXg" name="countSearchContentsResult"> + <ownedParameter xmi:id="_bjDL4BPfEd6gmdaSlhZGXg" name="cnSearchDtoList" type="_50mREA74Ed6i07THnW3V5A"/> + <ownedParameter xmi:id="_jSGiQBPfEd6gmdaSlhZGXg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_x2UXUBVYEd6ea7tnvz6BlA" name="countContents"> + <ownedParameter xmi:id="_yrY-IBVYEd6ea7tnvz6BlA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_1UBNQBVYEd6ea7tnvz6BlA" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_Wot2MBVbEd6ea7tnvz6BlA" name="searchContentsIds"> + <ownedParameter xmi:id="_dZdKMBVbEd6ea7tnvz6BlA" name="cnSearchDto" type="_50mREA74Ed6i07THnW3V5A"/> + <ownedParameter xmi:id="_ffHPIBVbEd6ea7tnvz6BlA" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_gg4OIBVbEd6ea7tnvz6BlA" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_m1AeoBVbEd6ea7tnvz6BlA" name="return" type="_9szvMJwtEd2jKtVlU3vFlQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_TqtQMPnAEd2-r9_matJLyA" name="PagedResult<Content>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_xswuUP9BEd2Qm_QM6AOnsQ" name="ReferentialSrv" clientDependency="_UK96AP9lEd2BCr3614c-tA _UyLrAP9lEd2BCr3614c-tA _qabwYP9mEd2BCr3614c-tA _pCnsEP9qEd2c4u-jA89yIA _qXDIZP9qEd2c4u-jA89yIA _d6n9JAJNEd64Q-y4tjzcsw"> + <ownedOperation xmi:id="_EmUOQP9CEd2Qm_QM6AOnsQ" name="findBySource"> + <ownedParameter xmi:id="_IyWw4P9CEd2Qm_QM6AOnsQ" name="return" direction="return"> + <type xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + </ownedParameter> + <ownedParameter xmi:id="_MkYRAP9CEd2Qm_QM6AOnsQ" name="source"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_DhEDIAHDEd6YN9j9rf_V2Q" name="findReferentialBySource"> + <ownedParameter xmi:id="_GNudsAHDEd6YN9j9rf_V2Q" name="return" type="_e8X8AP9CEd2Qm_QM6AOnsQ" direction="return"/> + <ownedParameter xmi:id="_OwODMAHDEd6YN9j9rf_V2Q" name="source"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_k6KdkA4_Ed6KQuvMUCD2yg" name="facet"> + <packagedElement xmi:type="uml:Class" xmi:id="_d9MVUA5IEd6KQuvMUCD2yg" name="FacetViewSrv" clientDependency="_Iq9mcw5LEd6KQuvMUCD2yg _Jl8A8w5LEd6KQuvMUCD2yg _L-cwcw5LEd6KQuvMUCD2yg _UUIB8w5LEd6KQuvMUCD2yg _RHLosw-nEd6Za8ap1ETEyA"> + <ownedOperation xmi:id="_B27_0A5JEd6KQuvMUCD2yg" name="saveView"> + <ownedParameter xmi:id="_HZFZwA5JEd6KQuvMUCD2yg" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_J_olQA5JEd6KQuvMUCD2yg" name="facetsName" type="_Pk2hUA5JEd6KQuvMUCD2yg"/> + <ownedParameter xmi:id="_dCUgEA8aEd6ZEphZXOMnTg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_xsuDUCs5Ed6tjYAzTLw2Cw" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_g-XK0A5JEd6KQuvMUCD2yg" name="deleteView"> + <ownedParameter xmi:id="_h6FzQA5JEd6KQuvMUCD2yg" name="return" visibility="public" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_nLnXQA5JEd6KQuvMUCD2yg" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_qUDH0A5JEd6KQuvMUCD2yg" name="findAllView"> + <ownedParameter xmi:id="_srtiwA5JEd6KQuvMUCD2yg" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_uvLPUA5JEd6KQuvMUCD2yg" name="findView"> + <ownedParameter xmi:id="_vTy_UA5JEd6KQuvMUCD2yg" name="return" type="_Pk2hUA5JEd6KQuvMUCD2yg" direction="return"/> + <ownedParameter xmi:id="_xX2hwA5JEd6KQuvMUCD2yg" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_0Vhz0A5JEd6KQuvMUCD2yg" name="searchTopic"> + <ownedParameter xmi:id="_1HHBwA5JEd6KQuvMUCD2yg" name="return" type="_EfoV0A5IEd6KQuvMUCD2yg" direction="return"/> + <ownedParameter xmi:id="_2vZ1QA5JEd6KQuvMUCD2yg" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_5NVQQA5JEd6KQuvMUCD2yg" name="topicIds" type="_Pk2hUA5JEd6KQuvMUCD2yg"/> + </ownedOperation> + <ownedOperation xmi:id="_BZVBUA5KEd6KQuvMUCD2yg" name="searchContent"> + <ownedParameter xmi:id="_BzWD0A5KEd6KQuvMUCD2yg" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_mSndQA5KEd6KQuvMUCD2yg" name="topicIds" type="_Pk2hUA5JEd6KQuvMUCD2yg"/> + <ownedParameter xmi:id="_p3kxwA5KEd6KQuvMUCD2yg" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_vbLkQA5KEd6KQuvMUCD2yg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_p-Fd4A5UEd6KQuvMUCD2yg" name="renameView"> + <ownedParameter xmi:id="_qyCDUA5UEd6KQuvMUCD2yg" name="oldViewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_s99IUA5UEd6KQuvMUCD2yg" name="newViewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_vdBy0A5UEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_F_XBoCswEd6tjYAzTLw2Cw" name="addChain"> + <ownedParameter xmi:id="_7uHl4CswEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_9YWTECswEd6tjYAzTLw2Cw" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-aKVYCswEd6tjYAzTLw2Cw" name="chain" type="_ddB9cIViEd2N0bQZBk24XA"/> + </ownedOperation> + <ownedOperation xmi:id="_HG54gCswEd6tjYAzTLw2Cw" name="removeChain"> + <ownedParameter xmi:id="_V_fdYCswEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_X92AcCswEd6tjYAzTLw2Cw" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_ZF2xYCswEd6tjYAzTLw2Cw" name="chainIndex"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_VvbWAC_vEd6wTqNjal63Xg" name="getFlatView"> + <ownedParameter xmi:id="_XGvHMC_vEd6wTqNjal63Xg" name="return" type="_CQdfEC_zEd6wTqNjal63Xg" direction="return"/> + <ownedParameter xmi:id="_YsLbAC_vEd6wTqNjal63Xg" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_cOJOADViEd6Qg9MkiTPhqA" name="getTopic"> + <ownedParameter xmi:id="_eq6LYDViEd6Qg9MkiTPhqA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_igwbkDViEd6Qg9MkiTPhqA" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_gUQTUA5IEd6KQuvMUCD2yg" name="FacetSrv" clientDependency="_IItYgw5MEd6KQuvMUCD2yg _MONf4xIeEd6Za8ap1ETEyA _je274xIeEd6Za8ap1ETEyA _xai8wC1_Ed6R-vHwJRLroA _reQ8Uz_aEd6_Lec3g9P76A _vnO80z_aEd6_Lec3g9P76A"> + <ownedOperation xmi:id="_cthV0A5LEd6KQuvMUCD2yg" name="createFacet"> + <ownedParameter xmi:id="_fE4OwA5LEd6KQuvMUCD2yg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_mIKrUA5LEd6KQuvMUCD2yg" name="deleteFacet"> + <ownedParameter xmi:id="_m8V6QA5LEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_orbSQA5LEd6KQuvMUCD2yg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_uafG0A5LEd6KQuvMUCD2yg" name="renameFacet"> + <ownedParameter xmi:id="_xWPGQA5LEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_zo33QA5LEd6KQuvMUCD2yg" name="oldFacetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_17W3QA5LEd6KQuvMUCD2yg" name="newFacetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_4z_4UA5LEd6KQuvMUCD2yg" name="findAllFacet"> + <ownedParameter xmi:id="_5hTqQA5LEd6KQuvMUCD2yg" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_esaUwCsxEd6tjYAzTLw2Cw" name="addContentFacet"> + <ownedParameter xmi:id="_h1io4CsxEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_jNR34CsxEd6tjYAzTLw2Cw" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_mNaoECsxEd6tjYAzTLw2Cw" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_gDgDgCsxEd6tjYAzTLw2Cw" name="findContentFacet"> + <ownedParameter xmi:id="_ow__ICsxEd6tjYAzTLw2Cw" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_ryCHMCsxEd6tjYAzTLw2Cw" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_aCOWAC2AEd6R-vHwJRLroA" name="saveSegmentation"> + <ownedParameter xmi:id="_b2XNIC2AEd6R-vHwJRLroA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_c9yvQC2AEd6R-vHwJRLroA" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_OEAzYC2HEd6R-vHwJRLroA" name="segmentationAttDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_OsOxQC5IEd6xvOBU31IlXw" name="deleteContentFacet"> + <ownedParameter xmi:id="_Re5tMC5IEd6xvOBU31IlXw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_TG6z4C5IEd6xvOBU31IlXw" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_6Zbgci6JEd6ts7qX7YWm0w" name="getSegmentation"> + <ownedParameter xmi:id="_9f4UAC6JEd6ts7qX7YWm0w" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_A1qkEC6KEd6ts7qX7YWm0w" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_NrMWQD5HEd6us98SLDIclA" name="findAllFacetByContentDefinition"> + <ownedParameter xmi:id="_RsxVUD5HEd6us98SLDIclA" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <ownedParameter xmi:id="_Xg1lsD5HEd6us98SLDIclA" name="contentDefinitionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_7crg0D_aEd6_Lec3g9P76A" name="createContent"> + <ownedParameter xmi:id="_9oScwD_aEd6_Lec3g9P76A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-9k0sD_aEd6_Lec3g9P76A" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_A6-8kD_bEd6_Lec3g9P76A" name="contentDefinitionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_yox70ECWEd6fr9GmRQTM7Q" name="isFacet"> + <ownedParameter xmi:id="_8N1KgECWEd6fr9GmRQTM7Q" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_9uym8ECWEd6fr9GmRQTM7Q" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_muW50EweEd6SUqmuGcZJOw" name="isType"> + <ownedParameter xmi:id="_oRmOMEweEd6SUqmuGcZJOw" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_r08ZIEweEd6SUqmuGcZJOw" name="contentDefinitionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_xGd9IEweEd6SUqmuGcZJOw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_hm9RUA5IEd6KQuvMUCD2yg" name="TopicSrv" clientDependency="_bB3k8w5OEd6KQuvMUCD2yg _isl08w5OEd6KQuvMUCD2yg _CuFh0g8bEd6ZEphZXOMnTg _OgY94xIeEd6Za8ap1ETEyA _a7E88BIeEd6Za8ap1ETEyA _O_wroCUQEd61bp1hxMeETg _MmtlYC_sEd6cNN8u-rRFgA _NKQXUy_sEd6cNN8u-rRFgA"> + <ownedOperation xmi:id="_SrRYUA5MEd6KQuvMUCD2yg" name="createRootTopic"> + <ownedParameter xmi:id="_VEsGwA5MEd6KQuvMUCD2yg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_XVWh0A5MEd6KQuvMUCD2yg" name="topicValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_DMPw0B06Ed6sNL3iT4yqBg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_i8OeUA5MEd6KQuvMUCD2yg" name="deleteTopic"> + <ownedParameter xmi:id="_kPwiwA5MEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_l_h3QA5MEd6KQuvMUCD2yg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_u3eIUQ5MEd6KQuvMUCD2yg" name="renameTopic"> + <ownedParameter xmi:id="_v5YRQA5MEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_xr0fQA5MEd6KQuvMUCD2yg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_0CMgwA5MEd6KQuvMUCD2yg" name="topicValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_2zvbUA5MEd6KQuvMUCD2yg" name="findRootsTopic"> + <ownedParameter xmi:id="_3pSjQA5MEd6KQuvMUCD2yg" name="return" type="_j8IR8B07Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_4-gpwA5MEd6KQuvMUCD2yg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_8E4k0A5MEd6KQuvMUCD2yg" name="searchTopic"> + <ownedParameter xmi:id="_8wIhQA5MEd6KQuvMUCD2yg" name="return" type="_EfoV0A5IEd6KQuvMUCD2yg" direction="return"/> + <ownedParameter xmi:id="_Abf_wA5NEd6KQuvMUCD2yg" name="topicIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_AfxbwA5NEd6KQuvMUCD2yg" name="facetNames" type="_ddB9cIViEd2N0bQZBk24XA"/> + </ownedOperation> + <ownedOperation xmi:id="_SFzeUg5NEd6KQuvMUCD2yg" name="searchContent"> + <ownedParameter xmi:id="_TTnVQA5NEd6KQuvMUCD2yg" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_XLMDwA5NEd6KQuvMUCD2yg" name="topicIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_Au8Y0A5QEd6KQuvMUCD2yg" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_CgPXUA5QEd6KQuvMUCD2yg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_6GnE0A5NEd6KQuvMUCD2yg" name="addContentTopic"> + <ownedParameter xmi:id="_9wA0cA5NEd6KQuvMUCD2yg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_AIMMwA5OEd6KQuvMUCD2yg" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_UzgrkA8aEd6ZEphZXOMnTg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_C6f8UA5OEd6KQuvMUCD2yg" name="deleteContentTopic"> + <ownedParameter xmi:id="_DxHbQA5OEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_E-8gUA5OEd6KQuvMUCD2yg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_IP1pUA5OEd6KQuvMUCD2yg" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_NOD20Q5OEd6KQuvMUCD2yg" name="findContentsTopic"> + <ownedParameter xmi:id="_OONsQA5OEd6KQuvMUCD2yg" name="return" type="_nOLcQKXAEd2BUJWkFP_TZQ" direction="return"/> + <ownedParameter xmi:id="_RCvCUA5OEd6KQuvMUCD2yg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_QjYxEB06Ed6sNL3iT4yqBg" name="createNodeTopic"> + <ownedParameter xmi:id="_S9VrAB06Ed6sNL3iT4yqBg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_UlJWUB06Ed6sNL3iT4yqBg" name="parentTopicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Un1d8B06Ed6sNL3iT4yqBg" name="topicValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_rC78kB07Ed6sNL3iT4yqBg" name="findNodesTopic"> + <ownedParameter xmi:id="_ukwdgB07Ed6sNL3iT4yqBg" name="parentTopicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_1bIfcB07Ed6sNL3iT4yqBg" name="return" type="_j8IR8B07Ed6sNL3iT4yqBg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="__OwNQB1JEd6sNL3iT4yqBg" name="moveTopic"> + <ownedParameter xmi:id="_BlJc4B1KEd6sNL3iT4yqBg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_FDMREB1KEd6sNL3iT4yqBg" name="fromTopicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_FF8qIB1KEd6sNL3iT4yqBg" name="toTopicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_9_TKcB9gEd6Y0pLDes4cng" name="findRootByName"> + <ownedParameter xmi:id="_ALXZYB9hEd6Y0pLDes4cng" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_B9k94B9hEd6Y0pLDes4cng" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_KeAt4B9hEd6Y0pLDes4cng" name="topicValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_jDLlcB9kEd6Y0pLDes4cng" name="findNodeByName"> + <ownedParameter xmi:id="_k0UL4B9kEd6Y0pLDes4cng" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_nfEh8B9kEd6Y0pLDes4cng" name="parentTopicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_p4aX4B9kEd6Y0pLDes4cng" name="topicValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_iIAW0B-JEd6aY9VmaJwuZQ" name="findParent"> + <ownedParameter xmi:id="_lJDtAB-JEd6aY9VmaJwuZQ" name="return" type="_SsxC8B07Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_ocX34B-JEd6aY9VmaJwuZQ" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_66ztYCAeEd6Rg765w0YsUw" name="deleteAllByFacet"> + <ownedParameter xmi:id="_c2XM4CAfEd6Rg765w0YsUw" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_esvfsCAfEd6Rg765w0YsUw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_2vPuECAtEd6Rg765w0YsUw" name="findFacet"> + <ownedParameter xmi:id="_Ay91wCAuEd6Rg765w0YsUw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_ET4-0CAuEd6Rg765w0YsUw" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_bTjRUCBWEd65zZRswDaukg" name="findValue"> + <ownedParameter xmi:id="_dQ4gsCBWEd65zZRswDaukg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_erZ98CBWEd65zZRswDaukg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_4Bi2EC8YEd6nTaxxaFh6RQ" name="saveRequest"> + <ownedParameter xmi:id="_85HpAC8YEd6nTaxxaFh6RQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_-to6oC8YEd6nTaxxaFh6RQ" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_BDkQMC8ZEd6nTaxxaFh6RQ" name="search" type="_JAhtMMbCEd2uuaPd80qeIQ"/> + </ownedOperation> + <ownedOperation xmi:id="_CafNkC8eEd6LoL7mDHS7Iw" name="getRequest"> + <ownedParameter xmi:id="_DSXQwC8eEd6LoL7mDHS7Iw" name="return" type="_JAhtMMbCEd2uuaPd80qeIQ" direction="return"/> + <ownedParameter xmi:id="_E7JzgC8eEd6LoL7mDHS7Iw" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_18f-oC_oEd6m7Z8-52146A" name="createContent"> + <ownedParameter xmi:id="_6BuHkC_oEd6m7Z8-52146A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_7PydMC_oEd6m7Z8-52146A" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_83JckC_oEd6m7Z8-52146A" name="contentDefinitionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_30KRwEEpEd6naM7GDXYidw" name="findTopicResult"> + <ownedParameter xmi:id="_9vIbYEEpEd6naM7GDXYidw" name="return" type="_D5ipwB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_AgtyMEEqEd6naM7GDXYidw" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_CyLegEEqEd6naM7GDXYidw" name="findRootsTopicResult"> + <ownedParameter xmi:id="_FF8Q4EEqEd6naM7GDXYidw" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_4tZxcEEqEd6naM7GDXYidw" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_y0-JAEErEd6naM7GDXYidw" name="findNodesTopicResult"> + <ownedParameter xmi:id="_1LtW4EErEd6naM7GDXYidw" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_A9uzcEEsEd6naM7GDXYidw" name="topicParentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_IZDVgEEsEd6naM7GDXYidw" name="isType"> + <ownedParameter xmi:id="_J5nwYEEsEd6naM7GDXYidw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_LID5cEEsEd6naM7GDXYidw" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_NMlV8EEsEd6naM7GDXYidw" name="contentDefinitionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_0bPyMFTSEd6m1uIJAJogNQ" name="findType"> + <ownedParameter xmi:id="_3j4XEFTSEd6m1uIJAJogNQ" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_5mHUkFTSEd6m1uIJAJogNQ" name="search" type="_JAhtMMbCEd2uuaPd80qeIQ"/> + <ownedParameter xmi:id="_7VbWEFTSEd6m1uIJAJogNQ" name="contentDefinitionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_lYRm0A5IEd6KQuvMUCD2yg" name="TopicRuleSrv" clientDependency="_qLZ6cw5PEd6KQuvMUCD2yg _sbTggw5PEd6KQuvMUCD2yg _JYw1Yw-wEd6Za8ap1ETEyA _rzW54BVZEd6ea7tnvz6BlA"> + <ownedOperation xmi:id="_tEZ9Ug5OEd6KQuvMUCD2yg" name="saveTopicRule"> + <ownedParameter xmi:id="_wqqSUA5OEd6KQuvMUCD2yg" name="search" type="_50mREA74Ed6i07THnW3V5A"/> + <ownedParameter xmi:id="_BbekIA5PEd6KQuvMUCD2yg" name="topicIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_-fqZkA8aEd6ZEphZXOMnTg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_29QsME6hEd6NiYsm9_1_qQ" name="user"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_4MCMcE6hEd6NiYsm9_1_qQ" name="number"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_KcJTYA5PEd6KQuvMUCD2yg" name="applyTopicRule"> + <ownedParameter xmi:id="_Lo4zUA5PEd6KQuvMUCD2yg" name="topicIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_M8u8kA8aEd6ZEphZXOMnTg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_OmBS0A5PEd6KQuvMUCD2yg" name="deleteTopicRule"> + <ownedParameter xmi:id="_PIMy0A5PEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_QM3U0A5PEd6KQuvMUCD2yg" name="topicIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + </ownedOperation> + <ownedOperation xmi:id="_UXgwUg5PEd6KQuvMUCD2yg" name="findTopicRule"> + <ownedParameter xmi:id="_VcKrQA5PEd6KQuvMUCD2yg" name="return" type="_5R04IE9XEd6VjacN4bzw2Q" direction="return"/> + <ownedParameter xmi:id="_XAgL0A5PEd6KQuvMUCD2yg" name="topicIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + </ownedOperation> + <ownedOperation xmi:id="_RXPBgCTdEd6QZ5hRjKYwWQ" name="removeTopic"> + <ownedParameter xmi:id="_uXwxcCTdEd6QZ5hRjKYwWQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_0VbCsCTdEd6QZ5hRjKYwWQ" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_HbRBYFGwEd6lINZTnfnS_Q" name="saveTopicRuleNumber"> + <ownedParameter xmi:id="_hvXAQFGwEd6lINZTnfnS_Q" name="search" type="_50mREA74Ed6i07THnW3V5A"/> + <ownedParameter xmi:id="_h_bckFGwEd6lINZTnfnS_Q" name="topicIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_jFxZkFGwEd6lINZTnfnS_Q" name="user"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_jjw9IFGwEd6lINZTnfnS_Q" name="number"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_kIASoFGwEd6lINZTnfnS_Q" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_sw1v0A5IEd6KQuvMUCD2yg" name="FacetContentSrv" clientDependency="_gIGNAA5QEd6KQuvMUCD2yg _xSI3Iw5QEd6KQuvMUCD2yg _gnh-4w-sEd6Za8ap1ETEyA"> + <ownedOperation xmi:id="_ww1WUg5PEd6KQuvMUCD2yg" name="addTopicContent"> + <ownedParameter xmi:id="_y7YiUA5PEd6KQuvMUCD2yg" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_0p7u0A5PEd6KQuvMUCD2yg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_0K4XEA8aEd6ZEphZXOMnTg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_5V_1Ug5PEd6KQuvMUCD2yg" name="deleteTopicContent"> + <ownedParameter xmi:id="_MCvoUA5QEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_Nc7HUA5QEd6KQuvMUCD2yg" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Pkf30A5QEd6KQuvMUCD2yg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_SK5SUg5QEd6KQuvMUCD2yg" name="findAllTopicContent"> + <ownedParameter xmi:id="_Sy34UA5QEd6KQuvMUCD2yg" name="return" type="_Ka0XUA5HEd6KQuvMUCD2yg" direction="return"/> + <ownedParameter xmi:id="_UvJ-0A5QEd6KQuvMUCD2yg" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_G-TYcA7cEd6GlpMc1IXijg" name="findAllTopic"> + <ownedParameter xmi:id="_MGpyUA7cEd6GlpMc1IXijg" name="return" type="_j8IR8B07Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_UIC14A7cEd6GlpMc1IXijg" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_XGjOYA7cEd6GlpMc1IXijg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_x4510A5IEd6KQuvMUCD2yg" name="FacetDomainProductCatalogSrv" clientDependency="_eYWXkw5ZEd6KQuvMUCD2yg _-IWlgw5ZEd6KQuvMUCD2yg __yelAw5ZEd6KQuvMUCD2yg _AOjdAw5aEd6KQuvMUCD2yg _AoQ9gw5aEd6KQuvMUCD2yg _k3bH8w_GEd6Za8ap1ETEyA _lQXzcw_GEd6Za8ap1ETEyA _wMen0x3AEd6dVI2yFn6RnA _yqJBZCOEEd6gj5bfXc-Mvw"> + <ownedOperation xmi:id="_lKjk0g5REd6KQuvMUCD2yg" name="createCatalog"> + <ownedParameter xmi:id="_otYLUA5REd6KQuvMUCD2yg" name="catalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_nGmUYB9gEd6Y0pLDes4cng" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_sKGJ0g5REd6KQuvMUCD2yg" name="deleteCatalog"> + <ownedParameter xmi:id="_vjE30A5REd6KQuvMUCD2yg" name="catalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_FKSQ0A5SEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_zV1-0g5REd6KQuvMUCD2yg" name="findAllCatalog"> + <ownedParameter xmi:id="_1PTa0A5REd6KQuvMUCD2yg" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_Nk_zUg5SEd6KQuvMUCD2yg" name="addSection"> + <ownedParameter xmi:id="_QKBU0A5SEd6KQuvMUCD2yg" name="sectionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_UvrRUA5SEd6KQuvMUCD2yg" name="sectionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Pi0YkA8bEd6ZEphZXOMnTg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_VpupUg5TEd6KQuvMUCD2yg" name="renameLevel"> + <ownedParameter xmi:id="_YHDAUA5TEd6KQuvMUCD2yg" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Z7eLUA5TEd6KQuvMUCD2yg" name="levelName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_uaWqUA5TEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_4uEgYA5UEd6KQuvMUCD2yg" name="deleteLevel"> + <ownedParameter xmi:id="_53JoUA5UEd6KQuvMUCD2yg" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_9p6vUA5UEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_g1If4A5VEd6KQuvMUCD2yg" name="findAllLevel"> + <ownedParameter xmi:id="_i2cQUA5VEd6KQuvMUCD2yg" name="parentLevelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_k9omUA5VEd6KQuvMUCD2yg" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_sM9c4A7bEd6GlpMc1IXijg" name="getContentCatalog"> + <ownedParameter xmi:id="_tn5w4A7bEd6GlpMc1IXijg" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_wFoXkA7bEd6GlpMc1IXijg" name="catalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_cnHx4A5WEd6KQuvMUCD2yg" name="getContentLevel"> + <ownedParameter xmi:id="_inGXUA5WEd6KQuvMUCD2yg" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_n9f-0A5XEd6KQuvMUCD2yg" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_LY45YA5YEd6KQuvMUCD2yg" name="findProducts"> + <ownedParameter xmi:id="_UGvaUA5YEd6KQuvMUCD2yg" name="categoryId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_YIAQUA5YEd6KQuvMUCD2yg" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_f-230A5YEd6KQuvMUCD2yg" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_h1aw0A5YEd6KQuvMUCD2yg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_Mz9MYA5cEd6KQuvMUCD2yg" name="saveSearch"> + <ownedParameter xmi:id="_z4ew0A5cEd6KQuvMUCD2yg" name="categoryId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_4NlI0A5cEd6KQuvMUCD2yg" name="search" type="_50mREA74Ed6i07THnW3V5A"/> + <ownedParameter xmi:id="_WAyhkA8bEd6ZEphZXOMnTg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_f8hUcE6hEd6NiYsm9_1_qQ" name="user"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_hmCP8E6hEd6NiYsm9_1_qQ" name="number"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_YWVDYA5cEd6KQuvMUCD2yg" name="getSearch"> + <ownedParameter xmi:id="_CDAV0A5dEd6KQuvMUCD2yg" name="return" type="_50mREA74Ed6i07THnW3V5A" direction="return"/> + <ownedParameter xmi:id="_Lk5i0A5dEd6KQuvMUCD2yg" name="categoryId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_b4sW4A5cEd6KQuvMUCD2yg" name="deleteSearch"> + <ownedParameter xmi:id="_QsRsUA5dEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_X67EUA5dEd6KQuvMUCD2yg" name="categoryId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_3Mv3gB2-Ed6dVI2yFn6RnA" name="createLocalProduct"> + <ownedParameter xmi:id="_Ahn8MB2_Ed6dVI2yFn6RnA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_JOpWsB2_Ed6dVI2yFn6RnA" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_L2imAB2_Ed6dVI2yFn6RnA" name="product" type="_3UukkHjHEd2vSLEPekkQZw"/> + </ownedOperation> + <ownedOperation xmi:id="_FRkdIB2_Ed6dVI2yFn6RnA" name="addProduct"> + <ownedParameter xmi:id="_G6QSMB2_Ed6dVI2yFn6RnA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_OGU3UB2_Ed6dVI2yFn6RnA" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_PeMpMB2_Ed6dVI2yFn6RnA" name="productId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_OPZbgB4GEd6Hj8IcKtrWfg" name="renameCatalog"> + <ownedParameter xmi:id="_T3RqAB4GEd6Hj8IcKtrWfg" name="oldCatalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_UD80EB4GEd6Hj8IcKtrWfg" name="newCatalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_l9JDMB4GEd6Hj8IcKtrWfg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_py7zkB4HEd6Hj8IcKtrWfg" name="move"> + <ownedParameter xmi:id="_u3D0wB4HEd6Hj8IcKtrWfg" name="fromLevelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_v-RUcB4HEd6Hj8IcKtrWfg" name="toLevelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_2ieBQB4HEd6Hj8IcKtrWfg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_HPxsEB4IEd6Hj8IcKtrWfg" name="addCategory"> + <ownedParameter xmi:id="_ImQW0B4IEd6Hj8IcKtrWfg" name="sectionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_OufgYB4IEd6Hj8IcKtrWfg" name="categoryName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Ut4P8B4IEd6Hj8IcKtrWfg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_x5fPMB9gEd6Y0pLDes4cng" name="isCategory"> + <ownedParameter xmi:id="_y8ztYB9gEd6Y0pLDes4cng" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_0V2j8B9gEd6Y0pLDes4cng" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_W46oICK-Ed6OMJznllRp2A" name="findLevel"> + <ownedParameter xmi:id="_ab8qACK-Ed6OMJznllRp2A" name="return" type="_D5ipwB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_dIESACK-Ed6OMJznllRp2A" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_sCRWUCNUEd6d3NARAvR2pQ" name="isCatalog"> + <ownedParameter xmi:id="_J9IAgCNVEd6d3NARAvR2pQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_26QaQCNZEd6d3NARAvR2pQ" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_6Vx4MCNUEd6d3NARAvR2pQ" name="isSection"> + <ownedParameter xmi:id="_LhRT0CNVEd6d3NARAvR2pQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_6Re0wCNZEd6d3NARAvR2pQ" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_ye4HUEtqEd6vPPc7KDt3WQ" name="findAllSearch"> + <ownedParameter xmi:id="_J594wEtrEd6vPPc7KDt3WQ" name="catalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_n9mPAEtsEd6vPPc7KDt3WQ" name="return" type="_UQqbIE9uEd6VjacN4bzw2Q" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_pbIukEttEd6vPPc7KDt3WQ" name="setRequestNumber"> + <ownedParameter xmi:id="_0p9-gEttEd6vPPc7KDt3WQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_85ioAEttEd6vPPc7KDt3WQ" name="categoryId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="__2SF8EttEd6vPPc7KDt3WQ" name="number"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_Xvpu0EtuEd6vPPc7KDt3WQ" name="getRequestNumber"> + <ownedParameter xmi:id="_eKtGsEtuEd6vPPc7KDt3WQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_yR8hwEtuEd6vPPc7KDt3WQ" name="categoryId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_oGapME6gEd6NiYsm9_1_qQ" name="findAllCategory"> + <ownedParameter xmi:id="_rtxxcE6gEd6NiYsm9_1_qQ" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <ownedParameter xmi:id="_uuDEgE6gEd6NiYsm9_1_qQ" name="catalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_qnotoFTTEd6m1uIJAJogNQ" name="updateDescription"> + <ownedParameter xmi:id="_uJE0EFTTEd6m1uIJAJogNQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_yZhVkFTTEd6m1uIJAJogNQ" name="c" type="_3UukkHjHEd2vSLEPekkQZw"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_rzW54BVZEd6ea7tnvz6BlA" name="Dependency1" supplier="_YPxfsPOSEd2JbqIoInRhNw" client="_lYRm0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_wMen0x3AEd6dVI2yFn6RnA" name="Dependency2" supplier="_xswuUP9BEd2Qm_QM6AOnsQ" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Class" xmi:id="_J7MKQCK6Ed6OMJznllRp2A" name="FacetDomainEditCatalogSrv" clientDependency="_y058cCK_Ed6OMJznllRp2A _0pZY4CK_Ed6OMJznllRp2A _2h_SMCK_Ed6OMJznllRp2A _3VDG0CK_Ed6OMJznllRp2A _4FS4ACK_Ed6OMJznllRp2A _83YuBCK_Ed6OMJznllRp2A _9nbq5CK_Ed6OMJznllRp2A _-U08ZCK_Ed6OMJznllRp2A _3Qjy4COEEd6gj5bfXc-Mvw"> + <ownedOperation xmi:id="_O1wm0CK6Ed6OMJznllRp2A" name="createCatalog"> + <ownedParameter xmi:id="_WZpPACK6Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_dFh4MCK6Ed6OMJznllRp2A" name="catalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_lBWfQCK6Ed6OMJznllRp2A" name="deleteCatalog"> + <ownedParameter xmi:id="_jEG6ACK7Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_V21K8CK8Ed6OMJznllRp2A" name="catalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_mkwLsCK6Ed6OMJznllRp2A" name="findAllCatalog"> + <ownedParameter xmi:id="_lY8qcCK7Ed6OMJznllRp2A" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_qMXyoCK6Ed6OMJznllRp2A" name="renameCatalog"> + <ownedParameter xmi:id="_oK8Q8CK7Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_pTxEwCK8Ed6OMJznllRp2A" name="oldCatalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_pV0TMCK8Ed6OMJznllRp2A" name="newCatalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_tLGNkCK6Ed6OMJznllRp2A" name="addDirectory"> + <ownedParameter xmi:id="_rlAkECK7Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_xIrLgCK8Ed6OMJznllRp2A" name="directoryId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_xQ4FQCK8Ed6OMJznllRp2A" name="directoryName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_yWYmsCK6Ed6OMJznllRp2A" name="renameLevel"> + <ownedParameter xmi:id="_uENxcCK7Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_4MU0cCK8Ed6OMJznllRp2A" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_4UkKcCK8Ed6OMJznllRp2A" name="levelName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_z0I-ICK6Ed6OMJznllRp2A" name="findAllLevel"> + <ownedParameter xmi:id="_wKuK8CK7Ed6OMJznllRp2A" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_9bUo4CK8Ed6OMJznllRp2A" name="parentLevelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_1kb3ECK6Ed6OMJznllRp2A" name="deleteLevel"> + <ownedParameter xmi:id="_0yKQICK7Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_AdR-ACK9Ed6OMJznllRp2A" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_5HypECK6Ed6OMJznllRp2A" name="findLevel"> + <ownedParameter xmi:id="_2kE5sCK7Ed6OMJznllRp2A" name="return" type="_D5ipwB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_K9gbgCK9Ed6OMJznllRp2A" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_65srkCK6Ed6OMJznllRp2A" name="getContentLevel"> + <ownedParameter xmi:id="_48hXwCK7Ed6OMJznllRp2A" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_YWDxACK9Ed6OMJznllRp2A" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_9VCFkCK6Ed6OMJznllRp2A" name="findArticles"> + <ownedParameter xmi:id="_-BefYCK7Ed6OMJznllRp2A" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_dCuUcCK9Ed6OMJznllRp2A" name="folderId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_dJENACK9Ed6OMJznllRp2A" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_dQnmgCK9Ed6OMJznllRp2A" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_BXvtECK7Ed6OMJznllRp2A" name="addFolder"> + <ownedParameter xmi:id="_GDiRUCK8Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_pcfGcCK9Ed6OMJznllRp2A" name="directoryName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_pkDuECK9Ed6OMJznllRp2A" name="folderName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_CfszoCK7Ed6OMJznllRp2A" name="addArticle"> + <ownedParameter xmi:id="_Ivx1ICK8Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_37On8CK9Ed6OMJznllRp2A" name="folderId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_4EJ6cCK9Ed6OMJznllRp2A" name="articleId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_FImvkCK7Ed6OMJznllRp2A" name="move"> + <ownedParameter xmi:id="_KdLyICK8Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_9aMLACK9Ed6OMJznllRp2A" name="fromLevelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_9bjc8CK9Ed6OMJznllRp2A" name="toLevelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_LMMCoCK7Ed6OMJznllRp2A" name="isFolder"> + <ownedParameter xmi:id="_M8r6cCK8Ed6OMJznllRp2A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_BoCEcCK-Ed6OMJznllRp2A" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_NVhGoCK7Ed6OMJznllRp2A" name="isCatalog"> + <ownedParameter xmi:id="_OtgX0CK8Ed6OMJznllRp2A" name="levelId" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_IdTTICK-Ed6OMJznllRp2A" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_fX1ckCK7Ed6OMJznllRp2A" name="getContentCatalog"> + <ownedParameter xmi:id="_SrAvMCK8Ed6OMJznllRp2A" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_L3ErUCK-Ed6OMJznllRp2A" name="catalogName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_0arywCNUEd6d3NARAvR2pQ" name="isDirectory"> + <ownedParameter xmi:id="_EirKACNVEd6d3NARAvR2pQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="__QqrkCNZEd6d3NARAvR2pQ" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_WQAP2CT0Ed6Bk7gvYh5YAQ" name="Association1" memberEnd="_WQAP2ST0Ed6Bk7gvYh5YAQ _WQA24ST0Ed6Bk7gvYh5YAQ"> + <ownedEnd xmi:id="_WQAP2ST0Ed6Bk7gvYh5YAQ" name="source" type="_x4510A5IEd6KQuvMUCD2yg" association="_WQAP2CT0Ed6Bk7gvYh5YAQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WQAP2iT0Ed6Bk7gvYh5YAQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WQA24CT0Ed6Bk7gvYh5YAQ" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_WQA24ST0Ed6Bk7gvYh5YAQ" name="target" type="_pfA7oHm8Ed2ql75AYIhxSA" association="_WQAP2CT0Ed6Bk7gvYh5YAQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WQA24iT0Ed6Bk7gvYh5YAQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WQA24yT0Ed6Bk7gvYh5YAQ" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_O_wroCUQEd61bp1hxMeETg" name="Dependency3" supplier="_lYRm0A5IEd6KQuvMUCD2yg" client="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Class" xmi:id="_2kgvUCtSEd6tjYAzTLw2Cw" name="FacetSegmentationSrv" clientDependency="_Fpxo0ytUEd6tjYAzTLw2Cw _GPEuQytUEd6tjYAzTLw2Cw _HEEckytUEd6tjYAzTLw2Cw _KgYycytUEd6tjYAzTLw2Cw _jciuAytUEd6tjYAzTLw2Cw _8quYoDVjEd6Qg9MkiTPhqA"> + <ownedOperation xmi:id="_P1nVQCtVEd6tjYAzTLw2Cw" name="create"> + <ownedParameter xmi:id="_gMy_ECtVEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_tBG_ECtVEd6tjYAzTLw2Cw" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_RXQHICtVEd6tjYAzTLw2Cw" name="update"> + <ownedParameter xmi:id="_yzbjACtVEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_1nPucCtVEd6tjYAzTLw2Cw" name="segmentationName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_3Y7HcCtVEd6tjYAzTLw2Cw" name="facetName" type="_Pk2hUA5JEd6KQuvMUCD2yg"/> + </ownedOperation> + <ownedOperation xmi:id="_BElUcCtWEd6tjYAzTLw2Cw" name="remove"> + <ownedParameter xmi:id="_C5FX8CtWEd6tjYAzTLw2Cw" name="segmentationName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_KI7p0CtWEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_xD0xICtWEd6tjYAzTLw2Cw" name="addCriterion"> + <ownedParameter xmi:id="_BtNlQCtXEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_D38-gCtXEd6tjYAzTLw2Cw" name="segmentationName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_FjDOYCtXEd6tjYAzTLw2Cw" name="criterion" type="_55WnYCtWEd6tjYAzTLw2Cw"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_DPFLMCtYEd6tjYAzTLw2Cw" name="removeCriterion"> + <ownedParameter xmi:id="_GC5WoCtYEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_H3fgwCtYEd6tjYAzTLw2Cw" name="criterionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_o2WPMDVjEd6Qg9MkiTPhqA" name="segmentationName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_RV8YMCtYEd6tjYAzTLw2Cw" name="editCriterion"> + <ownedParameter xmi:id="_SUr4YCtYEd6tjYAzTLw2Cw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_XVs7MCtYEd6tjYAzTLw2Cw" name="criterionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Zwm3YCtYEd6tjYAzTLw2Cw" name="criterion" type="_55WnYCtWEd6tjYAzTLw2Cw"/> + </ownedOperation> + <ownedOperation xmi:id="_h84VQitYEd6tjYAzTLw2Cw" name="findCriterion"> + <ownedParameter xmi:id="_jDQHcCtYEd6tjYAzTLw2Cw" name="return" type="_55WnYCtWEd6tjYAzTLw2Cw" direction="return"/> + <ownedParameter xmi:id="_nYfCUCtYEd6tjYAzTLw2Cw" name="criterionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_TFR8wC2mEd6R-vHwJRLroA" name="findAllCriterions"> + <ownedParameter xmi:id="_mynDAC2mEd6R-vHwJRLroA" name="return" type="_zKx5kC2mEd6R-vHwJRLroA" direction="return"/> + <ownedParameter xmi:id="_3i-o4C2mEd6R-vHwJRLroA" name="segmentationName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_54S2AC5MEd6xvOBU31IlXw" name="saveDescriptiveContent"> + <ownedParameter xmi:id="_M2oIQC5NEd6xvOBU31IlXw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_gCJh8C5NEd6xvOBU31IlXw" name="description" type="_55WnYCtWEd6tjYAzTLw2Cw"/> + </ownedOperation> + <ownedOperation xmi:id="__C1oQC5MEd6xvOBU31IlXw" name="addCriterionValues"> + <ownedParameter xmi:id="_ONZt8C5NEd6xvOBU31IlXw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_afysoC5NEd6xvOBU31IlXw" name="criterionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_c-TWcC5NEd6xvOBU31IlXw" name="criterionValues" type="_uPKaQC5NEd6xvOBU31IlXw"/> + </ownedOperation> + <ownedOperation xmi:id="_QyVYsC8lEd6-MauFHegShA" name="find"> + <ownedParameter xmi:id="_UQ1f4C8lEd6-MauFHegShA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_tG2-QC8lEd6-MauFHegShA" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_zMZZIC8lEd6-MauFHegShA" name="findSegmentationChains"> + <ownedParameter xmi:id="_1dbnoC8lEd6-MauFHegShA" name="return" type="_Pk2hUA5JEd6KQuvMUCD2yg" direction="return"/> + <ownedParameter xmi:id="_31XIUC8lEd6-MauFHegShA" name="segmentationName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_jGB_AC_UEd60r8Vp-3Ec5w" name="getCompleteSegmentation"> + <ownedParameter xmi:id="_D5Tn0C_VEd60r8Vp-3Ec5w" name="return" type="_EfoV0A5IEd6KQuvMUCD2yg" direction="return"/> + <ownedParameter xmi:id="_GNiUQC_VEd60r8Vp-3Ec5w" name="segmentationName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_ScERMC_WEd60r8Vp-3Ec5w" name="getSegmentingCriterionValues"> + <ownedParameter xmi:id="_WD-MAC_WEd60r8Vp-3Ec5w" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_XuJ14C_WEd60r8Vp-3Ec5w" name="segmentationName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_bap80C_WEd60r8Vp-3Ec5w" name="criterionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Fpxo0ytUEd6tjYAzTLw2Cw" name="Dependency4" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_2kgvUCtSEd6tjYAzTLw2Cw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_GPEuQytUEd6tjYAzTLw2Cw" name="Dependency5" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_2kgvUCtSEd6tjYAzTLw2Cw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_HEEckytUEd6tjYAzTLw2Cw" name="Dependency6" supplier="_hm9RUA5IEd6KQuvMUCD2yg" client="_2kgvUCtSEd6tjYAzTLw2Cw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_KgYycytUEd6tjYAzTLw2Cw" name="Dependency7" supplier="_gUQTUA5IEd6KQuvMUCD2yg" client="_2kgvUCtSEd6tjYAzTLw2Cw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_jciuAytUEd6tjYAzTLw2Cw" name="Dependency8" supplier="_d9MVUA5IEd6KQuvMUCD2yg" client="_2kgvUCtSEd6tjYAzTLw2Cw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_xai8wC1_Ed6R-vHwJRLroA" name="Dependency9" supplier="_-4GJSHggEd2Vxr2aiClL8g" client="_gUQTUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_zKx5kC2mEd6R-vHwJRLroA" name="List<CriterionDto>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_uPKaQC5NEd6xvOBU31IlXw" name="Map<String, CriterionDto>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_jwI9AC5VEd6W6LY8irJDig" name="FamilySrv" clientDependency="_OYR_Ey6LEd6FoZrLsKOTCQ _O1anAy6LEd6FoZrLsKOTCQ _bGCH8C_nEd6m7Z8-52146A _4qW9oFEGEd643dseCuH5RA"> + <ownedOperation xmi:id="_nj-bAC5VEd6W6LY8irJDig" name="createFamily"> + <ownedParameter xmi:id="_vKcdIC5VEd6W6LY8irJDig" name="familyName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_1jTcoC5VEd6W6LY8irJDig" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_-489YC5VEd6W6LY8irJDig" name="deleteFamily"> + <ownedParameter xmi:id="_ULBM0C5WEd6W6LY8irJDig" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_ZTCPgC5WEd6W6LY8irJDig" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_fjrHIi5WEd6W6LY8irJDig" name="findAllFamilies"> + <ownedParameter xmi:id="_xnq4EC5WEd6W6LY8irJDig" name="return" type="_j8IR8B07Ed6sNL3iT4yqBg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_CkF88i5XEd6W6LY8irJDig" name="getFamilyName"> + <ownedParameter xmi:id="_FwpYgC5XEd6W6LY8irJDig" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_NISUcC5XEd6W6LY8irJDig" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_O5tOwC5XEd6W6LY8irJDig" name="getFamilyContent"> + <ownedParameter xmi:id="_Ttpe4C5XEd6W6LY8irJDig" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_VZNo0C5XEd6W6LY8irJDig" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_cMvyIC5XEd6W6LY8irJDig" name="renameFamily"> + <ownedParameter xmi:id="_h7p1sC5XEd6W6LY8irJDig" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_mg8l0C5XEd6W6LY8irJDig" name="familyName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_v72aAC5XEd6W6LY8irJDig" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_JSuisC5YEd6W6LY8irJDig" name="findProducts"> + <ownedParameter xmi:id="_NdFDQC5YEd6W6LY8irJDig" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_gC35sC5YEd6W6LY8irJDig" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_UUaOsC_dEd6uXI1DlaVnBQ" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_WfxTAC_dEd6uXI1DlaVnBQ" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_SoZRki5YEd6W6LY8irJDig" name="findProductsByTopics"> + <ownedParameter xmi:id="_dfv1oC5YEd6W6LY8irJDig" name="return" type="_TqtQMPnAEd2-r9_matJLyA" direction="return"/> + <ownedParameter xmi:id="_cQPMMC5xEd6W6LY8irJDig" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_byDsAC_dEd6uXI1DlaVnBQ" name="topicIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_d7_0AC_dEd6uXI1DlaVnBQ" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_fu-NgC_dEd6uXI1DlaVnBQ" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_wa_XoC5YEd6W6LY8irJDig" name="saveFamilyRequest"> + <ownedParameter xmi:id="_yzgHIC5YEd6W6LY8irJDig" name="searchDto" type="_JAhtMMbCEd2uuaPd80qeIQ"/> + <ownedParameter xmi:id="_8hx9wC5tEd6W6LY8irJDig" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_DaZzsC50Ed6W6LY8irJDig" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_wIjIgC5zEd6W6LY8irJDig" name="getFamilyRequest"> + <ownedParameter xmi:id="_3257UC5zEd6W6LY8irJDig" name="return" type="_JAhtMMbCEd2uuaPd80qeIQ" direction="return"/> + <ownedParameter xmi:id="_7YucQC5zEd6W6LY8irJDig" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_OQgZEDSfEd6SRfzb6Civ8A" name="removeFamilyRequest"> + <ownedParameter xmi:id="_X4YSQDSfEd6SRfzb6Civ8A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_ZiVSoDSfEd6SRfzb6Civ8A" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_e_pcsExVEd663ZuzwRMpEw" name="isFamily"> + <ownedParameter xmi:id="_k1Nh4ExVEd663ZuzwRMpEw" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_uKSa4ExVEd663ZuzwRMpEw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_-duIAC5XEd6W6LY8irJDig" name="PagedResult<TopicDTO>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_HiG40C6IEd6ts7qX7YWm0w" name="PagedResult<TopicDTO>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_OYR_Ey6LEd6FoZrLsKOTCQ" name="Dependency10" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_jwI9AC5VEd6W6LY8irJDig"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_O1anAy6LEd6FoZrLsKOTCQ" name="Dependency11" supplier="_hm9RUA5IEd6KQuvMUCD2yg" client="_jwI9AC5VEd6W6LY8irJDig"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_CQdfEC_zEd6wTqNjal63Xg" name="List<List<FacetResult>>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_8quYoDVjEd6Qg9MkiTPhqA" name="Dependency12" supplier="_zAlIsHggEd2Vxr2aiClL8g" client="_2kgvUCtSEd6tjYAzTLw2Cw"/> + <packagedElement xmi:type="uml:Class" xmi:id="_aJeVgD4_Ed6us98SLDIclA" name="LabelSrv" clientDependency="_y2fzcz5AEd6us98SLDIclA _zM125D5AEd6us98SLDIclA _JHvEMEtjEd6RroIE_si1DQ _Lf0-IEt9Ed6vPPc7KDt3WQ _u6tTo0uDEd6vPPc7KDt3WQ _UeLW81EUEd6gYNMtyDOtdg"> + <ownedOperation xmi:id="_ZQkFoD5BEd6us98SLDIclA" name="createSubject"> + <ownedParameter xmi:id="_iqlJAD5BEd6us98SLDIclA" name="subjectName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </ownedOperation> + <ownedOperation xmi:id="_uwRIcj5BEd6us98SLDIclA" name="createLabel"> + <ownedParameter xmi:id="_zbEqsD5BEd6us98SLDIclA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_36us4D5BEd6us98SLDIclA" name="subjectName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Ahw0ID5CEd6us98SLDIclA" name="labelName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </ownedOperation> + <ownedOperation xmi:id="_jKYN8j5CEd6us98SLDIclA" name="createSubLabel"> + <ownedParameter xmi:id="_lYtGsD5CEd6us98SLDIclA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_pXtS4D5CEd6us98SLDIclA" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_ylw94D5CEd6us98SLDIclA" name="labelName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_wC3t4j5DEd6us98SLDIclA" name="deleteSubject"> + <ownedParameter xmi:id="_58kW4D5DEd6us98SLDIclA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_QAKw8D5EEd6us98SLDIclA" name="subjectName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_sgG8Uj5EEd6us98SLDIclA" name="deleteLabel"> + <ownedParameter xmi:id="_vqnJcD5EEd6us98SLDIclA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_zXpb4D5EEd6us98SLDIclA" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_C_mBIj5FEd6us98SLDIclA" name="getSubjectContent"> + <ownedParameter xmi:id="_HMgtgD5FEd6us98SLDIclA" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_NnyH0D5FEd6us98SLDIclA" name="subjectName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_TR5K8T5FEd6us98SLDIclA" name="getLabelContent"> + <ownedParameter xmi:id="_WABlID5FEd6us98SLDIclA" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + <ownedParameter xmi:id="_Ze3DgD5FEd6us98SLDIclA" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_jk9Jwj5FEd6us98SLDIclA" name="renameSubject"> + <ownedParameter xmi:id="_mUbnwD5FEd6us98SLDIclA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_oW2ygD5FEd6us98SLDIclA" name="subjectOldName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_r_BMAD5FEd6us98SLDIclA" name="subjectNewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_zP9DAD5FEd6us98SLDIclA" name="renameLabel"> + <ownedParameter xmi:id="_2TdQQD5FEd6us98SLDIclA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_3pgdMD5FEd6us98SLDIclA" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_83wDsD5FEd6us98SLDIclA" name="labelNewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_Fr5Z4D5GEd6us98SLDIclA" name="findAllSubject"> + <ownedParameter xmi:id="_I5_GgD5GEd6us98SLDIclA" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_ZV44Qj5GEd6us98SLDIclA" name="findLabel"> + <ownedParameter xmi:id="_asuvYD5GEd6us98SLDIclA" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_leLfwD5GEd6us98SLDIclA" name="subjectName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_rPunoD5GEd6us98SLDIclA" name="findSubLabel"> + <ownedParameter xmi:id="_skc-4D5GEd6us98SLDIclA" name="return" type="_g_fFMB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_wzpjMD5GEd6us98SLDIclA" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_d8XtAEEsEd6naM7GDXYidw" name="getLabel"> + <ownedParameter xmi:id="_fgw38EEsEd6naM7GDXYidw" name="return" type="_D5ipwB08Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_g3R-8EEsEd6naM7GDXYidw" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_jYk3AEEsEd6naM7GDXYidw" name="moveLabel"> + <ownedParameter xmi:id="_koNS4EEsEd6naM7GDXYidw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_lzrAcEEsEd6naM7GDXYidw" name="fromLabelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_7lQdcEEsEd6naM7GDXYidw" name="toLabelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_NDuDgEthEd6RroIE_si1DQ" name="classifyFamily"> + <ownedParameter xmi:id="_Sp-hYEthEd6RroIE_si1DQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_X9b_EEthEd6RroIE_si1DQ" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_frhFEEthEd6RroIE_si1DQ" name="labelIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_e5A0oEtiEd6RroIE_si1DQ" name="findSubjectsByFamily"> + <ownedParameter xmi:id="_xp3EgEtiEd6RroIE_si1DQ" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_1qiEoEtiEd6RroIE_si1DQ" name="return" type="_Ka0XUA5HEd6KQuvMUCD2yg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_LFxeMEtjEd6RroIE_si1DQ" name="unClassifyFamily"> + <ownedParameter xmi:id="_PJ73MEtjEd6RroIE_si1DQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_QoeRwEtjEd6RroIE_si1DQ" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_kNJyUEtjEd6RroIE_si1DQ" name="unClassifyFamilyfromLabel"> + <ownedParameter xmi:id="_na_nUEtjEd6RroIE_si1DQ" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_r6B-cEtjEd6RroIE_si1DQ" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_wAgEkEtjEd6RroIE_si1DQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_DuVsoEweEd6SUqmuGcZJOw" name="isLabel"> + <ownedParameter xmi:id="_FSoJ4EweEd6SUqmuGcZJOw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_J5dLEEweEd6SUqmuGcZJOw" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_PKe_0EweEd6SUqmuGcZJOw" name="isSubject"> + <ownedParameter xmi:id="_RVKHoEweEd6SUqmuGcZJOw" name="subjectName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_S3zmIEweEd6SUqmuGcZJOw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_P-5QkFEGEd643dseCuH5RA" name="findParentLabel"> + <ownedParameter xmi:id="_VEX8oFEGEd643dseCuH5RA" name="return" type="_SsxC8B07Ed6sNL3iT4yqBg" direction="return"/> + <ownedParameter xmi:id="_WrJGIFEGEd643dseCuH5RA" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_bQsU8lEGEd643dseCuH5RA" name="findSubject"> + <ownedParameter xmi:id="_dYQeYFEGEd643dseCuH5RA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_fJMQgFEGEd643dseCuH5RA" name="labelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_y2fzcz5AEd6us98SLDIclA" name="Dependency13" supplier="_hm9RUA5IEd6KQuvMUCD2yg" client="_aJeVgD4_Ed6us98SLDIclA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_zM125D5AEd6us98SLDIclA" name="Dependency14" supplier="_gUQTUA5IEd6KQuvMUCD2yg" client="_aJeVgD4_Ed6us98SLDIclA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_JHvEMEtjEd6RroIE_si1DQ" name="Dependency15" supplier="_jwI9AC5VEd6W6LY8irJDig" client="_aJeVgD4_Ed6us98SLDIclA"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_NPuowEttEd6vPPc7KDt3WQ" name="List<List<ContentNomenclatureSearchDto>>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Lf0-IEt9Ed6vPPc7KDt3WQ" name="Dependency16" supplier="_sw1v0A5IEd6KQuvMUCD2yg" client="_aJeVgD4_Ed6us98SLDIclA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_u6tTo0uDEd6vPPc7KDt3WQ" name="Dependency17" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_aJeVgD4_Ed6us98SLDIclA"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_UQqbIE9uEd6VjacN4bzw2Q" name="List<TopicRuleDto>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_ZoF7YE-FEd6jPaCGdA6eKw" name="WebMasteringSrv" clientDependency="_r2TUEE-MEd6jPaCGdA6eKw _sfeM40-MEd6jPaCGdA6eKw _swu8A0-MEd6jPaCGdA6eKw _s_XN40-MEd6jPaCGdA6eKw _JwqrY1EUEd6gYNMtyDOtdg"> + <ownedOperation xmi:id="_eD-Q0E-FEd6jPaCGdA6eKw" name="createEntryPoint"> + <ownedParameter xmi:id="_IKa4sE-HEd6jPaCGdA6eKw" name="entryPointName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </ownedOperation> + <ownedOperation xmi:id="_eipJ0E-FEd6jPaCGdA6eKw" name="deleteEntryPoint"> + <ownedParameter xmi:id="_S9A4kE-HEd6jPaCGdA6eKw" name="entryPointName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_8MFXEE-JEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_lYrNgE-FEd6jPaCGdA6eKw" name="renameEntryPoint"> + <ownedParameter xmi:id="_Y__usE-HEd6jPaCGdA6eKw" name="oldEntryPointName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_gTmfME-HEd6jPaCGdA6eKw" name="newEntryPointName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-vcEoE-JEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_26s50k-FEd6jPaCGdA6eKw" name="findAllEntryPoints"> + <ownedParameter xmi:id="_BR9EsE-KEd6jPaCGdA6eKw" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_5s3fck-FEd6jPaCGdA6eKw" name="getEntryPointDescription"> + <ownedParameter xmi:id="_l4tGgE-HEd6jPaCGdA6eKw" name="entryPointName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_DFPnQE-KEd6jPaCGdA6eKw" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_92iDgk-FEd6jPaCGdA6eKw" name="createLevel"> + <ownedParameter xmi:id="_q3U8oE-HEd6jPaCGdA6eKw" name="entryPointName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_rGNGIE-HEd6jPaCGdA6eKw" name="levelName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_HjqTUE-KEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_CCRrME-GEd6jPaCGdA6eKw" name="createSubLevel"> + <ownedParameter xmi:id="_0wmH0E-HEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_09Qq0E-HEd6jPaCGdA6eKw" name="levelName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_KeNY4E-KEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_ELEjsE-GEd6jPaCGdA6eKw" name="renameLevel"> + <ownedParameter xmi:id="_7XYOkE-HEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_73VhAE-HEd6jPaCGdA6eKw" name="newLevelName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_MQbkcE-KEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_FuL8QE-GEd6jPaCGdA6eKw" name="findLevel"> + <ownedParameter xmi:id="_BpwyoE-IEd6jPaCGdA6eKw" name="entryPointName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_NnVtAE-KEd6jPaCGdA6eKw" name="return" type="_aSk7EFGvEd6lINZTnfnS_Q" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_Hug1QE-GEd6jPaCGdA6eKw" name="findSubLevel"> + <ownedParameter xmi:id="_F4ZWQE-IEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_p9o0ME-KEd6jPaCGdA6eKw" name="return" type="_aSk7EFGvEd6lINZTnfnS_Q" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_JvE-0E-GEd6jPaCGdA6eKw" name="getLevelDescription"> + <ownedParameter xmi:id="_Ly_FYE-IEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_3CZrAE-KEd6jPaCGdA6eKw" name="return" type="_3UukkHjHEd2vSLEPekkQZw" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_Mo3PYE-GEd6jPaCGdA6eKw" name="getLevel"> + <ownedParameter xmi:id="_PjtlAE-IEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_6XHkEE-KEd6jPaCGdA6eKw" name="return" type="_xIOzQFGmEd6lINZTnfnS_Q" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_PBxngE-GEd6jPaCGdA6eKw" name="moveLevel"> + <ownedParameter xmi:id="_UViVQE-IEd6jPaCGdA6eKw" name="fromLevelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_UxNkoE-IEd6jPaCGdA6eKw" name="toLevelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_8i5fIE-KEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_TasvkE-GEd6jPaCGdA6eKw" name="classifyFamily"> + <ownedParameter xmi:id="_gOIT4E-IEd6jPaCGdA6eKw" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_gfctYE-IEd6jPaCGdA6eKw" name="levelIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_AC6CME-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_YitLME-GEd6jPaCGdA6eKw" name="unClassifyFamily"> + <ownedParameter xmi:id="_qVwEIE-IEd6jPaCGdA6eKw" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_BGHysE-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_cA-B0E-GEd6jPaCGdA6eKw" name="unClassifyFamilyFromLevel"> + <ownedParameter xmi:id="_vnwJQE-IEd6jPaCGdA6eKw" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_zVV1UE-IEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_CIcLUE-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_nMzBEE-GEd6jPaCGdA6eKw" name="findEntryPointByFamily"> + <ownedParameter xmi:id="_5tsegE-IEd6jPaCGdA6eKw" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_O1iwEE-LEd6jPaCGdA6eKw" name="return" type="_a-Lc0FGvEd6lINZTnfnS_Q" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_tR1ssE-GEd6jPaCGdA6eKw" name="classifyEditCase"> + <ownedParameter xmi:id="_9RWygE-IEd6jPaCGdA6eKw" name="editCaseId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_9XZJEE-IEd6jPaCGdA6eKw" name="labelIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_EV0B0E-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_vutXwE-GEd6jPaCGdA6eKw" name="unClassifyEditCase"> + <ownedParameter xmi:id="_-a6bkE-IEd6jPaCGdA6eKw" name="editCaseId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Fh4MUE-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_xxkAUE-GEd6jPaCGdA6eKw" name="unClassifyEditCaseFromLevel"> + <ownedParameter xmi:id="_-yzXIE-IEd6jPaCGdA6eKw" name="editCaseId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-2WaYE-IEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_GX5OUE-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_1jDU8E-GEd6jPaCGdA6eKw" name="findEntryPointByEditCase"> + <ownedParameter xmi:id="__VNgoE-IEd6jPaCGdA6eKw" name="editCaseId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_MysHgE-LEd6jPaCGdA6eKw" name="return" type="_a-Lc0FGvEd6lINZTnfnS_Q" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_99tNEE-GEd6jPaCGdA6eKw" name="classify" visibility="private"> + <ownedParameter xmi:id="__tUeoE-IEd6jPaCGdA6eKw" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="__2K4oE-IEd6jPaCGdA6eKw" name="levelIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedParameter xmi:id="_HjSDYE-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="__pSlIE-GEd6jPaCGdA6eKw" name="unClassify" visibility="private"> + <ownedParameter xmi:id="_AYzroE-JEd6jPaCGdA6eKw" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_ImzV4E-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_CForwE-HEd6jPaCGdA6eKw" name="unClassifyFromLevel" visibility="private"> + <ownedParameter xmi:id="_BC_4IE-JEd6jPaCGdA6eKw" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_BFUzYE-JEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_KxcBcE-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_V67T0E-KEd6jPaCGdA6eKw" name="deleteLevel"> + <ownedParameter xmi:id="_ZLqEwE-KEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_ismPgE-KEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_64J_Ik-LEd6jPaCGdA6eKw" name="isLevel"> + <ownedParameter xmi:id="__WucME-LEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_CPOTUE-MEd6jPaCGdA6eKw" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_7RMKME-LEd6jPaCGdA6eKw" name="isEntryPoint"> + <ownedParameter xmi:id="_AzgjQE-MEd6jPaCGdA6eKw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_C2xbgE-MEd6jPaCGdA6eKw" name="entryPointName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_7QVeMFECEd643dseCuH5RA" name="findParentLevel"> + <ownedParameter xmi:id="_UhFe0FEFEd643dseCuH5RA" name="return" type="_xIOzQFGmEd6lINZTnfnS_Q" direction="return"/> + <ownedParameter xmi:id="_WcbKIFEFEd643dseCuH5RA" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_jWSYgFEFEd643dseCuH5RA" name="findEntryPoint"> + <ownedParameter xmi:id="_n-wYcFEFEd643dseCuH5RA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_ryuZUFEFEd643dseCuH5RA" name="levelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_2OVckFEFEd643dseCuH5RA" name="isClassified"> + <ownedParameter xmi:id="_31Y58FEFEd643dseCuH5RA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_6cBlAFEFEd643dseCuH5RA" name="familyId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_dpVEIFTTEd6m1uIJAJogNQ" name="getUnclassifiedEntryPoint"> + <ownedParameter xmi:id="_hBnOkFTTEd6m1uIJAJogNQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_r2TUEE-MEd6jPaCGdA6eKw" name="Dependency18" supplier="_hm9RUA5IEd6KQuvMUCD2yg" client="_ZoF7YE-FEd6jPaCGdA6eKw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_sfeM40-MEd6jPaCGdA6eKw" name="Dependency19" supplier="_jwI9AC5VEd6W6LY8irJDig" client="_ZoF7YE-FEd6jPaCGdA6eKw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_swu8A0-MEd6jPaCGdA6eKw" name="Dependency20" supplier="_sw1v0A5IEd6KQuvMUCD2yg" client="_ZoF7YE-FEd6jPaCGdA6eKw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_s_XN40-MEd6jPaCGdA6eKw" name="Dependency21" supplier="_gUQTUA5IEd6KQuvMUCD2yg" client="_ZoF7YE-FEd6jPaCGdA6eKw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_4qW9oFEGEd643dseCuH5RA" name="Dependency22" supplier="_ZoF7YE-FEd6jPaCGdA6eKw" client="_jwI9AC5VEd6W6LY8irJDig"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_JwqrY1EUEd6gYNMtyDOtdg" name="Dependency23" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_ZoF7YE-FEd6jPaCGdA6eKw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_UeLW81EUEd6gYNMtyDOtdg" name="Dependency24" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_aJeVgD4_Ed6us98SLDIclA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_fbDdYA7rEd67kIKaKolRBA" name="AttributeSrv" clientDependency="_XqiR8w7sEd67kIKaKolRBA _KnrO0xI9Ed6OOOY3SXyaHQ"> + <ownedOperation xmi:id="_tnIhkA7rEd67kIKaKolRBA" name="findValuesForAttributeDef"> + <ownedParameter xmi:id="_wSy2kA7rEd67kIKaKolRBA" name="attributeDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_yV590A7rEd67kIKaKolRBA" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_KRUy4BISEd6Rc4a-4dQbWA" name="findNamesBeginningWith"> + <ownedParameter xmi:id="_NpV3kBISEd6Rc4a-4dQbWA" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <ownedParameter xmi:id="_XiJvwBISEd6Rc4a-4dQbWA" name="attributeDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_YzJdkBISEd6Rc4a-4dQbWA" name="nameBeginning"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_XqiR8w7sEd67kIKaKolRBA" name="Dependency19" supplier="_QKN2QHsfEd2br5ngUa3Ghw" client="_fbDdYA7rEd67kIKaKolRBA"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_50mREA74Ed6i07THnW3V5A" name="List<ContentNomenclatureSearchDto>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_KnrO0xI9Ed6OOOY3SXyaHQ" name="Dependency20" supplier="_-4GJSHggEd2Vxr2aiClL8g" client="_fbDdYA7rEd67kIKaKolRBA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_yvPJ2HTaEd20yqJGyRKhKA" name="ContentDefinitionSrv" clientDependency="_-u-c1XTbEd20yqJGyRKhKA _O-C80oCrEd2cf9nnj9AFLw _1uQxU5OHEd2PpNHrflS_6A _tPcMQ5PGEd24J-xmUsjYjg _O_lio-leEd2w6L86tbByuw"> + <ownedOperation xmi:id="_75mnoHTaEd20yqJGyRKhKA" name="create"> + <ownedParameter xmi:id="_NIShMHTbEd20yqJGyRKhKA" name="contentDefinitionData" type="_VbTx0MeREd2h5Jm14AAEsA"/> + <ownedParameter xmi:id="_zxIPMHTbEd20yqJGyRKhKA" name="return" type="_VbTx0MeREd2h5Jm14AAEsA" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_hBZtsnWsEd2gat_LwJwOew" name="findAllOrderedByName"> + <ownedParameter xmi:id="_kmb6sHWsEd2gat_LwJwOew" name="return" type="_SFAOkHWmEd2gat_LwJwOew" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_ma-fcHpXEd2KlrgMGH48yg" name="find"> + <ownedParameter xmi:id="_oTh8gHpXEd2KlrgMGH48yg" name="return" type="_VbTx0MeREd2h5Jm14AAEsA" direction="return"/> + <ownedParameter xmi:id="_rQeOwHpXEd2KlrgMGH48yg" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_ME61oH_REd2UJZ6mvauuHQ" name="delete"> + <ownedParameter xmi:id="_ODUcAH_REd2UJZ6mvauuHQ" name="contentDefinitionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_dQQDkECMEd6gFeLh6Y5JDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_IBCPUIrbEd2Y45ctWyGYNQ" name="update"> + <ownedParameter xmi:id="_JzENoIrbEd2Y45ctWyGYNQ" name="definition" type="_VbTx0MeREd2h5Jm14AAEsA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_Z3cGsHj0Ed2Lq_BH-5XVEg"/> + </ownedOperation> + <ownedOperation xmi:id="_UsJm4LTnEd252vzLZ9nqrQ" name="findAllOrderedBy"> + <ownedParameter xmi:id="_cvkqwLTnEd252vzLZ9nqrQ" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_dZtM4LTnEd252vzLZ9nqrQ" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_eAQ2kLTnEd252vzLZ9nqrQ" name="sortConstraints" type="_idubkKQsEd2GAYp1IpBaGw"/> + <ownedParameter xmi:id="_xK1OALTnEd252vzLZ9nqrQ" name="return" type="_n5F84LTnEd252vzLZ9nqrQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_U50BILvGEd2kF4XjUgVq9Q" name="findAllWithNameBegin"> + <ownedParameter xmi:id="_ReNAcLvHEd2kF4XjUgVq9Q" name="beginName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_zNgzsLvHEd2kF4XjUgVq9Q" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <ownedParameter xmi:id="_9IBVALvHEd2kF4XjUgVq9Q" name="numberRequired"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_55KmsL1kEd2hO74hOuNnYA" name="findByName"> + <ownedParameter xmi:id="_9ionwL1kEd2hO74hOuNnYA" name="return" type="_-1M2GHTaEd20yqJGyRKhKA" direction="return"/> + <ownedParameter xmi:id="_ALuw8L1lEd2hO74hOuNnYA" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_oGgKUOYJEd2J1PltzDe2qg" name="createOrUpdate"> + <ownedParameter xmi:id="_Ce6ogOYKEd2J1PltzDe2qg" name="ContentDefDto" type="_VbTx0MeREd2h5Jm14AAEsA"/> + <ownedParameter xmi:id="_zbrvsOjDEd2D5cFtHFAUAA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_feodEOlgEd2Jo-YbKSXwIw" name="strategy" type="_EvqPMOiTEd25AsNl_TBRDQ"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_vE68IOMjEd2zc-bceOzXYQ"/> + </ownedOperation> + <ownedOperation xmi:id="_6N73sECIEd6gFeLh6Y5JDQ" name="getContentDefByName"> + <ownedParameter xmi:id="_UgmTMECJEd6gFeLh6Y5JDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_bvIWcECJEd6gFeLh6Y5JDQ" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_i_1uYD-hEd6_O_u-D-Y8sg" name="EditorialSrv" clientDependency="_G9EPED_AEd6_O_u-D-Y8sg _H1UFsj_AEd6_O_u-D-Y8sg"> + <ownedOperation xmi:id="_sJPi4D-hEd6_O_u-D-Y8sg" name="create"> + <ownedParameter xmi:id="_t7e8kD-hEd6_O_u-D-Y8sg" name="return" type="_VbTx0MeREd2h5Jm14AAEsA" direction="return"/> + <ownedParameter xmi:id="_zxwzcD-hEd6_O_u-D-Y8sg" name="description" type="_3UukkHjHEd2vSLEPekkQZw"/> + <ownedParameter xmi:id="_7AE0QD-hEd6_O_u-D-Y8sg" name="composant" type="_HbpkID-iEd6_O_u-D-Y8sg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </ownedOperation> + <ownedOperation xmi:id="_85uoED-iEd6_O_u-D-Y8sg" name="deleteModel"> + <ownedParameter xmi:id="_Ah4agD-jEd6_O_u-D-Y8sg" name="modelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_F2zQwD-jEd6_O_u-D-Y8sg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_sPzWgD-kEd6_O_u-D-Y8sg"/> + </ownedOperation> + <ownedOperation xmi:id="_nG5PED-8Ed6_O_u-D-Y8sg" name="updateDescription"> + <ownedParameter xmi:id="_s48tQD-8Ed6_O_u-D-Y8sg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_uRGzAD-8Ed6_O_u-D-Y8sg" name="modelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_wh_3kD-8Ed6_O_u-D-Y8sg" name="description" type="_3UukkHjHEd2vSLEPekkQZw"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_-IvaED-8Ed6_O_u-D-Y8sg" name="findModel"> + <ownedParameter xmi:id="_ANQ2kD-9Ed6_O_u-D-Y8sg" name="modelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_DbFdcD-9Ed6_O_u-D-Y8sg" name="return" type="_VbTx0MeREd2h5Jm14AAEsA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_IHUjED-9Ed6_O_u-D-Y8sg" name="findModelByName"> + <ownedParameter xmi:id="_KGbUED-9Ed6_O_u-D-Y8sg" name="modelName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_QMvLAD-9Ed6_O_u-D-Y8sg" name="return" type="_VbTx0MeREd2h5Jm14AAEsA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_TzBVMD-9Ed6_O_u-D-Y8sg" name="findModels"> + <ownedParameter xmi:id="_ViKXkD-9Ed6_O_u-D-Y8sg" name="begin"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_Wk0ucD-9Ed6_O_u-D-Y8sg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_pIcaoD-9Ed6_O_u-D-Y8sg" name="return" type="_n5F84LTnEd252vzLZ9nqrQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_QgjCYD--Ed6_O_u-D-Y8sg" name="addContentDef"> + <ownedParameter xmi:id="_SOw3sD--Ed6_O_u-D-Y8sg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_T9-ykD--Ed6_O_u-D-Y8sg" name="modelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_U_bogD--Ed6_O_u-D-Y8sg" name="composant" type="_VbTx0MeREd2h5Jm14AAEsA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </ownedOperation> + <ownedOperation xmi:id="_8VRmcD--Ed6_O_u-D-Y8sg" name="removeContentDef"> + <ownedParameter xmi:id="_-6LzMD--Ed6_O_u-D-Y8sg" name="modelId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_L2ppoD-_Ed6_O_u-D-Y8sg" name="composantId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_SjVkED-_Ed6_O_u-D-Y8sg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_sPzWgD-kEd6_O_u-D-Y8sg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_EGXQcEwxEd6rAqa4OnNuyg" name="createModel"> + <ownedParameter xmi:id="_FwZJUEwxEd6rAqa4OnNuyg" name="return" type="_VbTx0MeREd2h5Jm14AAEsA" direction="return"/> + <ownedParameter xmi:id="_h6b4MExoEd6rAqa4OnNuyg" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_it8YwExoEd6rAqa4OnNuyg" name="description" type="_3UukkHjHEd2vSLEPekkQZw"/> + <ownedParameter xmi:id="_i34-8ExoEd6rAqa4OnNuyg" name="specificAttDefs" type="_ZytvEHhBEd2X9uNQyI_qHw"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_G9EPED_AEd6_O_u-D-Y8sg" name="Dependency21" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_i_1uYD-hEd6_O_u-D-Y8sg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_H1UFsj_AEd6_O_u-D-Y8sg" name="Dependency22" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_i_1uYD-hEd6_O_u-D-Y8sg"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_ZUwg0EwxEd6rAqa4OnNuyg" name="Set<AttributeDef>"/> + <profileApplication xmi:id="_MIURkPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_MIURkfWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_tBzGgPWREdy_h6Mk-BiOHw" name="org.sharengo.cms.core.daos"> + <packagedElement xmi:type="uml:Class" xmi:id="_3ac7wHTaEd20yqJGyRKhKA" name="ContentDefinitionDao" clientDependency="__sX5M3TbEd20yqJGyRKhKA"> + <ownedOperation xmi:id="_vlxCMnUAEd20yqJGyRKhKA" name="findByName"> + <ownedParameter xmi:id="_zbMboHUAEd20yqJGyRKhKA" name="return" type="_--aR4HTZEd20yqJGyRKhKA" direction="return"/> + <ownedParameter xmi:id="_9HFSIHUAEd20yqJGyRKhKA" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_9niAQLTcEd252vzLZ9nqrQ" name="findAllOrderedBy"> + <ownedParameter xmi:id="_GzlgILTdEd252vzLZ9nqrQ" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_IAxsALTdEd252vzLZ9nqrQ" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_IzWYcLTdEd252vzLZ9nqrQ" name="sortConstraints" type="_idubkKQsEd2GAYp1IpBaGw"/> + <ownedParameter xmi:id="_QGTosLTdEd252vzLZ9nqrQ" name="return" type="_XzNfcLTcEd252vzLZ9nqrQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_R2V-MLvIEd2kF4XjUgVq9Q" name="findAllWithNameBegin"> + <ownedParameter xmi:id="_SzDeELvIEd2kF4XjUgVq9Q" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <ownedParameter xmi:id="_VLYAULvIEd2kF4XjUgVq9Q" name="beginName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_WN0UwLvIEd2kF4XjUgVq9Q" name="numberRequired"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="__sX5M3TbEd20yqJGyRKhKA" name="Dependency1" supplier="_--aR4HTZEd20yqJGyRKhKA" client="_3ac7wHTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_-4GJSHggEd2Vxr2aiClL8g" name="AttributeDefinitionDao" clientDependency="_DqndE3ghEd2Vxr2aiClL8g"> + <ownedOperation xmi:id="_3h2ssnjqEd2MH8DN-NMNrA" name="findByContentDef"> + <ownedParameter xmi:id="_9dY3AHjqEd2MH8DN-NMNrA" name="return" type="_6knTGHjqEd2MH8DN-NMNrA" direction="return"/> + <ownedParameter xmi:id="_-5LfkHjqEd2MH8DN-NMNrA" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_g1wycHjuEd2CQ9DaulPw1g" name="findByNameAndContentDefId"> + <ownedParameter xmi:id="_kO-J8HjuEd2CQ9DaulPw1g" name="return" type="_KYKiGHXPEd2gat_LwJwOew" direction="return"/> + <ownedParameter xmi:id="_mmWRAHjuEd2CQ9DaulPw1g" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_rRUyYHjuEd2CQ9DaulPw1g" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_PoPg0JbaEd2g8ssKKY6Zwg" name="findClosedListByListItemId"> + <ownedParameter xmi:id="_V9qKwJbaEd2g8ssKKY6Zwg" name="return" type="_RuhOKHXbEd2XodZQ_XQIpQ" direction="return"/> + <ownedParameter xmi:id="_Xrx5cJbaEd2g8ssKKY6Zwg" name="listItemId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_ZSL4YJuBEd2_apBKoRAUAA" name="findClosedList"> + <ownedParameter xmi:id="_azTs4JuBEd2_apBKoRAUAA" name="return" type="_RuhOKHXbEd2XodZQ_XQIpQ" direction="return"/> + <ownedParameter xmi:id="_fiv3gJuBEd2_apBKoRAUAA" name="closedListId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_3sVngAl7Ed63k8rLfgI_ng" name="findByContentDefAndNameBeginningWith"> + <ownedParameter xmi:id="_7OPoAAl7Ed63k8rLfgI_ng" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_8EX-wAl7Ed63k8rLfgI_ng" name="nameBeginning"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_-R0twAl7Ed63k8rLfgI_ng" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_DqndE3ghEd2Vxr2aiClL8g" name="Dependency2" supplier="_KYKiGHXPEd2gat_LwJwOew" client="_-4GJSHggEd2Vxr2aiClL8g"/> + <packagedElement xmi:type="uml:Class" xmi:id="_iO1pkHi_Ed2oZoPbWJIMHg" name="ContentDao" clientDependency="_Jar-A3jAEd2oZoPbWJIMHg"> + <ownedOperation xmi:id="_xUAboHjwEd2Lq_BH-5XVEg" name="findAllWithOrder"> + <ownedParameter xmi:id="_5rLh8HjwEd2Lq_BH-5XVEg" name="return" type="_NcHbSHXPEd2gat_LwJwOew" isOrdered="true" isUnique="false" direction="return" effect="read"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EQRRUHjxEd2Lq_BH-5XVEg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_D3oH0HjxEd2Lq_BH-5XVEg"/> + </ownedParameter> + <ownedParameter xmi:id="_5vmH4HjwEd2Lq_BH-5XVEg" name="orderParameter"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_nkGFgICrEd2cf9nnj9AFLw" name="deleteFromDefinition"> + <ownedParameter xmi:id="_swbAcICrEd2cf9nnj9AFLw" name="definition" type="_--aR4HTZEd20yqJGyRKhKA"/> + </ownedOperation> + <ownedOperation xmi:id="_RC6D4JOsEd2mZZ8LBxpIfQ" name="findByContentDef"> + <ownedParameter xmi:id="_U6_IsJOsEd2mZZ8LBxpIfQ" name="return" type="_fNJKwIYTEd2FDsNjNrtp7Q" direction="return"/> + <ownedParameter xmi:id="_XG2jUJOsEd2mZZ8LBxpIfQ" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_sYeZILsEEd2hnI17Wy1x7w" name="findIdsByContentDef"> + <ownedParameter xmi:id="_v1pqoLsEEd2hnI17Wy1x7w" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_2s0WwLsEEd2hnI17Wy1x7w" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_V0cZ0O69Ed2vc7ElAwQEXw" name="findName"> + <ownedParameter xmi:id="_ZdSv0O69Ed2vc7ElAwQEXw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_bhkUsO69Ed2vc7ElAwQEXw" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_8WqK4CKQEd6kB4PlcXn84A" name="findByTopic"> + <ownedParameter xmi:id="__DI_QCKQEd6kB4PlcXn84A" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_AHVnMCKREd6kB4PlcXn84A" name="return" type="_fNJKwIYTEd2FDsNjNrtp7Q" direction="return"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Jar-A3jAEd2oZoPbWJIMHg" name="Dependency3" supplier="_NcHbSHXPEd2gat_LwJwOew" client="_iO1pkHi_Ed2oZoPbWJIMHg"/> + <packagedElement xmi:type="uml:Class" xmi:id="_pfA7oHm8Ed2ql75AYIhxSA" name="ListItemDao" clientDependency="_0MUL1Xm8Ed2ql75AYIhxSA"> + <ownedOperation xmi:id="_Ce6VcXnCEd2JTcXoWjYKZg" name="findByNameAndClosedListId"> + <ownedParameter xmi:id="_Nn8fYHnCEd2JTcXoWjYKZg" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_PAIaUHnCEd2JTcXoWjYKZg" name="closedListId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_co5WEHnCEd2JTcXoWjYKZg" name="return" type="_Bq1oyHXTEd2XodZQ_XQIpQ" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_zO378JPCEd24J-xmUsjYjg" name="findByDefinition"> + <ownedParameter xmi:id="_1D480JPCEd24J-xmUsjYjg" name="return" type="_Bq1oyHXTEd2XodZQ_XQIpQ" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5GNiwJPCEd24J-xmUsjYjg" value="*"/> + </ownedParameter> + <ownedParameter xmi:id="_1GoHwJPCEd24J-xmUsjYjg" name="definitionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_0MUL1Xm8Ed2ql75AYIhxSA" name="Dependency4" supplier="_Bq1oyHXTEd2XodZQ_XQIpQ" client="_pfA7oHm8Ed2ql75AYIhxSA"/> + <packagedElement xmi:type="uml:Class" xmi:id="_QKN2QHsfEd2br5ngUa3Ghw" name="AttributeDao" clientDependency="_TqllsHsfEd2br5ngUa3Ghw"> + <ownedOperation xmi:id="_ojBEoIQIEd29-aQCdYahig" name="findByAttributeDefAndContent"> + <ownedParameter xmi:id="_utN9EIQIEd29-aQCdYahig" name="return" type="_O3Kc-HXPEd2gat_LwJwOew" direction="return"/> + <ownedParameter xmi:id="_16qbMIQIEd29-aQCdYahig" name="attributeDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_3gODwIQIEd29-aQCdYahig" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_zlEUYpOAEd2PpNHrflS_6A" name="findByAttributeDef"> + <ownedParameter xmi:id="_3KY1QJOAEd2PpNHrflS_6A" name="return" type="_8ZIyEJOAEd2PpNHrflS_6A" direction="return"/> + <ownedParameter xmi:id="_AOZMYJOBEd2PpNHrflS_6A" name="attributeDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_J5If4hITEd6Rc4a-4dQbWA" name="findByNameBeginningWith"> + <ownedParameter xmi:id="_M15L8BITEd6Rc4a-4dQbWA" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <ownedParameter xmi:id="_OWzlEBITEd6Rc4a-4dQbWA" name="attDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_PlBrsBITEd6Rc4a-4dQbWA" name="type" type="_OoJh0HXVEd2XodZQ_XQIpQ"/> + <ownedParameter xmi:id="_Yn27IBI0Ed6Dg6REkzSh0g" name="nameBeginning"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_TqllsHsfEd2br5ngUa3Ghw" name="Dependency5" supplier="_O3Kc-HXPEd2gat_LwJwOew" client="_QKN2QHsfEd2br5ngUa3Ghw"/> + <packagedElement xmi:type="uml:Class" xmi:id="_dSGT8KGqEd2ENuCUfYNU7A" name="SetOfContentsDao" clientDependency="_r7fmRaGqEd2ENuCUfYNU7A"> + <ownedOperation xmi:id="_R6AP8qHOEd2ENuCUfYNU7A" name="findByName"> + <ownedParameter xmi:id="_VYGugKHOEd2ENuCUfYNU7A" name="return" type="_8wC-AKGpEd2ENuCUfYNU7A" direction="return"/> + <ownedParameter xmi:id="_W_MoIKHOEd2ENuCUfYNU7A" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_oSuqoqQtEd2GAYp1IpBaGw" name="findAllOrderedBy"> + <ownedParameter xmi:id="_potmIKQtEd2GAYp1IpBaGw" name="return" type="_gu1EEKGrEd2ENuCUfYNU7A" direction="return"/> + <ownedParameter xmi:id="_tX3_gKQtEd2GAYp1IpBaGw" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_zzAP4KQtEd2GAYp1IpBaGw" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_1NmloKQtEd2GAYp1IpBaGw" name="sortConstraints" type="_idubkKQsEd2GAYp1IpBaGw"/> + </ownedOperation> + <ownedOperation xmi:id="_vBhbcqcuEd26eZS_gEW-Hg" name="findContentsBySetOfContentsOrderedByContentDef"> + <ownedParameter xmi:id="_2UONAKcuEd26eZS_gEW-Hg" name="return" type="_LwOsgHjVEd2XX6MpUtjnfg" direction="return"/> + <ownedParameter xmi:id="_-i--MKcuEd26eZS_gEW-Hg" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_-xuk0KcuEd26eZS_gEW-Hg" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_-73YQKcuEd26eZS_gEW-Hg" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_j_2OsLJbEd2hzeyeF-1t2g" name="findContentsOrderedBy"> + <ownedParameter xmi:id="_ahExsLJcEd2hzeyeF-1t2g" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_ao_-oLJcEd2hzeyeF-1t2g" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_eVdCQLJcEd2hzeyeF-1t2g" name="sortConstraints" type="_idubkKQsEd2GAYp1IpBaGw"/> + <ownedParameter xmi:id="_h0hxMLJcEd2hzeyeF-1t2g" name="return" type="_LwOsgHjVEd2XX6MpUtjnfg" direction="return"/> + <ownedParameter xmi:id="_b5CYQLJeEd2hzeyeF-1t2g" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_DF9fAA8KEd6i07THnW3V5A" name="containsContent"> + <ownedParameter xmi:id="_EtKtYA8KEd6i07THnW3V5A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_K2xv8A8KEd6i07THnW3V5A" name="setOfContentsId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_MgI6cA8KEd6i07THnW3V5A" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_r7fmRaGqEd2ENuCUfYNU7A" name="Dependency6" supplier="_8wC-AKGpEd2ENuCUfYNU7A" client="_dSGT8KGqEd2ENuCUfYNU7A"/> + <packagedElement xmi:type="uml:Class" xmi:id="_bxj5WPhREd2Hu-BP-VasxQ" name="TempNodesIdsDao" clientDependency="_ggzPpfhREd2Hu-BP-VasxQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_ggzPpfhREd2Hu-BP-VasxQ" name="Dependency7" supplier="_wFp6GPhQEd2Hu-BP-VasxQ" client="_bxj5WPhREd2Hu-BP-VasxQ"/> + <packagedElement xmi:type="uml:Class" xmi:id="_hUWziPhREd2Hu-BP-VasxQ" name="TempNodeContentsDao" clientDependency="_m22yxfhREd2Hu-BP-VasxQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_m22yxfhREd2Hu-BP-VasxQ" name="Dependency8" supplier="_79nmmPhQEd2Hu-BP-VasxQ" client="_hUWziPhREd2Hu-BP-VasxQ"/> + <packagedElement xmi:type="uml:Class" xmi:id="_poU0cP9aEd25BaYHbAwXwQ" name="ReferentialDao" clientDependency="_HknsQP9fEd25BaYHbAwXwQ"> + <ownedOperation xmi:id="_1ZptcP9aEd25BaYHbAwXwQ" name="existSource"> + <ownedParameter xmi:id="_2m15UP9aEd25BaYHbAwXwQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + <ownedParameter xmi:id="_3qVWoP9aEd25BaYHbAwXwQ" name="source"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_pJdIgA4_Ed6KQuvMUCD2yg" name="facet"> + <packagedElement xmi:type="uml:Class" xmi:id="_GTtU0A5DEd6KQuvMUCD2yg" name="FacetViewDao" clientDependency="_lA-6cw5DEd6KQuvMUCD2yg"> + <ownedOperation xmi:id="_EXOkkA5EEd6KQuvMUCD2yg" name="findByName"> + <ownedParameter xmi:id="_wfw1cA5EEd6KQuvMUCD2yg" name="viewName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_3HxrQA5EEd6KQuvMUCD2yg" name="return" type="_GyHPcA5AEd6KQuvMUCD2yg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_VtjsUA5GEd6KQuvMUCD2yg" name="findAllViewName"> + <ownedParameter xmi:id="_YGvxQA5GEd6KQuvMUCD2yg" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_LybnUA5DEd6KQuvMUCD2yg" name="FacetViewChainDao" clientDependency="_li24cw5DEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Class" xmi:id="_QWfBUA5DEd6KQuvMUCD2yg" name="FacetDao" clientDependency="_mOa98w5DEd6KQuvMUCD2yg"> + <ownedOperation xmi:id="_AR870A5FEd6KQuvMUCD2yg" name="findByName"> + <ownedParameter xmi:id="_CLP_wA5FEd6KQuvMUCD2yg" name="return" type="_l5XbUA5AEd6KQuvMUCD2yg" direction="return"/> + <ownedParameter xmi:id="_FQxmQA5FEd6KQuvMUCD2yg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_dStf0A5GEd6KQuvMUCD2yg" name="findAllFacetName"> + <ownedParameter xmi:id="_fMFcQA5GEd6KQuvMUCD2yg" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_uW3iQD5HEd6us98SLDIclA" name="findAllFacetNameByContentDefinition"> + <ownedParameter xmi:id="_0swGQD5HEd6us98SLDIclA" name="return" type="_ddB9cIViEd2N0bQZBk24XA" direction="return"/> + <ownedParameter xmi:id="_4JiWMD5HEd6us98SLDIclA" name="contentDefinitionName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_SRUWUA5DEd6KQuvMUCD2yg" name="TopicDao" clientDependency="_nKAccw5DEd6KQuvMUCD2yg"> + <ownedOperation xmi:id="_NutRUA5EEd6KQuvMUCD2yg" name="findByFacet"> + <ownedParameter xmi:id="_RmuPQA5FEd6KQuvMUCD2yg" name="return" type="_xRGPsA7cEd6GlpMc1IXijg" direction="return"/> + <ownedParameter xmi:id="_cVW8MA5FEd6KQuvMUCD2yg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_sf8a0A5NEd6KQuvMUCD2yg" name="findFacetNameByTopicId"> + <ownedParameter xmi:id="_yBQHQA5NEd6KQuvMUCD2yg" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_zugTQA5NEd6KQuvMUCD2yg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_pn7e4g7cEd6GlpMc1IXijg" name="findAllTopic"> + <ownedParameter xmi:id="_tVze0A7cEd6GlpMc1IXijg" name="return" type="_xRGPsA7cEd6GlpMc1IXijg" direction="return"/> + <ownedParameter xmi:id="_00GcYA7cEd6GlpMc1IXijg" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_7YZ24g7cEd6GlpMc1IXijg" name="findAllTopic"> + <ownedParameter xmi:id="_84TjYA7cEd6GlpMc1IXijg" name="return" type="_xRGPsA7cEd6GlpMc1IXijg" direction="return"/> + <ownedParameter xmi:id="_-YvbYA7cEd6GlpMc1IXijg" name="contentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_AP_Q4A7dEd6GlpMc1IXijg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_0282gB1KEd6sNL3iT4yqBg" name="findByParentId"> + <ownedParameter xmi:id="_-rcPYB1KEd6sNL3iT4yqBg" name="return" type="_xRGPsA7cEd6GlpMc1IXijg" direction="return"/> + <ownedParameter xmi:id="_AdCv4B1LEd6sNL3iT4yqBg" name="parentTopicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_DGPxUB1MEd6sNL3iT4yqBg" name="findByTopicId"> + <ownedParameter xmi:id="_HQuNsB1MEd6sNL3iT4yqBg" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_HYK5gB1MEd6sNL3iT4yqBg" name="childTopicValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_SB87oB1MEd6sNL3iT4yqBg" name="return" type="__T4G0A5AEd6KQuvMUCD2yg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_H9VgMB4JEd6Hj8IcKtrWfg" name="findByFacetName"> + <ownedParameter xmi:id="_TQl9IB4JEd6Hj8IcKtrWfg" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_UytQIB4JEd6Hj8IcKtrWfg" name="childTopicValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_bm4SoB4JEd6Hj8IcKtrWfg" name="return" type="__T4G0A5AEd6KQuvMUCD2yg" direction="return"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_e9siUA5DEd6KQuvMUCD2yg" name="TopicRuleDao" clientDependency="_oB7i8w5DEd6KQuvMUCD2yg"> + <ownedOperation xmi:id="_eb9Rwg5EEd6KQuvMUCD2yg" name="findByTopics"> + <ownedParameter xmi:id="_oB3moA5FEd6KQuvMUCD2yg" name="return" type="_xntcUA5BEd6KQuvMUCD2yg" direction="return"/> + <ownedParameter xmi:id="_pjntQA5FEd6KQuvMUCD2yg" name="topics" type="_ddB9cIViEd2N0bQZBk24XA"/> + </ownedOperation> + <ownedOperation xmi:id="_FTbHACUBEd6Bk7gvYh5YAQ" name="findByTopic"> + <ownedParameter xmi:id="_HqVUACUBEd6Bk7gvYh5YAQ" name="return" type="_T0otsCUBEd6Bk7gvYh5YAQ" direction="return"/> + <ownedParameter xmi:id="_2oEQYCUBEd6Bk7gvYh5YAQ" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + </packagedElement> + <profileApplication xmi:id="_Mg9bEPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_Mg-CIPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="__PrMMPWREdy_h6Mk-BiOHw" name="org.sharengo.cms.core.dtos"> + <packagedElement xmi:type="uml:Class" xmi:id="_kXbRgOhvEd25AsNl_TBRDQ" name="ImportResult"> + <ownedAttribute xmi:id="_NIyD0OhzEd25AsNl_TBRDQ" name="submitted"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_OSA8wOhzEd25AsNl_TBRDQ" name="updated"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_PbtvwuhzEd25AsNl_TBRDQ" name="created"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_TjL7cOhzEd25AsNl_TBRDQ" name="total"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_-1M2GHTaEd20yqJGyRKhKA" name="ContentDefHeader"> + <ownedAttribute xmi:id="_DZ3UEnTbEd20yqJGyRKhKA" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_D5wVEnTbEd20yqJGyRKhKA" name="description"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_thVsInTbEd20yqJGyRKhKA" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_D_bU8EFPEd68g6bliBN4DQ" name="definitionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_3P478lRBEd6nD7wVEJxfpg" name="isDisable"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + <defaultValue xmi:type="uml:LiteralString" xmi:id="_9KVhIFRBEd6nD7wVEJxfpg" value="false"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_4oxq2HghEd2Vxr2aiClL8g" name="AttributeDef"> + <ownedAttribute xmi:id="_7MY3EnghEd2Vxr2aiClL8g" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_8R01InghEd2Vxr2aiClL8g" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_9Mr64nghEd2Vxr2aiClL8g" name="type" type="_OoJh0HXVEd2XodZQ_XQIpQ"/> + <ownedAttribute xmi:id="_SLZoIHgwEd2nN4b0ot5Urw" name="idContentDef"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_ikVLkN5QEd2Bgrjmm1cxJQ" name="defaultValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_ZJmhEN5REd2Bgrjmm1cxJQ" name="isMandatory"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Boolean"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_3UukkHjHEd2vSLEPekkQZw" name="Content"> + <ownedAttribute xmi:id="_8k-9QHjHEd2vSLEPekkQZw" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_u99XgMhTEd2UGuMtCFt8YQ" name="definitionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_kIsMMMhVEd2UGuMtCFt8YQ" name="attributeValues" type="_BoG6wMhaEd2zn4jAoVOTPA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_tM0CIHkDEd2Atp1vvmnWrA" name="Item"> + <ownedAttribute xmi:id="_5MHFsHkDEd2Atp1vvmnWrA" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_60eKoHkDEd2Atp1vvmnWrA" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_5apesHkIEd2Atp1vvmnWrA" name="ClosedListAttributeDef"> + <generalization xmi:id="_9n3GAHkIEd2Atp1vvmnWrA" general="_4oxq2HghEd2Vxr2aiClL8g"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_D18_8HkJEd2Atp1vvmnWrA" name="Association1" memberEnd="_D18_8XkJEd2Atp1vvmnWrA _D19nAHkJEd2Atp1vvmnWrA" navigableOwnedEnd="_D19nAHkJEd2Atp1vvmnWrA"> + <ownedEnd xmi:id="_D18_8XkJEd2Atp1vvmnWrA" name="" type="_5apesHkIEd2Atp1vvmnWrA" association="_D18_8HkJEd2Atp1vvmnWrA"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_D18_8nkJEd2Atp1vvmnWrA" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_D18_83kJEd2Atp1vvmnWrA" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_D19nAHkJEd2Atp1vvmnWrA" name="Items" type="_tM0CIHkDEd2Atp1vvmnWrA" isOrdered="true" aggregation="composite" association="_D18_8HkJEd2Atp1vvmnWrA"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_D19nAXkJEd2Atp1vvmnWrA" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_D19nAnkJEd2Atp1vvmnWrA"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="__rDAwJttEd2hONjUBs7mIQ" name="ContentHeader"> + <ownedAttribute xmi:id="_DZav8JtuEd2hONjUBs7mIQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Ey1Z8JtuEd2hONjUBs7mIQ" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_IXbiEJtuEd2hONjUBs7mIQ" name="definition" type="_-1M2GHTaEd20yqJGyRKhKA"/> + <ownedAttribute xmi:id="_aUz-sMhSEd2UGuMtCFt8YQ" name="firstAttributeDef" type="_4oxq2HghEd2Vxr2aiClL8g"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_F-eccKGqEd2ENuCUfYNU7A" name="SetOfContents"> + <ownedAttribute xmi:id="_KDPSYqGqEd2ENuCUfYNU7A" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_LcinoKGqEd2ENuCUfYNU7A" name="description"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_O1fgcKGqEd2ENuCUfYNU7A" name="updateDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_QHO1IaGqEd2ENuCUfYNU7A" name="creationDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_zNSG8aGsEd2ENuCUfYNU7A" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_l_LuIqHREd2ENuCUfYNU7A" name="containedContentsCount"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_PKoIWKQuEd2GAYp1IpBaGw" name="SortConstraint"> + <ownedAttribute xmi:id="_cwaokKQuEd2GAYp1IpBaGw" name="columName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_eU_ZsqQuEd2GAYp1IpBaGw" name="sortMode" type="_SiQLdaQuEd2GAYp1IpBaGw"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_SiQLdaQuEd2GAYp1IpBaGw" name="SortMode"> + <ownedLiteral xmi:id="_W86_8qQuEd2GAYp1IpBaGw" name="ASC"/> + <ownedLiteral xmi:id="_YLwKkqQuEd2GAYp1IpBaGw" name="DESC"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_FzLjsLoaEd2A0rZMX9hUqA" name="ContentDefSearchDto"> + <generalization xmi:id="_jD6zE8bBEd2uuaPd80qeIQ" general="_bCy1QMbBEd2uuaPd80qeIQ"/> + <ownedAttribute xmi:id="_HvVP4LoxEd2LUbkYKt0ISw" name="contentDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Z0A9UroxEd2LUbkYKt0ISw" name="fromDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_bWW50roxEd2LUbkYKt0ISw" name="toDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_ZttegAJSEd6NXsEhrbvcFg" name="includedContentIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedAttribute xmi:id="_e3KroAJSEd6NXsEhrbvcFg" name="excludedContentIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + <ownedAttribute xmi:id="_xWP2EAJSEd6NXsEhrbvcFg" name="source"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_lvPOoLowEd2LUbkYKt0ISw" name="AttributeSearchDto" isAbstract="true"> + <ownedAttribute xmi:id="_h0ok0roxEd2LUbkYKt0ISw" name="attributeDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_9L_6YLo4Ed2LUbkYKt0ISw" name="operand" type="_TZSRYLo4Ed2LUbkYKt0ISw"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_ozMu4LowEd2LUbkYKt0ISw" name="NumericAttributeSearchDto"> + <generalization xmi:id="_3c3G87owEd2LUbkYKt0ISw" general="_lvPOoLowEd2LUbkYKt0ISw"/> + <ownedAttribute xmi:id="_xY6RYLo5Ed2LUbkYKt0ISw" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_y3uYsrr9Ed2wgp-E8fwUgg" name="secondValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_wtqrELowEd2LUbkYKt0ISw" name="TextAttributeSearchDto"> + <generalization xmi:id="_3okAoLowEd2LUbkYKt0ISw" general="_lvPOoLowEd2LUbkYKt0ISw"/> + <ownedAttribute xmi:id="_Hpyu8Lo5Ed2LUbkYKt0ISw" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_0FQ5ALowEd2LUbkYKt0ISw" name="DateAttributeSearchDto"> + <generalization xmi:id="_316gI7owEd2LUbkYKt0ISw" general="_lvPOoLowEd2LUbkYKt0ISw"/> + <ownedAttribute xmi:id="_dtJRYLo5Ed2LUbkYKt0ISw" name="value"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_0ivu0LunEd2ycMmoQ1_NCQ" name="secondValue"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_A_hI8LoxEd2LUbkYKt0ISw" name="Association2" memberEnd="_A_hI8boxEd2LUbkYKt0ISw _A_hI9LoxEd2LUbkYKt0ISw" navigableOwnedEnd="_A_hI9LoxEd2LUbkYKt0ISw"> + <ownedEnd xmi:id="_A_hI8boxEd2LUbkYKt0ISw" name="" type="_FzLjsLoaEd2A0rZMX9hUqA" association="_A_hI8LoxEd2LUbkYKt0ISw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A_hI8roxEd2LUbkYKt0ISw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A_hI87oxEd2LUbkYKt0ISw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_A_hI9LoxEd2LUbkYKt0ISw" name="attributes" type="_lvPOoLowEd2LUbkYKt0ISw" isOrdered="true" isUnique="false" association="_A_hI8LoxEd2LUbkYKt0ISw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A_hI9boxEd2LUbkYKt0ISw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A_hI9roxEd2LUbkYKt0ISw"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_KP7H4LoyEd2LUbkYKt0ISw" name="ListAttributeSearchDto" isAbstract="true"> + <generalization xmi:id="_EQYYk7o4Ed2LUbkYKt0ISw" general="_lvPOoLowEd2LUbkYKt0ISw"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_t1qfALo3Ed2LUbkYKt0ISw" name="SingleChoiceAttributeSearchDto"> + <generalization xmi:id="_EcCO87o4Ed2LUbkYKt0ISw" general="_KP7H4LoyEd2LUbkYKt0ISw"/> + <ownedAttribute xmi:id="_Kh4WYro5Ed2LUbkYKt0ISw" name="choiceId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_5-eq8Lo3Ed2LUbkYKt0ISw" name="MultipleChoiceAttributeSearchDto"> + <generalization xmi:id="_ErQ9w7o4Ed2LUbkYKt0ISw" general="_KP7H4LoyEd2LUbkYKt0ISw"/> + <ownedAttribute xmi:id="_X17mYro5Ed2LUbkYKt0ISw" name="choiceIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_TZSRYLo4Ed2LUbkYKt0ISw" name="SearchOperand"> + <ownedLiteral xmi:id="_eFUWQLo4Ed2LUbkYKt0ISw" name="EQUALS"/> + <ownedLiteral xmi:id="_fh4a4Lo4Ed2LUbkYKt0ISw" name="NOT_EQUALS"/> + <ownedLiteral xmi:id="_hEwi4Lo4Ed2LUbkYKt0ISw" name="LESS"/> + <ownedLiteral xmi:id="_iar0ALo4Ed2LUbkYKt0ISw" name="LESS_OR_EQUALS"/> + <ownedLiteral xmi:id="_mAAU4Lo4Ed2LUbkYKt0ISw" name="GREATER"/> + <ownedLiteral xmi:id="_m0klYro4Ed2LUbkYKt0ISw" name="GREATER_OR_EQUALS"/> + <ownedLiteral xmi:id="_ojHx4Lo4Ed2LUbkYKt0ISw" name="BEGINS_WITH"/> + <ownedLiteral xmi:id="_pz75gLo4Ed2LUbkYKt0ISw" name="ENDS_WITH"/> + <ownedLiteral xmi:id="_rBX9Aro4Ed2LUbkYKt0ISw" name="CONTAINS"/> + <ownedLiteral xmi:id="_rw7xsLo4Ed2LUbkYKt0ISw" name="NOT_CONTAINS"/> + <ownedLiteral xmi:id="_vdyd8Lo4Ed2LUbkYKt0ISw" name="BETWEEN"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_SdWXILpEEd2ea__X_Ke6sQ" name="RestrictionDto" isAbstract="true"> + <ownedAttribute xmi:id="_-8TxsLpJEd2ea__X_Ke6sQ" name="name" type="_vtyLULpEEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_vtyLULpEEd2ea__X_Ke6sQ" name="RestrictionName"> + <ownedLiteral xmi:id="_2kinwrpEEd2ea__X_Ke6sQ" name="EQUALS"/> + <ownedLiteral xmi:id="_5k4MQbpEEd2ea__X_Ke6sQ" name="NOT_EQUALS"/> + <ownedLiteral xmi:id="_BwwBgLpFEd2ea__X_Ke6sQ" name="LESS"/> + <ownedLiteral xmi:id="_tx6fEbpFEd2ea__X_Ke6sQ" name="LESS_OR_EQUAL"/> + <ownedLiteral xmi:id="_wl0xIbpFEd2ea__X_Ke6sQ" name="GREATER"/> + <ownedLiteral xmi:id="_yYH1MLpFEd2ea__X_Ke6sQ" name="GREATER_OR_EQUAL"/> + <ownedLiteral xmi:id="_1WaLQLpFEd2ea__X_Ke6sQ" name="CONTAINS"/> + <ownedLiteral xmi:id="_5PShUrpFEd2ea__X_Ke6sQ" name="STARTS_WITH"/> + <ownedLiteral xmi:id="_7O8E4rpFEd2ea__X_Ke6sQ" name="ENDS_WITH"/> + <ownedLiteral xmi:id="_Qu4_UrpGEd2ea__X_Ke6sQ" name="NOT"/> + <ownedLiteral xmi:id="_Syq08rpGEd2ea__X_Ke6sQ" name="AND"/> + <ownedLiteral xmi:id="_Ui6DgLpGEd2ea__X_Ke6sQ" name="OR"/> + <ownedLiteral xmi:id="_Wdeo0rsBEd2r54aHCi3ysg" name="BETWEEN"/> + <ownedLiteral xmi:id="__BqDwMbWEd2uuaPd80qeIQ" name="TRUE"/> + <ownedLiteral xmi:id="_AIlPkMbXEd2uuaPd80qeIQ" name="FALSE"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_FFdooLpHEd2ea__X_Ke6sQ" name="BinaryOperator"> + <generalization xmi:id="_hqzRY7pHEd2ea__X_Ke6sQ" general="_SdWXILpEEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_UO1MwLpNEd2ea__X_Ke6sQ" name="element" type="_agULMLpIEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_ZgPcAbpNEd2ea__X_Ke6sQ" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_NMZTgLpHEd2ea__X_Ke6sQ" name="Equals"> + <generalization xmi:id="_kTRIc7pHEd2ea__X_Ke6sQ" general="_FFdooLpHEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_lVlhELpHEd2ea__X_Ke6sQ" name="NotEquals"> + <generalization xmi:id="_nfHZY7pHEd2ea__X_Ke6sQ" general="_FFdooLpHEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_s94IILpHEd2ea__X_Ke6sQ" name="GreaterOrEqual"> + <generalization xmi:id="_1U-V8LpHEd2ea__X_Ke6sQ" general="_FFdooLpHEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_wB9kMLpHEd2ea__X_Ke6sQ" name="Greater"> + <generalization xmi:id="_1iHaELpHEd2ea__X_Ke6sQ" general="_FFdooLpHEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_xECFMLpHEd2ea__X_Ke6sQ" name="Less"> + <generalization xmi:id="_05QqULpHEd2ea__X_Ke6sQ" general="_FFdooLpHEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_x6JN0LpHEd2ea__X_Ke6sQ" name="LessOrEqual"> + <generalization xmi:id="_Czqvs7pIEd2ea__X_Ke6sQ" general="_FFdooLpHEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_GlrBsLpIEd2ea__X_Ke6sQ" name="Not"> + <generalization xmi:id="_IK56ILpIEd2ea__X_Ke6sQ" general="_SdWXILpEEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_e1nlQLpNEd2ea__X_Ke6sQ" name="restriction" type="_SdWXILpEEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_KZ2d8LpIEd2ea__X_Ke6sQ" name="And"> + <generalization xmi:id="_NrTAkLpIEd2ea__X_Ke6sQ" general="_SdWXILpEEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_NMxQELrNEd2ea__X_Ke6sQ" name="restrictions" type="_Uzat0LrMEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_L4m68LpIEd2ea__X_Ke6sQ" name="Or"> + <generalization xmi:id="_N4BN8LpIEd2ea__X_Ke6sQ" general="_SdWXILpEEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_hzHpALrNEd2ea__X_Ke6sQ" name="restrictions" type="_Uzat0LrMEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_TtLqgLpIEd2ea__X_Ke6sQ" name="Contains"> + <generalization xmi:id="_WCc4wLpIEd2ea__X_Ke6sQ" general="_SdWXILpEEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_3jH2QLpMEd2ea__X_Ke6sQ" name="element" type="_agULMLpIEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_KN2QALpNEd2ea__X_Ke6sQ" name="value" type="_ddB9cIViEd2N0bQZBk24XA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_agULMLpIEd2ea__X_Ke6sQ" name="ElementDto"> + <ownedAttribute xmi:id="_2zatELpLEd2ea__X_Ke6sQ" name="elementName" type="_oO-TkLpIEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_6IXPobpLEd2ea__X_Ke6sQ" name="operandName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_AgeoQLpMEd2ea__X_Ke6sQ" name="operandType" type="_Syz3gLpJEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_oO-TkLpIEd2ea__X_Ke6sQ" name="ElementName"> + <ownedLiteral xmi:id="_ra5dALpIEd2ea__X_Ke6sQ" name="CONTENT_DEFINITION"/> + <ownedLiteral xmi:id="_uy6hsrpIEd2ea__X_Ke6sQ" name="CONTENT"/> + <ownedLiteral xmi:id="_v29_sLpIEd2ea__X_Ke6sQ" name="ATTRIBUTE"/> + <ownedLiteral xmi:id="_rK13QC2VEd6Baqqif9vVOQ" name="FACET"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_0psH0LpIEd2ea__X_Ke6sQ" name="EndsWith"> + <generalization xmi:id="_F6SF4LpJEd2ea__X_Ke6sQ" general="_FFdooLpHEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_G6C5wLpJEd2ea__X_Ke6sQ" name="StartsWith"> + <generalization xmi:id="_LTpXQLpJEd2ea__X_Ke6sQ" general="_FFdooLpHEd2ea__X_Ke6sQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_Syz3gLpJEd2ea__X_Ke6sQ" name="OperandType"> + <ownedLiteral xmi:id="_VpP5ILpJEd2ea__X_Ke6sQ" name="ID"/> + <ownedLiteral xmi:id="_W1EzELpJEd2ea__X_Ke6sQ" name="STRING"/> + <ownedLiteral xmi:id="_YpbFkrpJEd2ea__X_Ke6sQ" name="TEXT"/> + <ownedLiteral xmi:id="_answIrpJEd2ea__X_Ke6sQ" name="XHTML"/> + <ownedLiteral xmi:id="_cRxsULpJEd2ea__X_Ke6sQ" name="MULTIMEDIA"/> + <ownedLiteral xmi:id="_eBsx0rpJEd2ea__X_Ke6sQ" name="FLOAT"/> + <ownedLiteral xmi:id="_fvBPQrpJEd2ea__X_Ke6sQ" name="INTEGER"/> + <ownedLiteral xmi:id="_g4zh0LpJEd2ea__X_Ke6sQ" name="DATE"/> + <ownedLiteral xmi:id="_i7vp8LpJEd2ea__X_Ke6sQ" name="SIMPLE_CHOICE_CLOSED_LIST"/> + <ownedLiteral xmi:id="_j2kTcbpJEd2ea__X_Ke6sQ" name="MULTIPLE_CHOICE_CLOSED_LIST"/> + <ownedLiteral xmi:id="_ky5dwC2VEd6Baqqif9vVOQ" name="FACET_NAME"/> + <ownedLiteral xmi:id="_n5fbQC2VEd6Baqqif9vVOQ" name="PARENT_TOPIC"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_q4feFLpJEd2ea__X_Ke6sQ" name="OperandName"> + <ownedLiteral xmi:id="_tKiZMLpJEd2ea__X_Ke6sQ" name="ID"/> + <ownedLiteral xmi:id="_u8EBMLpJEd2ea__X_Ke6sQ" name="CREATION_DATE"/> + <ownedLiteral xmi:id="_UUJjYgJTEd6NXsEhrbvcFg" name="SOURCE"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_Sp7wcLraEd2I3Oprj84ARg" name="Between"> + <generalization xmi:id="_7uQpc7raEd2I3Oprj84ARg" general="_SdWXILpEEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_jDR9cLraEd2I3Oprj84ARg" name="element" type="_agULMLpIEd2ea__X_Ke6sQ"/> + <ownedAttribute xmi:id="_m6zBkLraEd2I3Oprj84ARg" name="min"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_p0fykbraEd2I3Oprj84ARg" name="max"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_bCy1QMbBEd2uuaPd80qeIQ" name="AbstractSearchDto" isAbstract="true"/> + <packagedElement xmi:type="uml:Class" xmi:id="_kAX0QMbBEd2uuaPd80qeIQ" name="KeywordsSearchDto"> + <generalization xmi:id="_2F8Sg8bBEd2uuaPd80qeIQ" general="_bCy1QMbBEd2uuaPd80qeIQ"/> + <ownedAttribute xmi:id="_4aGtgMbBEd2uuaPd80qeIQ" name="keyword"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_JAhtMMbCEd2uuaPd80qeIQ" name="List<AbstractSearchDto>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_VbTx0MeREd2h5Jm14AAEsA" name="ContentDef"> + <generalization xmi:id="_Z19_Q8eREd2h5Jm14AAEsA" general="_-1M2GHTaEd20yqJGyRKhKA"/> + <ownedAttribute xmi:id="_XQIlcMeREd2h5Jm14AAEsA" name="attributes" type="_ZytvEHhBEd2X9uNQyI_qHw"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_b7u8YMhWEd2UGuMtCFt8YQ" name="AttributeValue" isAbstract="true"> + <ownedAttribute xmi:id="_gVRIcMhWEd2UGuMtCFt8YQ" name="attributeDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedOperation xmi:id="_TkUJAMhXEd2UGuMtCFt8YQ" name="getValue"> + <ownedParameter xmi:id="_V_kDcMhXEd2UGuMtCFt8YQ" name="return" direction="return"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_zfJt8chXEd2UGuMtCFt8YQ" name="setValue"> + <ownedParameter xmi:id="_0dx5YMhXEd2UGuMtCFt8YQ" name="value"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_ysvPAMhWEd2UGuMtCFt8YQ" name="StringValue"> + <generalization xmi:id="_1zLbg8hWEd2UGuMtCFt8YQ" general="_b7u8YMhWEd2UGuMtCFt8YQ"/> + <ownedAttribute xmi:id="_I-bvcshXEd2UGuMtCFt8YQ" name="stringValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedOperation xmi:id="_7eIPUMhaEd2zn4jAoVOTPA" name="getValue"> + <ownedParameter xmi:id="_7eIPUchaEd2zn4jAoVOTPA" name="return" direction="return"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_7eJdcMhaEd2zn4jAoVOTPA" name="setValue"> + <ownedParameter xmi:id="_7eJdcchaEd2zn4jAoVOTPA" name="value"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_3tyHAMhWEd2UGuMtCFt8YQ" name="DateValue"> + <generalization xmi:id="__rbTA8hWEd2UGuMtCFt8YQ" general="_b7u8YMhWEd2UGuMtCFt8YQ"/> + <ownedAttribute xmi:id="_LPxf8shXEd2UGuMtCFt8YQ" name="dateValue"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedOperation xmi:id="_78lF4MhaEd2zn4jAoVOTPA" name="getValue"> + <ownedParameter xmi:id="_78ls8MhaEd2zn4jAoVOTPA" name="return" direction="return"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_78ls8chaEd2zn4jAoVOTPA" name="setValue"> + <ownedParameter xmi:id="_78ls8shaEd2zn4jAoVOTPA" name="value"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_CAfs8MhXEd2UGuMtCFt8YQ" name="DoubleValue"> + <generalization xmi:id="_IC24A8hXEd2UGuMtCFt8YQ" general="_b7u8YMhWEd2UGuMtCFt8YQ"/> + <ownedAttribute xmi:id="_NsVpAMhXEd2UGuMtCFt8YQ" name="doubleValue" type="_70rUaHXXEd2XodZQ_XQIpQ"/> + <ownedOperation xmi:id="_89HV0MhaEd2zn4jAoVOTPA" name="getValue"> + <ownedParameter xmi:id="_89HV0chaEd2zn4jAoVOTPA" name="return" direction="return"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_89H84MhaEd2zn4jAoVOTPA" name="setValue"> + <ownedParameter xmi:id="_89H84chaEd2zn4jAoVOTPA" name="value"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_FMMz9shXEd2UGuMtCFt8YQ" name="IntegerValue"> + <generalization xmi:id="_IRM2A8hXEd2UGuMtCFt8YQ" general="_b7u8YMhWEd2UGuMtCFt8YQ"/> + <ownedAttribute xmi:id="_Q4CI8shXEd2UGuMtCFt8YQ" name="integerValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedOperation xmi:id="_-O9_QMhaEd2zn4jAoVOTPA" name="getValue"> + <ownedParameter xmi:id="_-O9_QchaEd2zn4jAoVOTPA" name="return" direction="return"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_-O9_QshaEd2zn4jAoVOTPA" name="setValue"> + <ownedParameter xmi:id="_-O9_Q8haEd2zn4jAoVOTPA" name="value"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_U48ZoMhXEd2UGuMtCFt8YQ" name="AttributeType"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_BoG6wMhaEd2zn4jAoVOTPA" name="Set<AttributeValue>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_g6OzsNcdEd2nifBZRRnUOg" name="UpdateResult"> + <ownedAttribute xmi:id="_mpSoQNcdEd2nifBZRRnUOg" name="submitted"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_oVMJYtcdEd2nifBZRRnUOg" name="dealt"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_wH4poNcdEd2nifBZRRnUOg" name="total"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_0hSnEOkqEd2VcLeORko10g" name="ContentLink"> + <generalization xmi:id="_0hSnEekqEd2VcLeORko10g"> + <general xmi:type="uml:Class" href="cmsLink.uml#_Q7hZ8I8AEd2TZJhzNZ91vg"/> + </generalization> + <ownedAttribute xmi:id="_0hSnEukqEd2VcLeORko10g" name="sourceContent" type="__rDAwJttEd2hONjUBs7mIQ"/> + <ownedAttribute xmi:id="_0hSnE-kqEd2VcLeORko10g" name="targetContent" type="__rDAwJttEd2hONjUBs7mIQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_zqte8O69Ed2vc7ElAwQEXw" name="LinkWithContentNames"> + <generalization xmi:id="_BIcZ8-6_Ed2vc7ElAwQEXw"> + <general xmi:type="uml:Class" href="cmsLink.uml#_Q7hZ8I8AEd2TZJhzNZ91vg"/> + </generalization> + <ownedAttribute xmi:id="_2e2agO69Ed2vc7ElAwQEXw" name="contentSourceName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_405r4u69Ed2vc7ElAwQEXw" name="contentTargetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_37knQPEaEd2U9JmEC6FyWg" name="LinkDefinitionExport"> + <generalization xmi:id="_Lg6PI_EbEd2U9JmEC6FyWg"> + <general xmi:type="uml:Class" href="cmsLink.uml#_c2ZwIIrlEd2IhLeDKBwRog"/> + </generalization> + <ownedOperation xmi:id="_R3_tAPEbEd2U9JmEC6FyWg" name="addAllLinks"> + <ownedParameter xmi:id="_U9sSoPEbEd2U9JmEC6FyWg" name="links" type="_iy_1kPEbEd2U9JmEC6FyWg"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_Fr3uYPEbEd2U9JmEC6FyWg" name="Association3" memberEnd="_Fr3uYfEbEd2U9JmEC6FyWg _Fr4VcfEbEd2U9JmEC6FyWg" navigableOwnedEnd="_Fr4VcfEbEd2U9JmEC6FyWg"> + <ownedEnd xmi:id="_Fr3uYfEbEd2U9JmEC6FyWg" name="source" type="_37knQPEaEd2U9JmEC6FyWg" association="_Fr3uYPEbEd2U9JmEC6FyWg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Fr3uYvEbEd2U9JmEC6FyWg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Fr4VcPEbEd2U9JmEC6FyWg" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_Fr4VcfEbEd2U9JmEC6FyWg" name="links" type="_zqte8O69Ed2vc7ElAwQEXw" aggregation="composite" association="_Fr3uYPEbEd2U9JmEC6FyWg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Fr4VcvEbEd2U9JmEC6FyWg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Fr4Vc_EbEd2U9JmEC6FyWg"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_v0cXgPdOEd2So46ZaKFSQw" name="Association4" memberEnd="_v0cXgfdOEd2So46ZaKFSQw _v0cXhPdOEd2So46ZaKFSQw" navigableOwnedEnd="_v0cXhPdOEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_v0cXgfdOEd2So46ZaKFSQw" name="source" type="_b7u8YMhWEd2UGuMtCFt8YQ" association="_v0cXgPdOEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v0cXgvdOEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v0cXg_dOEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_v0cXhPdOEd2So46ZaKFSQw" name="target" association="_v0cXgPdOEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v0cXhfdOEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v0cXhvdOEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_yHKBCvdOEd2So46ZaKFSQw" name="Association5" memberEnd="_yHKBC_dOEd2So46ZaKFSQw _yHKBDvdOEd2So46ZaKFSQw" navigableOwnedEnd="_yHKBDvdOEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_yHKBC_dOEd2So46ZaKFSQw" name="source" type="_3UukkHjHEd2vSLEPekkQZw" association="_yHKBCvdOEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yHKBDPdOEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yHKBDfdOEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_yHKBDvdOEd2So46ZaKFSQw" name="target" association="_yHKBCvdOEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yHKBD_dOEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yHKBEPdOEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_yZixivdOEd2So46ZaKFSQw" name="Association6" memberEnd="_yZixi_dOEd2So46ZaKFSQw _yZixjvdOEd2So46ZaKFSQw" navigableOwnedEnd="_yZixjvdOEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_yZixi_dOEd2So46ZaKFSQw" name="source" type="_3UukkHjHEd2vSLEPekkQZw" association="_yZixivdOEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yZixjPdOEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yZixjfdOEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_yZixjvdOEd2So46ZaKFSQw" name="target" association="_yZixivdOEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yZixj_dOEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yZixkPdOEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_DsL-CvdPEd2So46ZaKFSQw" name="Association7" memberEnd="_DsL-C_dPEd2So46ZaKFSQw _DsL-DvdPEd2So46ZaKFSQw" navigableOwnedEnd="_DsL-DvdPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_DsL-C_dPEd2So46ZaKFSQw" name="source" type="_4oxq2HghEd2Vxr2aiClL8g" association="_DsL-CvdPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DsL-DPdPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DsL-DfdPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_DsL-DvdPEd2So46ZaKFSQw" name="target" association="_DsL-CvdPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DsL-D_dPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DsL-EPdPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_EhHa6vdPEd2So46ZaKFSQw" name="Association8" memberEnd="_EhHa6_dPEd2So46ZaKFSQw _EhHa7vdPEd2So46ZaKFSQw" navigableOwnedEnd="_EhHa7vdPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_EhHa6_dPEd2So46ZaKFSQw" name="source" type="_-1M2GHTaEd20yqJGyRKhKA" association="_EhHa6vdPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhHa7PdPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhHa7fdPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_EhHa7vdPEd2So46ZaKFSQw" name="target" association="_EhHa6vdPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhHa7_dPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhHa8PdPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_HtwWCvdPEd2So46ZaKFSQw" name="Association10" memberEnd="_HtwWC_dPEd2So46ZaKFSQw _HtwWDvdPEd2So46ZaKFSQw" navigableOwnedEnd="_HtwWDvdPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_HtwWC_dPEd2So46ZaKFSQw" name="source" type="_-1M2GHTaEd20yqJGyRKhKA" association="_HtwWCvdPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HtwWDPdPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HtwWDfdPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_HtwWDvdPEd2So46ZaKFSQw" name="target" association="_HtwWCvdPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HtwWD_dPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HtwWEPdPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_ZFg2kPdQEd2So46ZaKFSQw" name="Association9" memberEnd="_ZFg2kfdQEd2So46ZaKFSQw _ZFg2lPdQEd2So46ZaKFSQw" navigableOwnedEnd="_ZFg2lPdQEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_ZFg2kfdQEd2So46ZaKFSQw" name="source" type="__rDAwJttEd2hONjUBs7mIQ" association="_ZFg2kPdQEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZFg2kvdQEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZFg2k_dQEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_ZFg2lPdQEd2So46ZaKFSQw" name="target" association="_ZFg2kPdQEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZFg2lfdQEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZFg2lvdQEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_IVebWPdlEd2Fr5Df5xrkyw" name="Association11" memberEnd="_IVebWfdlEd2Fr5Df5xrkyw _IVebXPdlEd2Fr5Df5xrkyw" navigableOwnedEnd="_IVebXPdlEd2Fr5Df5xrkyw"> + <ownedEnd xmi:id="_IVebWfdlEd2Fr5Df5xrkyw" name="source" association="_IVebWPdlEd2Fr5Df5xrkyw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IVebWvdlEd2Fr5Df5xrkyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IVebW_dlEd2Fr5Df5xrkyw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_IVebXPdlEd2Fr5Df5xrkyw" name="nomenclatureNodes" isUnique="false" aggregation="composite" association="_IVebWPdlEd2Fr5Df5xrkyw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IVebXfdlEd2Fr5Df5xrkyw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IVebXvdlEd2Fr5Df5xrkyw"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_PBkf6fdlEd2Fr5Df5xrkyw" name="Association12" memberEnd="_PBkf6vdlEd2Fr5Df5xrkyw _PBkf7fdlEd2Fr5Df5xrkyw" navigableOwnedEnd="_PBkf7fdlEd2Fr5Df5xrkyw"> + <ownedEnd xmi:id="_PBkf6vdlEd2Fr5Df5xrkyw" name="source" association="_PBkf6fdlEd2Fr5Df5xrkyw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PBkf6_dlEd2Fr5Df5xrkyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PBkf7PdlEd2Fr5Df5xrkyw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_PBkf7fdlEd2Fr5Df5xrkyw" name="contents" type="_3UukkHjHEd2vSLEPekkQZw" isUnique="false" aggregation="composite" association="_PBkf6fdlEd2Fr5Df5xrkyw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PBkf7vdlEd2Fr5Df5xrkyw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PBkf7_dlEd2Fr5Df5xrkyw"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_B3oxKfhVEd2du7_XCS7v_A" name="Association13" memberEnd="_B3oxKvhVEd2du7_XCS7v_A _B3oxLfhVEd2du7_XCS7v_A" navigableOwnedEnd="_B3oxLfhVEd2du7_XCS7v_A"> + <ownedEnd xmi:id="_B3oxKvhVEd2du7_XCS7v_A" name="source" type="_tM0CIHkDEd2Atp1vvmnWrA" association="_B3oxKfhVEd2du7_XCS7v_A"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B3oxK_hVEd2du7_XCS7v_A" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B3oxLPhVEd2du7_XCS7v_A" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_B3oxLfhVEd2du7_XCS7v_A" name="target" association="_B3oxKfhVEd2du7_XCS7v_A"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B3oxLvhVEd2du7_XCS7v_A" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B3oxL_hVEd2du7_XCS7v_A" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_k4ogWPm2Ed2ngN8mqQoDPw" name="LinkBetweenNodesAndContents"> + <ownedAttribute xmi:id="_mB840Pm2Ed2ngN8mqQoDPw" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_p9LYQvm2Ed2ngN8mqQoDPw" name="contentsIds" type="_ddB9cIViEd2N0bQZBk24XA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_e8X8AP9CEd2Qm_QM6AOnsQ" name="Referential"> + <ownedAttribute xmi:id="_1KLa8v9CEd2Qm_QM6AOnsQ" name="source"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_12E3ov9CEd2Qm_QM6AOnsQ" name="date"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_2Z7LkP9CEd2Qm_QM6AOnsQ" name="nbProducts"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_cKzzgP9nEd2c4u-jA89yIA" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_sQHqCP9CEd2Qm_QM6AOnsQ" name="importedDataToNomenclatureDTO" memberEnd="_sQIREP9CEd2Qm_QM6AOnsQ _sQIRE_9CEd2Qm_QM6AOnsQ" navigableOwnedEnd="_sQIRE_9CEd2Qm_QM6AOnsQ"> + <ownedEnd xmi:id="_sQIREP9CEd2Qm_QM6AOnsQ" name="referential" type="_e8X8AP9CEd2Qm_QM6AOnsQ" association="_sQHqCP9CEd2Qm_QM6AOnsQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sQIREf9CEd2Qm_QM6AOnsQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sQIREv9CEd2Qm_QM6AOnsQ" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_sQIRE_9CEd2Qm_QM6AOnsQ" name="nomenclature" association="_sQHqCP9CEd2Qm_QM6AOnsQ"> + <type xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sQIRFP9CEd2Qm_QM6AOnsQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sQIRFf9CEd2Qm_QM6AOnsQ" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_rAF6AA4_Ed6KQuvMUCD2yg" name="facet"> + <packagedElement xmi:type="uml:Class" xmi:id="_EGAKUA5HEd6KQuvMUCD2yg" name="FacetContent"> + <ownedAttribute xmi:id="_F8VZ0A5HEd6KQuvMUCD2yg" name="facetName" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Q7E_UA5HEd6KQuvMUCD2yg" name="topics" visibility="protected" type="_j8IR8B07Ed6sNL3iT4yqBg"/> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_Ka0XUA5HEd6KQuvMUCD2yg" name="List<FacetContent>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_Vcdf0A5HEd6KQuvMUCD2yg" name="FacetResult"> + <ownedAttribute xmi:id="_gcp20A5HEd6KQuvMUCD2yg" name="facetName" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="__YtfUA5HEd6KQuvMUCD2yg" name="topicResults" visibility="protected" type="_g_fFMB08Ed6sNL3iT4yqBg"/> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_EfoV0A5IEd6KQuvMUCD2yg" name="List<FacetResult>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_Pk2hUA5JEd6KQuvMUCD2yg" name="List<List<String>>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_xRGPsA7cEd6GlpMc1IXijg" name="List<Topic>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_SsxC8B07Ed6sNL3iT4yqBg" name="TopicDTO"> + <ownedAttribute xmi:id="_Z6w6sB07Ed6sNL3iT4yqBg" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_c4zZIB07Ed6sNL3iT4yqBg" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_j8IR8B07Ed6sNL3iT4yqBg" name="List<TopicDTO>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_D5ipwB08Ed6sNL3iT4yqBg" name="TopicResult"> + <generalization xmi:id="_K-prQB08Ed6sNL3iT4yqBg" general="_SsxC8B07Ed6sNL3iT4yqBg"/> + <ownedAttribute xmi:id="_GUebIB08Ed6sNL3iT4yqBg" name="count"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_g_fFMB08Ed6sNL3iT4yqBg" name="List<TopicResult>"/> + <packagedElement xmi:type="uml:Class" xmi:id="_55WnYCtWEd6tjYAzTLw2Cw" name="CriterionDto"> + <ownedAttribute xmi:id="_MgiDQCtqEd6tjYAzTLw2Cw" name="name" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_tEh58CtqEd6tjYAzTLw2Cw" name="displayName" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_uGOAcCtqEd6tjYAzTLw2Cw" name="pictureId" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_yAPmACtqEd6tjYAzTLw2Cw" name="pitch" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_T_pTEC2BEd6R-vHwJRLroA" name="attDefId" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_x0oyoC8-Ed6-MauFHegShA" name="contentId" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_5R04IE9XEd6VjacN4bzw2Q" name="TopicRuleDto"> + <ownedAttribute xmi:id="_IHxYsE9YEd6VjacN4bzw2Q" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_hh8F8k9YEd6VjacN4bzw2Q" name="request"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_oWsXQk9YEd6VjacN4bzw2Q" name="search" type="_50mREA74Ed6i07THnW3V5A"/> + <ownedAttribute xmi:id="_qok6Uk9YEd6VjacN4bzw2Q" name="number"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_sMtmkk9YEd6VjacN4bzw2Q" name="lastUser"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_uT3gUk9YEd6VjacN4bzw2Q" name="creationDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_xvggwk9YEd6VjacN4bzw2Q" name="lastUsedDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_zkLjYk9YEd6VjacN4bzw2Q" name="lastModificationDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_xIOzQFGmEd6lINZTnfnS_Q" name="Level"> + <generalization xmi:id="_-L8PQ1GoEd6lINZTnfnS_Q" general="_D5ipwB08Ed6sNL3iT4yqBg"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_3CkDsFGmEd6lINZTnfnS_Q" name="EntryPoint"> + <ownedAttribute xmi:id="_wqIskFGnEd6lINZTnfnS_Q" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_UKe4QFGrEd6lINZTnfnS_Q" name="Label"> + <generalization xmi:id="_qinX41GrEd6lINZTnfnS_Q" general="_D5ipwB08Ed6sNL3iT4yqBg"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_VfsXsFGrEd6lINZTnfnS_Q" name="Subject"> + <ownedAttribute xmi:id="_rNxNsFGrEd6lINZTnfnS_Q" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_r56skFGsEd6lINZTnfnS_Q" name="A_<subject>_<label>" memberEnd="_r56skVGsEd6lINZTnfnS_Q _r56slFGsEd6lINZTnfnS_Q" navigableOwnedEnd="_r56slFGsEd6lINZTnfnS_Q"> + <ownedEnd xmi:id="_r56skVGsEd6lINZTnfnS_Q" name="subject" type="_VfsXsFGrEd6lINZTnfnS_Q" isUnique="false" association="_r56skFGsEd6lINZTnfnS_Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r56sklGsEd6lINZTnfnS_Q" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r56sk1GsEd6lINZTnfnS_Q" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_r56slFGsEd6lINZTnfnS_Q" name="labels" type="_UKe4QFGrEd6lINZTnfnS_Q" isUnique="false" association="_r56skFGsEd6lINZTnfnS_Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r56slVGsEd6lINZTnfnS_Q" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r56sllGsEd6lINZTnfnS_Q"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_zfpH2lGsEd6lINZTnfnS_Q" name="A_<entryPoint>_<level>" memberEnd="_zfpH21GsEd6lINZTnfnS_Q _zfpH3lGsEd6lINZTnfnS_Q" navigableOwnedEnd="_zfpH3lGsEd6lINZTnfnS_Q"> + <ownedEnd xmi:id="_zfpH21GsEd6lINZTnfnS_Q" name="entryPoint" type="_3CkDsFGmEd6lINZTnfnS_Q" isUnique="false" association="_zfpH2lGsEd6lINZTnfnS_Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zfpH3FGsEd6lINZTnfnS_Q" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zfpH3VGsEd6lINZTnfnS_Q" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_zfpH3lGsEd6lINZTnfnS_Q" name="level" type="_xIOzQFGmEd6lINZTnfnS_Q" isUnique="false" association="_zfpH2lGsEd6lINZTnfnS_Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zfpH31GsEd6lINZTnfnS_Q" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zfpH4FGsEd6lINZTnfnS_Q"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_jCwpMFGtEd6lINZTnfnS_Q" name="Family"> + <generalization xmi:id="_nlSZM1GtEd6lINZTnfnS_Q" general="_SsxC8B07Ed6sNL3iT4yqBg"/> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_aSk7EFGvEd6lINZTnfnS_Q" name="List<Level>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_a-Lc0FGvEd6lINZTnfnS_Q" name="List<EntryPoint>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_gtODQFGvEd6lINZTnfnS_Q" name="List<Family>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_jBrZMFGvEd6lINZTnfnS_Q" name="List<Label>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_k33ewFGvEd6lINZTnfnS_Q" name="List<Subject>"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_pn_cYA70Ed6i07THnW3V5A" name="ContentNomenclatureSearchDto"> + <ownedAttribute xmi:id="_S6i-oA71Ed6i07THnW3V5A" name="searchNodeIds" type="_P2_uEA71Ed6i07THnW3V5A"/> + <ownedOperation xmi:id="_k0TOcA71Ed6i07THnW3V5A" name="addSearchNodeId"> + <ownedParameter xmi:id="_nHCtIA71Ed6i07THnW3V5A" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_qJUyYA71Ed6i07THnW3V5A" name="removeSearchNodeId"> + <ownedParameter xmi:id="_syvrsA71Ed6i07THnW3V5A" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_utHtsA71Ed6i07THnW3V5A" name="containsNodeId"> + <ownedParameter xmi:id="_wQ-GEA71Ed6i07THnW3V5A" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_xa9M8A71Ed6i07THnW3V5A" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_0mbDYA71Ed6i07THnW3V5A" name="getSearchDtoAsList"> + <ownedParameter xmi:id="_1oKNMA71Ed6i07THnW3V5A" name="return" type="_JAhtMMbCEd2uuaPd80qeIQ" direction="return"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_w1XpEA70Ed6i07THnW3V5A" name="Association14" memberEnd="_w1XpEQ70Ed6i07THnW3V5A _w1XpFA70Ed6i07THnW3V5A" navigableOwnedEnd="_w1XpFA70Ed6i07THnW3V5A"> + <ownedEnd xmi:id="_w1XpEQ70Ed6i07THnW3V5A" name="source" type="_pn_cYA70Ed6i07THnW3V5A" association="_w1XpEA70Ed6i07THnW3V5A"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w1XpEg70Ed6i07THnW3V5A" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w1XpEw70Ed6i07THnW3V5A" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_w1XpFA70Ed6i07THnW3V5A" name="searchDto" type="_FzLjsLoaEd2A0rZMX9hUqA" association="_w1XpEA70Ed6i07THnW3V5A"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w1XpFQ70Ed6i07THnW3V5A" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w1XpFg70Ed6i07THnW3V5A" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_wmHRUC2OEd6Baqqif9vVOQ" name="FacetSearchDto"> + <ownedAttribute xmi:id="_7ph7cC2OEd6Baqqif9vVOQ" name="facetName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_AHTHQC2PEd6Baqqif9vVOQ" name="topicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_MDuqwC2UEd6Baqqif9vVOQ" name="parentTopicId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_GxH6-i2PEd6Baqqif9vVOQ" name="Association15" memberEnd="_GxH6-y2PEd6Baqqif9vVOQ _GxH6_i2PEd6Baqqif9vVOQ" navigableOwnedEnd="_GxH6_i2PEd6Baqqif9vVOQ"> + <ownedEnd xmi:id="_GxH6-y2PEd6Baqqif9vVOQ" name="search" type="_FzLjsLoaEd2A0rZMX9hUqA" isUnique="false" association="_GxH6-i2PEd6Baqqif9vVOQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GxH6_C2PEd6Baqqif9vVOQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GxH6_S2PEd6Baqqif9vVOQ" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_GxH6_i2PEd6Baqqif9vVOQ" name="facets" type="_wmHRUC2OEd6Baqqif9vVOQ" isOrdered="true" isUnique="false" association="_GxH6-i2PEd6Baqqif9vVOQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GxH6_y2PEd6Baqqif9vVOQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GxH7AC2PEd6Baqqif9vVOQ"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_hK3J0EFOEd68g6bliBN4DQ" name="ContentValue"> + <generalization xmi:id="_qHCaokFOEd68g6bliBN4DQ" general="_b7u8YMhWEd2UGuMtCFt8YQ"/> + <ownedAttribute xmi:id="_uwXWMEFOEd68g6bliBN4DQ" name="contentValue" type="_3UukkHjHEd2vSLEPekkQZw"/> + </packagedElement> + <profileApplication xmi:id="_M2BsIPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_M2CTMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_Cp0X0PWSEdy_h6Mk-BiOHw" name="org.sharengo.cms.core.entities"> + <ownedComment xmi:id="_EelqkN5REd2Bgrjmm1cxJQ" annotatedElement="_KYKiGHXPEd2gat_LwJwOew"> + <body>For ClosedList, default value refer a ListItem Id +for xhtml or text, defaultValue refer an other entity by its ID +</body> + </ownedComment> + <ownedComment xmi:id="_OyvY8PbREd2So46ZaKFSQw"> + <body>View embedded model to know all attributes in entities</body> + </ownedComment> + <packagedElement xmi:type="uml:Class" xmi:id="_--aR4HTZEd20yqJGyRKhKA" name="ContentDefinition"> + <ownedAttribute xmi:id="_DJcH4nTaEd20yqJGyRKhKA" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_aH5AonTaEd20yqJGyRKhKA" name="description"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_2ClQwFRAEd6nD7wVEJxfpg" name="isDisable"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/> + <defaultValue xmi:type="uml:LiteralString" xmi:id="_kMHEkFTnEd6KRY193l1Mng" value="false"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_KYKiGHXPEd2gat_LwJwOew" name="AttributeDefinition"> + <ownedAttribute xmi:id="_gCH60nXUEd2XodZQ_XQIpQ" name="type" type="_OoJh0HXVEd2XodZQ_XQIpQ"/> + <ownedAttribute xmi:id="_4WNIYHgGEd2YSIB0I8pjiw" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_s4Bo8N5QEd2Bgrjmm1cxJQ" name="defaultValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_GcsWAN5REd2Bgrjmm1cxJQ" name="isMandatory"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Boolean"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_NcHbSHXPEd2gat_LwJwOew" name="ContentEntity"/> + <packagedElement xmi:type="uml:Class" xmi:id="_O3Kc-HXPEd2gat_LwJwOew" name="Attribute"/> + <packagedElement xmi:type="uml:Association" xmi:id="_RoVkGXXPEd2gat_LwJwOew" name="Association1" memberEnd="_RoVkGnXPEd2gat_LwJwOew _RoVkHXXPEd2gat_LwJwOew" navigableOwnedEnd="_RoVkGnXPEd2gat_LwJwOew"> + <ownedEnd xmi:id="_RoVkGnXPEd2gat_LwJwOew" name="definition" type="_--aR4HTZEd20yqJGyRKhKA" isUnique="false" association="_RoVkGXXPEd2gat_LwJwOew"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RoVkG3XPEd2gat_LwJwOew" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RoVkHHXPEd2gat_LwJwOew" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_RoVkHXXPEd2gat_LwJwOew" name="" visibility="public" type="_NcHbSHXPEd2gat_LwJwOew" isUnique="false" aggregation="shared" association="_RoVkGXXPEd2gat_LwJwOew"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RoVkHnXPEd2gat_LwJwOew" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RoVkH3XPEd2gat_LwJwOew"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_SC286XXPEd2gat_LwJwOew" name="Association2" memberEnd="_SC286nXPEd2gat_LwJwOew _SC287XXPEd2gat_LwJwOew" navigableOwnedEnd="_SC286nXPEd2gat_LwJwOew _SC287XXPEd2gat_LwJwOew"> + <ownedEnd xmi:id="_SC286nXPEd2gat_LwJwOew" name="contentDefinition" type="_--aR4HTZEd20yqJGyRKhKA" association="_SC286XXPEd2gat_LwJwOew"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SC2863XPEd2gat_LwJwOew" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SC287HXPEd2gat_LwJwOew" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_SC287XXPEd2gat_LwJwOew" name="attributeDefinitions" type="_KYKiGHXPEd2gat_LwJwOew" isOrdered="true" aggregation="shared" association="_SC286XXPEd2gat_LwJwOew"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SC287nXPEd2gat_LwJwOew" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SC2873XPEd2gat_LwJwOew"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_ShjrGXXPEd2gat_LwJwOew" name="Association3" memberEnd="_ShjrGnXPEd2gat_LwJwOew _ShjrHXXPEd2gat_LwJwOew" navigableOwnedEnd="_ShjrGnXPEd2gat_LwJwOew"> + <ownedEnd xmi:id="_ShjrGnXPEd2gat_LwJwOew" name="definition" type="_KYKiGHXPEd2gat_LwJwOew" isUnique="false" association="_ShjrGXXPEd2gat_LwJwOew"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ShjrG3XPEd2gat_LwJwOew" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ShjrHHXPEd2gat_LwJwOew" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_ShjrHXXPEd2gat_LwJwOew" name="" type="_O3Kc-HXPEd2gat_LwJwOew" isUnique="false" association="_ShjrGXXPEd2gat_LwJwOew"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ShjrHnXPEd2gat_LwJwOew" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ShjrH3XPEd2gat_LwJwOew"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_tqu32HXPEd2gat_LwJwOew" name="Association4" memberEnd="_tqu32XXPEd2gat_LwJwOew _tqu33HXPEd2gat_LwJwOew" navigableOwnedEnd="_tqu33HXPEd2gat_LwJwOew _tqu32XXPEd2gat_LwJwOew"> + <ownedEnd xmi:id="_tqu32XXPEd2gat_LwJwOew" name="content" type="_NcHbSHXPEd2gat_LwJwOew" association="_tqu32HXPEd2gat_LwJwOew"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tqu32nXPEd2gat_LwJwOew" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tqu323XPEd2gat_LwJwOew" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_tqu33HXPEd2gat_LwJwOew" name="attributes" type="_O3Kc-HXPEd2gat_LwJwOew" isOrdered="true" isUnique="false" aggregation="shared" association="_tqu32HXPEd2gat_LwJwOew"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tqu33XXPEd2gat_LwJwOew" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tqu33nXPEd2gat_LwJwOew"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_IVEMeHXQEd2gat_LwJwOew" name="SimpleStringAttribute" clientDependency="_WnlaY3XREd2gat_LwJwOew"> + <generalization xmi:id="_CdB95HXXEd2XodZQ_XQIpQ" general="_O3Kc-HXPEd2gat_LwJwOew"/> + <ownedAttribute xmi:id="_kWQCcnXUEd2XodZQ_XQIpQ" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_mOq5eHXQEd2gat_LwJwOew" name="ClosedListAttribute" clientDependency="_Xqoy03XREd2gat_LwJwOew"> + <generalization xmi:id="_C_mfc3XXEd2XodZQ_XQIpQ" general="_O3Kc-HXPEd2gat_LwJwOew"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_WnlaY3XREd2gat_LwJwOew" name="Dependency1" client="_IVEMeHXQEd2gat_LwJwOew"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_XRJ703XREd2gat_LwJwOew" name="Dependency2" client="_i__W-HXQEd2gat_LwJwOew"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Xqoy03XREd2gat_LwJwOew" name="Dependency3" client="_mOq5eHXQEd2gat_LwJwOew"/> + <packagedElement xmi:type="uml:Class" xmi:id="_Bq1oyHXTEd2XodZQ_XQIpQ" name="ListItem"> + <ownedAttribute xmi:id="_rq4tsnXUEd2XodZQ_XQIpQ" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_WdyWeHXXEd2XodZQ_XQIpQ" name="TextAttribute"> + <generalization xmi:id="_jfpqRHXXEd2XodZQ_XQIpQ" general="_O3Kc-HXPEd2gat_LwJwOew"/> + <ownedAttribute xmi:id="_dEiA8nXXEd2XodZQ_XQIpQ" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_vF4GiHXXEd2XodZQ_XQIpQ" name="FloatAttribute"> + <generalization xmi:id="_A50pRHXYEd2XodZQ_XQIpQ" general="_O3Kc-HXPEd2gat_LwJwOew"/> + <ownedAttribute xmi:id="_yVv70nXXEd2XodZQ_XQIpQ" name="value" type="_70rUaHXXEd2XodZQ_XQIpQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_i__W-HXQEd2gat_LwJwOew" name="IntegerAttribute" clientDependency="_XRJ703XREd2gat_LwJwOew"> + <generalization xmi:id="_CudsJHXXEd2XodZQ_XQIpQ" general="_O3Kc-HXPEd2gat_LwJwOew"/> + <ownedAttribute xmi:id="_xnw70nXUEd2XodZQ_XQIpQ" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_l2fJWHXYEd2XodZQ_XQIpQ" name="MultimediaAttribute"> + <generalization xmi:id="_3zEDpHXYEd2XodZQ_XQIpQ" general="_O3Kc-HXPEd2gat_LwJwOew"/> + <ownedAttribute xmi:id="_x8TEknXYEd2XodZQ_XQIpQ" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_9F6dWHXYEd2XodZQ_XQIpQ" name="MultipleChoiceClosedListAttribute"> + <generalization xmi:id="_kK9-g3XfEd2XodZQ_XQIpQ" general="_mOq5eHXQEd2gat_LwJwOew"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_sRfBYHXZEd2XodZQ_XQIpQ" name="XhtmlAttribute"> + <generalization xmi:id="_CQJ4JHXaEd2XodZQ_XQIpQ" general="_O3Kc-HXPEd2gat_LwJwOew"/> + <ownedAttribute xmi:id="_uhlbwnXZEd2XodZQ_XQIpQ" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_RuhOKHXbEd2XodZQ_XQIpQ" name="ClosedList"> + <generalization xmi:id="_sPBRU3XbEd2XodZQ_XQIpQ" general="_KYKiGHXPEd2gat_LwJwOew"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_bxNbGnXbEd2XodZQ_XQIpQ" name="Association5" memberEnd="_bxNbG3XbEd2XodZQ_XQIpQ _bxNbHnXbEd2XodZQ_XQIpQ" navigableOwnedEnd="_bxNbHnXbEd2XodZQ_XQIpQ _bxNbG3XbEd2XodZQ_XQIpQ"> + <ownedEnd xmi:id="_bxNbG3XbEd2XodZQ_XQIpQ" name="closedList" type="_RuhOKHXbEd2XodZQ_XQIpQ" association="_bxNbGnXbEd2XodZQ_XQIpQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bxNbHHXbEd2XodZQ_XQIpQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bxNbHXXbEd2XodZQ_XQIpQ" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_bxNbHnXbEd2XodZQ_XQIpQ" name="items" type="_Bq1oyHXTEd2XodZQ_XQIpQ" isOrdered="true" aggregation="shared" association="_bxNbGnXbEd2XodZQ_XQIpQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bxNbH3XbEd2XodZQ_XQIpQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bxNbIHXbEd2XodZQ_XQIpQ"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_Hn2DqHXcEd2XodZQ_XQIpQ" name="Association6" memberEnd="_Hn2DqXXcEd2XodZQ_XQIpQ _Hn2DrHXcEd2XodZQ_XQIpQ" navigableOwnedEnd="_Hn2DrHXcEd2XodZQ_XQIpQ"> + <ownedEnd xmi:id="_Hn2DqXXcEd2XodZQ_XQIpQ" name="list" type="_cKqgGHXfEd2XodZQ_XQIpQ" isUnique="false" association="_Hn2DqHXcEd2XodZQ_XQIpQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Hn2DqnXcEd2XodZQ_XQIpQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Hn2Dq3XcEd2XodZQ_XQIpQ"/> + </ownedEnd> + <ownedEnd xmi:id="_Hn2DrHXcEd2XodZQ_XQIpQ" name="choice" type="_Bq1oyHXTEd2XodZQ_XQIpQ" isUnique="false" aggregation="shared" association="_Hn2DqHXcEd2XodZQ_XQIpQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Hn2DrXXcEd2XodZQ_XQIpQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Hn2DrnXcEd2XodZQ_XQIpQ"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_XCS_eHXcEd2XodZQ_XQIpQ" name="Association7" memberEnd="_XCS_eXXcEd2XodZQ_XQIpQ _XCS_fHXcEd2XodZQ_XQIpQ" navigableOwnedEnd="_XCS_fHXcEd2XodZQ_XQIpQ"> + <ownedEnd xmi:id="_XCS_eXXcEd2XodZQ_XQIpQ" name="list" type="_9F6dWHXYEd2XodZQ_XQIpQ" isUnique="false" association="_XCS_eHXcEd2XodZQ_XQIpQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XCS_enXcEd2XodZQ_XQIpQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XCS_e3XcEd2XodZQ_XQIpQ"/> + </ownedEnd> + <ownedEnd xmi:id="_XCS_fHXcEd2XodZQ_XQIpQ" name="choices" type="_Bq1oyHXTEd2XodZQ_XQIpQ" isUnique="false" aggregation="shared" association="_XCS_eHXcEd2XodZQ_XQIpQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XCS_fXXcEd2XodZQ_XQIpQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XCS_fnXcEd2XodZQ_XQIpQ"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_cKqgGHXfEd2XodZQ_XQIpQ" name="SimpleChoiceClosedListAttribute"> + <generalization xmi:id="_kkAJk3XfEd2XodZQ_XQIpQ" general="_mOq5eHXQEd2gat_LwJwOew"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_OoJh0HXVEd2XodZQ_XQIpQ" name="AttributeType"> + <ownedLiteral xmi:id="_OTJI4nXaEd2XodZQ_XQIpQ" name="SIMPLE_STRING"/> + <ownedLiteral xmi:id="_QeeYAHXaEd2XodZQ_XQIpQ" name="TEXT"/> + <ownedLiteral xmi:id="_TT9-cnXaEd2XodZQ_XQIpQ" name="MULTIMEDIA"/> + <ownedLiteral xmi:id="_UnjtQnXaEd2XodZQ_XQIpQ" name="FLOAT"/> + <ownedLiteral xmi:id="_XHc3InXaEd2XodZQ_XQIpQ" name="INTEGER"/> + <ownedLiteral xmi:id="_e5J44nXaEd2XodZQ_XQIpQ" name="XHTML"/> + <ownedLiteral xmi:id="_fmTSwnXaEd2XodZQ_XQIpQ" name="SIMPLE_CHOICE_CLOSED_LIST"/> + <ownedLiteral xmi:id="_hPzAInXaEd2XodZQ_XQIpQ" name="MULTIPLE_CHOICE_CLOSED_LIST"/> + <ownedLiteral xmi:id="_QFHfYH2GEd2PvufzAfDQGg" name="DATE"/> + <ownedLiteral xmi:id="_6n6QQD-_Ed6_O_u-D-Y8sg" name="CONTENT_DEF"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_qIx38HtJEd2br5ngUa3Ghw" name="DateAttribute"> + <generalization xmi:id="_0BkiA3tJEd2br5ngUa3Ghw" general="_O3Kc-HXPEd2gat_LwJwOew"/> + <ownedAttribute xmi:id="_rnLvoHtJEd2br5ngUa3Ghw" name="value"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_8wC-AKGpEd2ENuCUfYNU7A" name="SetOfContentsEntity"> + <ownedAttribute xmi:id="_JTYbYKGtEd2ENuCUfYNU7A" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_K021MKGtEd2ENuCUfYNU7A" name="description"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_WoIrcKaOEd2G__lOTDfUPw" name="containedContentsCount"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_Z3T9OKGsEd2ENuCUfYNU7A" name="Association8" memberEnd="_Z3T9OaGsEd2ENuCUfYNU7A _Z3T9PKGsEd2ENuCUfYNU7A" navigableOwnedEnd="_Z3T9PKGsEd2ENuCUfYNU7A"> + <ownedEnd xmi:id="_Z3T9OaGsEd2ENuCUfYNU7A" name="" type="_8wC-AKGpEd2ENuCUfYNU7A" isUnique="false" association="_Z3T9OKGsEd2ENuCUfYNU7A"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Z3T9OqGsEd2ENuCUfYNU7A" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Z3T9O6GsEd2ENuCUfYNU7A"/> + </ownedEnd> + <ownedEnd xmi:id="_Z3T9PKGsEd2ENuCUfYNU7A" name="contents" type="_NcHbSHXPEd2gat_LwJwOew" association="_Z3T9OKGsEd2ENuCUfYNU7A"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Z3T9PaGsEd2ENuCUfYNU7A" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Z3T9PqGsEd2ENuCUfYNU7A"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_YRqcafbPEd2So46ZaKFSQw" name="Association9" memberEnd="_YRqcavbPEd2So46ZaKFSQw _YRqcbfbPEd2So46ZaKFSQw" navigableOwnedEnd="_YRqcbfbPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_YRqcavbPEd2So46ZaKFSQw" name="source" type="_--aR4HTZEd20yqJGyRKhKA" association="_YRqcafbPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YRqca_bPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YRqcbPbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_YRqcbfbPEd2So46ZaKFSQw" name="target" association="_YRqcafbPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YRqcbvbPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YRqcb_bPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_Yox76vbPEd2So46ZaKFSQw" name="Association10" memberEnd="_Yox76_bPEd2So46ZaKFSQw _Yox77vbPEd2So46ZaKFSQw" navigableOwnedEnd="_Yox77vbPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_Yox76_bPEd2So46ZaKFSQw" name="source" type="_KYKiGHXPEd2gat_LwJwOew" association="_Yox76vbPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Yox77PbPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yox77fbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_Yox77vbPEd2So46ZaKFSQw" name="target" association="_Yox76vbPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Yox77_bPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yox78PbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_ZFY_avbPEd2So46ZaKFSQw" name="Association11" memberEnd="_ZFY_a_bPEd2So46ZaKFSQw _ZFY_bvbPEd2So46ZaKFSQw" navigableOwnedEnd="_ZFY_bvbPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_ZFY_a_bPEd2So46ZaKFSQw" name="source" type="_O3Kc-HXPEd2gat_LwJwOew" association="_ZFY_avbPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZFY_bPbPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZFY_bfbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_ZFY_bvbPEd2So46ZaKFSQw" name="target" association="_ZFY_avbPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZFY_b_bPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZFY_cPbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_ZeZ8WvbPEd2So46ZaKFSQw" name="Association12" memberEnd="_ZeZ8W_bPEd2So46ZaKFSQw _ZeZ8XvbPEd2So46ZaKFSQw" navigableOwnedEnd="_ZeZ8XvbPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_ZeZ8W_bPEd2So46ZaKFSQw" name="source" type="_NcHbSHXPEd2gat_LwJwOew" association="_ZeZ8WvbPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZeZ8XPbPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZeZ8XfbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_ZeZ8XvbPEd2So46ZaKFSQw" name="target" association="_ZeZ8WvbPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZeZ8X_bPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZeZ8YPbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_bMCi2vbPEd2So46ZaKFSQw" name="Association15" memberEnd="_bMCi2_bPEd2So46ZaKFSQw _bMCi3vbPEd2So46ZaKFSQw" navigableOwnedEnd="_bMCi3vbPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_bMCi2_bPEd2So46ZaKFSQw" name="source" type="_--aR4HTZEd20yqJGyRKhKA" association="_bMCi2vbPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bMCi3PbPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bMCi3fbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_bMCi3vbPEd2So46ZaKFSQw" name="target" association="_bMCi2vbPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bMCi3_bPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bMCi4PbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_bpabWvbPEd2So46ZaKFSQw" name="Association16" memberEnd="_bpabW_bPEd2So46ZaKFSQw _bpabXvbPEd2So46ZaKFSQw" navigableOwnedEnd="_bpabXvbPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_bpabW_bPEd2So46ZaKFSQw" name="source" type="_NcHbSHXPEd2gat_LwJwOew" association="_bpabWvbPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bpabXPbPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bpabXfbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_bpabXvbPEd2So46ZaKFSQw" name="target" association="_bpabWvbPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bpabX_bPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bpabYPbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_cIsYWvbPEd2So46ZaKFSQw" name="Association17" memberEnd="_cIsYW_bPEd2So46ZaKFSQw _cIsYXvbPEd2So46ZaKFSQw" navigableOwnedEnd="_cIsYXvbPEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_cIsYW_bPEd2So46ZaKFSQw" name="source" type="_8wC-AKGpEd2ENuCUfYNU7A" association="_cIsYWvbPEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cIsYXPbPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cIsYXfbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_cIsYXvbPEd2So46ZaKFSQw" name="target" association="_cIsYWvbPEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cIsYX_bPEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cIsYYPbPEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_CQag2vbREd2So46ZaKFSQw" name="Association14" memberEnd="_CQag2_bREd2So46ZaKFSQw _CQag3vbREd2So46ZaKFSQw" navigableOwnedEnd="_CQag3vbREd2So46ZaKFSQw"> + <ownedEnd xmi:id="_CQag2_bREd2So46ZaKFSQw" name="source" type="_8wC-AKGpEd2ENuCUfYNU7A" association="_CQag2vbREd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CQag3PbREd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CQag3fbREd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_CQag3vbREd2So46ZaKFSQw" name="target" association="_CQag2vbREd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CQag3_bREd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CQag4PbREd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_wFp6GPhQEd2Hu-BP-VasxQ" name="TempNodesIds"> + <ownedAttribute xmi:id="_zGB60PhQEd2Hu-BP-VasxQ" name="technicalId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_1UogYvhQEd2Hu-BP-VasxQ" name="externalId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_79nmmPhQEd2Hu-BP-VasxQ" name="TempNodeContents"> + <ownedAttribute xmi:id="_CUtrgvhREd2Hu-BP-VasxQ" name="technicalNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_GC1jEvhREd2Hu-BP-VasxQ" name="technicalContentId" type="_ddB9cIViEd2N0bQZBk24XA" isUnique="false"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_J6nwKfhVEd2du7_XCS7v_A" name="Association13" memberEnd="_J6nwKvhVEd2du7_XCS7v_A _J6nwLfhVEd2du7_XCS7v_A" navigableOwnedEnd="_J6nwLfhVEd2du7_XCS7v_A"> + <ownedEnd xmi:id="_J6nwKvhVEd2du7_XCS7v_A" name="source" type="_Bq1oyHXTEd2XodZQ_XQIpQ" association="_J6nwKfhVEd2du7_XCS7v_A"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J6nwK_hVEd2du7_XCS7v_A" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J6nwLPhVEd2du7_XCS7v_A" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_J6nwLfhVEd2du7_XCS7v_A" name="target" association="_J6nwKfhVEd2du7_XCS7v_A"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J6nwLvhVEd2du7_XCS7v_A" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J6nwL_hVEd2du7_XCS7v_A" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_g3AcsP9CEd2Qm_QM6AOnsQ" name="ReferentialEntity"> + <ownedAttribute xmi:id="_s3QigP9CEd2Qm_QM6AOnsQ" name="source"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_uL5aMv9CEd2Qm_QM6AOnsQ" name="date"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_uvZI0v9CEd2Qm_QM6AOnsQ" name="nbProducts"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_r7qc-P9CEd2Qm_QM6AOnsQ" name="importedDataToNomenclatureEntity" memberEnd="_r7qc-f9CEd2Qm_QM6AOnsQ _r7qc_P9CEd2Qm_QM6AOnsQ" navigableOwnedEnd="_r7qc_P9CEd2Qm_QM6AOnsQ"> + <ownedEnd xmi:id="_r7qc-f9CEd2Qm_QM6AOnsQ" name="referential" type="_g3AcsP9CEd2Qm_QM6AOnsQ" association="_r7qc-P9CEd2Qm_QM6AOnsQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r7qc-v9CEd2Qm_QM6AOnsQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r7qc-_9CEd2Qm_QM6AOnsQ" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_r7qc_P9CEd2Qm_QM6AOnsQ" name="nomenclature" association="_r7qc-P9CEd2Qm_QM6AOnsQ"> + <type xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_2IP1oKUBEd2nLbvCg8hnUg"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r7qc_f9CEd2Qm_QM6AOnsQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r7qc_v9CEd2Qm_QM6AOnsQ" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_t3SJkA4_Ed6KQuvMUCD2yg" name="facet"> + <ownedComment xmi:id="_kjUToD4-Ed6us98SLDIclA" annotatedElement="__T4G0A5AEd6KQuvMUCD2yg"> + <body>Hierarchical topic is not here, because generator is not available</body> + </ownedComment> + <packagedElement xmi:type="uml:Class" xmi:id="_GyHPcA5AEd6KQuvMUCD2yg" name="FacetView"> + <ownedAttribute xmi:id="_NHljwA5AEd6KQuvMUCD2yg" name="name" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_Vpjk0A5AEd6KQuvMUCD2yg" name="FacetViewChain"/> + <packagedElement xmi:type="uml:Association" xmi:id="_fqh6gg5AEd6KQuvMUCD2yg" name="Association1" memberEnd="_fqh6gw5AEd6KQuvMUCD2yg _fqh6hg5AEd6KQuvMUCD2yg" navigableOwnedEnd="_fqh6hg5AEd6KQuvMUCD2yg"> + <ownedEnd xmi:id="_fqh6gw5AEd6KQuvMUCD2yg" name="view" type="_GyHPcA5AEd6KQuvMUCD2yg" association="_fqh6gg5AEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fqh6hA5AEd6KQuvMUCD2yg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fqh6hQ5AEd6KQuvMUCD2yg" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_fqh6hg5AEd6KQuvMUCD2yg" name="chains" type="_Vpjk0A5AEd6KQuvMUCD2yg" isOrdered="true" isUnique="false" association="_fqh6gg5AEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fqh6hw5AEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fqh6iA5AEd6KQuvMUCD2yg"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_l5XbUA5AEd6KQuvMUCD2yg" name="Facet"> + <ownedAttribute xmi:id="_oFvMQg5AEd6KQuvMUCD2yg" name="name" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_w3q7-g5AEd6KQuvMUCD2yg" name="Association2" memberEnd="_w3q7-w5AEd6KQuvMUCD2yg _w3q7_g5AEd6KQuvMUCD2yg" navigableOwnedEnd="_w3q7_g5AEd6KQuvMUCD2yg"> + <ownedEnd xmi:id="_w3q7-w5AEd6KQuvMUCD2yg" name="chain" type="_Vpjk0A5AEd6KQuvMUCD2yg" isUnique="false" association="_w3q7-g5AEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w3q7_A5AEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w3q7_Q5AEd6KQuvMUCD2yg"/> + </ownedEnd> + <ownedEnd xmi:id="_w3q7_g5AEd6KQuvMUCD2yg" name="facets" visibility="public" type="_l5XbUA5AEd6KQuvMUCD2yg" isOrdered="true" isUnique="false" association="_w3q7-g5AEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w3q7_w5AEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w3q8AA5AEd6KQuvMUCD2yg"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="__T4G0A5AEd6KQuvMUCD2yg" name="Topic"> + <ownedAttribute xmi:id="_CDpfwg5BEd6KQuvMUCD2yg" name="value" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_G4AHYC2BEd6R-vHwJRLroA" name="request" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_Hax8gA5BEd6KQuvMUCD2yg" name="Association3" memberEnd="_Hax8gQ5BEd6KQuvMUCD2yg _Hax8hA5BEd6KQuvMUCD2yg" navigableOwnedEnd="_Hax8gQ5BEd6KQuvMUCD2yg _Hax8hA5BEd6KQuvMUCD2yg"> + <ownedEnd xmi:id="_Hax8gQ5BEd6KQuvMUCD2yg" name="facet" visibility="public" type="_l5XbUA5AEd6KQuvMUCD2yg" isUnique="false" association="_Hax8gA5BEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Hax8gg5BEd6KQuvMUCD2yg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Hax8gw5BEd6KQuvMUCD2yg"/> + </ownedEnd> + <ownedEnd xmi:id="_Hax8hA5BEd6KQuvMUCD2yg" name="topics" type="__T4G0A5AEd6KQuvMUCD2yg" isOrdered="true" isUnique="false" aggregation="shared" association="_Hax8gA5BEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Hax8hQ5BEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Hax8hg5BEd6KQuvMUCD2yg"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_mM_sgA5BEd6KQuvMUCD2yg" name="Association4" memberEnd="_mM_sgQ5BEd6KQuvMUCD2yg _mM_shA5BEd6KQuvMUCD2yg" navigableOwnedEnd="_mM_shA5BEd6KQuvMUCD2yg"> + <ownedEnd xmi:id="_mM_sgQ5BEd6KQuvMUCD2yg" name="topic" type="__T4G0A5AEd6KQuvMUCD2yg" isUnique="false" association="_mM_sgA5BEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mM_sgg5BEd6KQuvMUCD2yg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mM_sgw5BEd6KQuvMUCD2yg" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_mM_shA5BEd6KQuvMUCD2yg" name="contents" type="_NcHbSHXPEd2gat_LwJwOew" isUnique="false" association="_mM_sgA5BEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mM_shQ5BEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mM_shg5BEd6KQuvMUCD2yg"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_xntcUA5BEd6KQuvMUCD2yg" name="TopicRule"> + <ownedAttribute xmi:id="_1GU4Qg5BEd6KQuvMUCD2yg" name="request" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_2bwJkkuLEd6vPPc7KDt3WQ" name="number" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_dSphsEuMEd6vPPc7KDt3WQ" name="lastUser" visibility="protected"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_xHoIEkuMEd6vPPc7KDt3WQ" name="creationDate" visibility="protected"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_NEgpsEuNEd6vPPc7KDt3WQ" name="lastUsedDate" visibility="protected"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_HWc9oE6hEd6NiYsm9_1_qQ" name="lastModificationDate" visibility="protected"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_6WqJeg5BEd6KQuvMUCD2yg" name="Association5" memberEnd="_6WqJew5BEd6KQuvMUCD2yg _6WqJfg5BEd6KQuvMUCD2yg" navigableOwnedEnd="_6WqJew5BEd6KQuvMUCD2yg"> + <ownedEnd xmi:id="_6WqJew5BEd6KQuvMUCD2yg" name="rule" visibility="public" type="_xntcUA5BEd6KQuvMUCD2yg" isUnique="false" association="_6WqJeg5BEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6WqJfA5BEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6WqJfQ5BEd6KQuvMUCD2yg"/> + </ownedEnd> + <ownedEnd xmi:id="_6WqJfg5BEd6KQuvMUCD2yg" name="topics" type="__T4G0A5AEd6KQuvMUCD2yg" isUnique="false" association="_6WqJeg5BEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6WqJfw5BEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6WqJgA5BEd6KQuvMUCD2yg"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_IE8AUCsrEd6tjYAzTLw2Cw" name="Association6" memberEnd="_IE8AUSsrEd6tjYAzTLw2Cw _IE8AVCsrEd6tjYAzTLw2Cw" navigableOwnedEnd="_IE8AVCsrEd6tjYAzTLw2Cw"> + <ownedEnd xmi:id="_IE8AUSsrEd6tjYAzTLw2Cw" name="facet" type="_l5XbUA5AEd6KQuvMUCD2yg" association="_IE8AUCsrEd6tjYAzTLw2Cw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IE8AUisrEd6tjYAzTLw2Cw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IE8AUysrEd6tjYAzTLw2Cw"/> + </ownedEnd> + <ownedEnd xmi:id="_IE8AVCsrEd6tjYAzTLw2Cw" name="content" type="_NcHbSHXPEd2gat_LwJwOew" association="_IE8AUCsrEd6tjYAzTLw2Cw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IE8AVSsrEd6tjYAzTLw2Cw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IE8AVisrEd6tjYAzTLw2Cw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_0uC8yCstEd6tjYAzTLw2Cw" name="Association7" memberEnd="_0uC8ySstEd6tjYAzTLw2Cw _0uC8zCstEd6tjYAzTLw2Cw" navigableOwnedEnd="_0uC8zCstEd6tjYAzTLw2Cw"> + <ownedEnd xmi:id="_0uC8ySstEd6tjYAzTLw2Cw" name="view" type="_GyHPcA5AEd6KQuvMUCD2yg" isUnique="false" association="_0uC8yCstEd6tjYAzTLw2Cw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0uC8yistEd6tjYAzTLw2Cw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0uC8yystEd6tjYAzTLw2Cw"/> + </ownedEnd> + <ownedEnd xmi:id="_0uC8zCstEd6tjYAzTLw2Cw" name="topic" type="__T4G0A5AEd6KQuvMUCD2yg" association="_0uC8yCstEd6tjYAzTLw2Cw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0uC8zSstEd6tjYAzTLw2Cw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0uC8zistEd6tjYAzTLw2Cw"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_oVdEsC14Ed6R-vHwJRLroA" name="Association8" memberEnd="_oVdEsS14Ed6R-vHwJRLroA _oVdEtC14Ed6R-vHwJRLroA" navigableOwnedEnd="_oVdEtC14Ed6R-vHwJRLroA"> + <ownedEnd xmi:id="_oVdEsS14Ed6R-vHwJRLroA" name="facet" type="_l5XbUA5AEd6KQuvMUCD2yg" association="_oVdEsC14Ed6R-vHwJRLroA"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oVdEsi14Ed6R-vHwJRLroA" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oVdEsy14Ed6R-vHwJRLroA"/> + </ownedEnd> + <ownedEnd xmi:id="_oVdEtC14Ed6R-vHwJRLroA" name="segmentation" type="_KYKiGHXPEd2gat_LwJwOew" association="_oVdEsC14Ed6R-vHwJRLroA"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oVdEtS14Ed6R-vHwJRLroA" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oVdEti14Ed6R-vHwJRLroA" value="1"/> + </ownedEnd> + </packagedElement> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_CjQXeg5CEd6KQuvMUCD2yg" name="Association19" memberEnd="_CjQXew5CEd6KQuvMUCD2yg _CjQXfg5CEd6KQuvMUCD2yg" navigableOwnedEnd="_CjQXfg5CEd6KQuvMUCD2yg"> + <ownedEnd xmi:id="_CjQXew5CEd6KQuvMUCD2yg" name="contents" type="_NcHbSHXPEd2gat_LwJwOew" isUnique="false" association="_CjQXeg5CEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CjQXfA5CEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CjQXfQ5CEd6KQuvMUCD2yg"/> + </ownedEnd> + <ownedEnd xmi:id="_CjQXfg5CEd6KQuvMUCD2yg" name="topics" type="__T4G0A5AEd6KQuvMUCD2yg" isUnique="false" association="_CjQXeg5CEd6KQuvMUCD2yg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CjQXfw5CEd6KQuvMUCD2yg" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CjQXgA5CEd6KQuvMUCD2yg"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_bj2s4D_AEd6_O_u-D-Y8sg" name="ContentDefAttribute"> + <generalization xmi:id="_kbNvID_AEd6_O_u-D-Y8sg" general="_O3Kc-HXPEd2gat_LwJwOew"/> + <ownedAttribute xmi:id="_fa86QD_AEd6_O_u-D-Y8sg" name="value" type="_NcHbSHXPEd2gat_LwJwOew"/> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_wmvQ0D_AEd6_O_u-D-Y8sg" name="Association18" memberEnd="_wmvQ0T_AEd6_O_u-D-Y8sg _wmv34T_AEd6_O_u-D-Y8sg" navigableOwnedEnd="_wmvQ0T_AEd6_O_u-D-Y8sg"> + <ownedEnd xmi:id="_wmvQ0T_AEd6_O_u-D-Y8sg" name="definition" type="_NcHbSHXPEd2gat_LwJwOew" isUnique="false" association="_wmvQ0D_AEd6_O_u-D-Y8sg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wmvQ0j_AEd6_O_u-D-Y8sg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wmv34D_AEd6_O_u-D-Y8sg"/> + </ownedEnd> + <ownedEnd xmi:id="_wmv34T_AEd6_O_u-D-Y8sg" name="" type="_--aR4HTZEd20yqJGyRKhKA" isUnique="false" association="_wmvQ0D_AEd6_O_u-D-Y8sg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wmv34j_AEd6_O_u-D-Y8sg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wmv34z_AEd6_O_u-D-Y8sg" value="1"/> + </ownedEnd> + </packagedElement> + <profileApplication xmi:id="_NQyVgPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_NQy8kPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_Uw46WHXYEd2XodZQ_XQIpQ" name="byte[]"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_70rUaHXXEd2XodZQ_XQIpQ" name="Double"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_SFAOkHWmEd2gat_LwJwOew" name="List<ContentDefHeader>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_ZytvEHhBEd2X9uNQyI_qHw" name="List<AttributeDef>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_LwOsgHjVEd2XX6MpUtjnfg" name="PagedResult<ContentEntity>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_6knTGHjqEd2MH8DN-NMNrA" name="List<AttributeDefinition>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_IB7mQHkLEd2Atp1vvmnWrA" name="List<Item>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_qGleoHqQEd2L-b3UA1-28A" name="Map<String, Serializable>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_o1-dkIVgEd2N0bQZBk24XA" name="String[]"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_ddB9cIViEd2N0bQZBk24XA" name="List<String>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_fNJKwIYTEd2FDsNjNrtp7Q" name="List<ContentEntity>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_8ZIyEJOAEd2PpNHrflS_6A" name="List<Attribute>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_G8ZTMJuJEd2hhejVV_1tQg" name="PagedResult<ContentHeader>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_gu1EEKGrEd2ENuCUfYNU7A" name="PagedResult<SetOfContentsEntity>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_wjKoGKQzEd2GAYp1IpBaGw" name="PagedResult<SetOfContents>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_WH5fYKTREd2FhPzHNqBWcg" name="Dependency1" supplier="_F-eccKGqEd2ENuCUfYNU7A" client="_s08WwKGqEd2ENuCUfYNU7A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_WQgo06TREd2FhPzHNqBWcg" name="Dependency2" supplier="_8wC-AKGpEd2ENuCUfYNU7A" client="_s08WwKGqEd2ENuCUfYNU7A"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_nOLcQKXAEd2BUJWkFP_TZQ" name="List<Content>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_XzNfcLTcEd252vzLZ9nqrQ" name="PagedResult<ContentDefinition>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_n5F84LTnEd252vzLZ9nqrQ" name="PagedResult<ContentDefHeader>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_BdoPcN5bEd2Q5-9ABN1uxA" name="OutputStream"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_fT8r0-C0Ed2_mrdRrPOl2g" name="Dependency3" supplier="_3ac7wHTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_sIzIBOFcEd2Q5-9ABN1uxA" name="Dependency4" supplier="_iO1pkHi_Ed2oZoPbWJIMHg"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_1lQ10OI1Ed2Ft61T9l4BYg" name="Iterable<ContentEntity>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_B2IVE-I3Ed2Ft61T9l4BYg" name="Dependency5" supplier="_dSGT8KGqEd2ENuCUfYNU7A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_KJYksOI3Ed2Ft61T9l4BYg" name="Dependency6" supplier="_3ac7wHTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_WGw_4-I7Ed2T1_-09lWd5Q" name="Dependency7"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_ndJqY-LfEd2Ft61T9l4BYg" name="Dependency8" client="_YAvggLo_Ed29K_Ps1iXPuQ"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_T4D3QOPpEd2zfYSdqx49HA" name="Exception"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_j-fvUOPpEd2zfYSdqx49HA" name="HttpServletRequest"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_me7rwOPpEd2zfYSdqx49HA" name="HttpServletResponse"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_QdPrU-PrEd2zfYSdqx49HA" name="Dependency9"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="__DnmU-YJEd2J1PltzDe2qg" name="Dependency10" supplier="_yvPJ2HTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_VRMbwOYKEd2J1PltzDe2qg" name="InputStream"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_G83CYOiaEd25AsNl_TBRDQ" name="Dependency11" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_MvnEI-iaEd25AsNl_TBRDQ" name="Dependency12" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Z76GVOiaEd25AsNl_TBRDQ" name="Dependency13" supplier="_s08WwKGqEd2ENuCUfYNU7A" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_h1gf0-iaEd25AsNl_TBRDQ" name="Dependency14" supplier="_YAvggLo_Ed29K_Ps1iXPuQ" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Jy7_w-krEd2VcLeORko10g" name="Dependency15" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_x1MNMOkqEd2VcLeORko10g"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_yWuXg-krEd2VcLeORko10g" name="Dependency16" client="_x1MNMOkqEd2VcLeORko10g"> + <supplier xmi:type="uml:Class" href="conception-helper.uml#_SoCyYNcbEd2J-62N77cHzg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_y3MAQ-krEd2VcLeORko10g" name="Dependency17" client="_x1MNMOkqEd2VcLeORko10g"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_6iGEM-kwEd2w6L86tbByuw" name="Dependency18" client="_x1MNMOkqEd2VcLeORko10g"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_O_lio-leEd2w6L86tbByuw" name="Dependency19" client="_yvPJ2HTaEd20yqJGyRKhKA"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_PckZkOleEd2w6L86tbByuw" name="Dependency20" client="_Ugb_4Hi_Ed2oZoPbWJIMHg"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_ugQAw-uSEd2nbcXqLzlhyA" name="Dependency21" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_e3MN8-uiEd2w6L86tbByuw" name="Dependency22" supplier="_zAlIsHggEd2Vxr2aiClL8g" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_yGzKsOvUEd2y9MAFkymhaQ" name="Dependency23" supplier="_iO1pkHi_Ed2oZoPbWJIMHg" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_0V7Us-vUEd2y9MAFkymhaQ" name="Dependency24" supplier="_3ac7wHTaEd20yqJGyRKhKA" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_GDHoYO64Ed2f7NU7M_arnA" name="PagedResult<ContentLink>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_FpAlo-7AEd2vc7ElAwQEXw" name="Dependency25" client="_dMNk0OhrEd25AsNl_TBRDQ"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_uY4mEIr-Ed2zQqb9w4_QNQ"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_q0zzQ-7TEd2vc7ElAwQEXw" name="Dependency26" client="_dMNk0OhrEd25AsNl_TBRDQ"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_iy_1kPEbEd2U9JmEC6FyWg" name="List<LinkWithContentNames>"/> + <packagedElement xmi:type="uml:Package" xmi:id="_cj444vOVEd2JbqIoInRhNw" name="org.sharengo.cms.core.initialization"> + <packagedElement xmi:type="uml:Dependency" xmi:id="_ieuqNPOWEd2JbqIoInRhNw" name="Dependency1"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="__IZq8BJDEd6o-Ots7TkB2A" name="StartupInitializer" clientDependency="_jH14UBJFEd6o-Ots7TkB2A"> + <ownedOperation xmi:id="_HrvlABJEEd6o-Ots7TkB2A" name="onStartup"> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_c4VnwHXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + </packagedElement> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_TJXCtPOWEd2JbqIoInRhNw" name="Dependency31"> + <client xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_t_rloPQqEd2JbqIoInRhNw" name="org.sharengo.cms.core.aspects"> + <packagedElement xmi:type="uml:Class" xmi:id="_t_rlofQqEd2JbqIoInRhNw" name="BeforeNodeDeleteAspect" clientDependency="_Qo3KtPQsEd2JbqIoInRhNw _gKAAg_QwEd22_7AHmZR45g _fT7bsPbDEd2HAbtEgyVO4g"> + <interfaceRealization xmi:id="_fT7bsPbDEd2HAbtEgyVO4g" name="InterfaceRealization1" client="_t_rlofQqEd2JbqIoInRhNw"> + <supplier xmi:type="uml:Interface" href="conception-helper.uml#_5MTPQPbAEd2HAbtEgyVO4g"/> + <contract href="conception-helper.uml#_5MTPQPbAEd2HAbtEgyVO4g"/> + </interfaceRealization> + <ownedOperation xmi:id="_t_rlo_QqEd2JbqIoInRhNw" name="onNodeDelete"> + <ownedParameter xmi:id="_t_rlpPQqEd2JbqIoInRhNw" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_t_rlpfQqEd2JbqIoInRhNw" name="return" isOrdered="true" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t_rlpvQqEd2JbqIoInRhNw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t_rlp_QqEd2JbqIoInRhNw"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_t_rlqPQqEd2JbqIoInRhNw" name="BeforeLinkDeleteAspect" clientDependency="_NJVv0_QsEd2JbqIoInRhNw _Nddls_QsEd2JbqIoInRhNw _t_rluPQqEd2JbqIoInRhNw _feXxI_bDEd2HAbtEgyVO4g"> + <interfaceRealization xmi:id="_feXxI_bDEd2HAbtEgyVO4g" name="InterfaceRealization1" client="_t_rlqPQqEd2JbqIoInRhNw"> + <supplier xmi:type="uml:Interface" href="conception-helper.uml#_5MTPQPbAEd2HAbtEgyVO4g"/> + <contract href="conception-helper.uml#_5MTPQPbAEd2HAbtEgyVO4g"/> + </interfaceRealization> + <ownedOperation xmi:id="_t_rlqvQqEd2JbqIoInRhNw" name="onLinkDelete"> + <ownedParameter xmi:id="_t_rlq_QqEd2JbqIoInRhNw" name="linkId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_t_rlrPQqEd2JbqIoInRhNw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_t_rlsPQqEd2JbqIoInRhNw" name="CompositionInitializer" clientDependency="_UX3zE_QsEd2JbqIoInRhNw"> + <ownedAttribute xmi:id="_t_rlsfQqEd2JbqIoInRhNw" name="linkDefId" visibility="private" isStatic="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_t_rlsvQqEd2JbqIoInRhNw" name="linkDefName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedOperation xmi:id="_t_rls_QqEd2JbqIoInRhNw" name="initializeComposition"> + <eAnnotations xmi:id="_t_rltPQqEd2JbqIoInRhNw" source="http://www.topcased.org/documentation"> + <details xmi:id="_t_rltfQqEd2JbqIoInRhNw" key="documentation" value="This dedicated opearation allow to load or create the dedicated LinkDef on application initialisation. "/> + </eAnnotations> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_c4VnwHXGEd2Ekv686xx4qA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_t_rluPQqEd2JbqIoInRhNw" name="Dependency6" supplier="_t_rlsPQqEd2JbqIoInRhNw" client="_t_rlqPQqEd2JbqIoInRhNw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_NJVv0_QsEd2JbqIoInRhNw" name="Dependency7" supplier="_s08WwKGqEd2ENuCUfYNU7A" client="_t_rlqPQqEd2JbqIoInRhNw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Nddls_QsEd2JbqIoInRhNw" name="Dependency8" client="_t_rlqPQqEd2JbqIoInRhNw"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Qo3KtPQsEd2JbqIoInRhNw" name="Dependency9" client="_t_rlofQqEd2JbqIoInRhNw"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_UX3zE_QsEd2JbqIoInRhNw" name="Dependency10" client="_t_rlsPQqEd2JbqIoInRhNw"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_gKAAg_QwEd22_7AHmZR45g" name="Dependency11" client="_t_rlofQqEd2JbqIoInRhNw"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_0X9nRPQzEd22_7AHmZR45g" name="Dependency27" client="_YPxfsPOSEd2JbqIoInRhNw"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_0gwW4_QzEd22_7AHmZR45g" name="Dependency28" supplier="_s08WwKGqEd2ENuCUfYNU7A" client="_YPxfsPOSEd2JbqIoInRhNw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_0psQc_QzEd22_7AHmZR45g" name="Dependency29" client="_YPxfsPOSEd2JbqIoInRhNw"> + <supplier xmi:type="uml:Class" href="cmsLink.uml#_9FUhAI7-Ed2TZJhzNZ91vg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_RHILgvbTEd2HpdG1FYiBVQ" name="Dependency33"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_W_Rqo_bTEd2HpdG1FYiBVQ" name="Dependency34"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_mQnGsvbTEd2HpdG1FYiBVQ" name="Dependency35"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_mabxEPbTEd2HpdG1FYiBVQ" name="Dependency36"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_EIExVPdmEd2Fr5Df5xrkyw" name="Dependency37" supplier="_YPxfsPOSEd2JbqIoInRhNw" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_HqrVZPdmEd2Fr5Df5xrkyw" name="Dependency38" client="_dMNk0OhrEd25AsNl_TBRDQ"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_fD5BEPdyEd26SJHML9L6aA" name="Dependency39" supplier="_YPxfsPOSEd2JbqIoInRhNw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_dpucNPhOEd2EUscs1VHtew" name="Dependency40" supplier="_yvPJ2HTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_lQlDY_hPEd2EUscs1VHtew" name="Dependency41" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_uF1O9PkiEd2ngN8mqQoDPw" name="Dependency42" supplier="_bxj5WPhREd2Hu-BP-VasxQ" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_uoP_hPkiEd2ngN8mqQoDPw" name="Dependency43" supplier="_hUWziPhREd2Hu-BP-VasxQ" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_8dreQ_kiEd2ngN8mqQoDPw" name="Dependency44" supplier="_pfA7oHm8Ed2ql75AYIhxSA" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_TDTVY_klEd2ngN8mqQoDPw" name="Dependency45" client="_dMNk0OhrEd25AsNl_TBRDQ"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_HLaUUP9aEd2Qm_QM6AOnsQ" name="List<ImportedData>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_HknsQP9fEd25BaYHbAwXwQ" name="Dependency47" supplier="_g3AcsP9CEd2Qm_QM6AOnsQ" client="_poU0cP9aEd25BaYHbAwXwQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_UK96AP9lEd2BCr3614c-tA" name="Dependency48" supplier="_e8X8AP9CEd2Qm_QM6AOnsQ" client="_xswuUP9BEd2Qm_QM6AOnsQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_UyLrAP9lEd2BCr3614c-tA" name="Dependency49" supplier="_g3AcsP9CEd2Qm_QM6AOnsQ" client="_xswuUP9BEd2Qm_QM6AOnsQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_qabwYP9mEd2BCr3614c-tA" name="Dependency46" client="_xswuUP9BEd2Qm_QM6AOnsQ"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Usage" xmi:id="_pCnsEP9qEd2c4u-jA89yIA" name="Usage1" client="_xswuUP9BEd2Qm_QM6AOnsQ"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Usage" xmi:id="_qXDIZP9qEd2c4u-jA89yIA" name="Usage2" supplier="_poU0cP9aEd25BaYHbAwXwQ" client="_xswuUP9BEd2Qm_QM6AOnsQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_gPp7EwGuEd632JysvO87Dg" name="Dependency50" supplier="_xswuUP9BEd2Qm_QM6AOnsQ" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_d6n9JAJNEd64Q-y4tjzcsw" name="Usage3" client="_xswuUP9BEd2Qm_QM6AOnsQ"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_4XqxwwJPEd6NXsEhrbvcFg" name="Dependency30"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_4zNeQwJPEd6NXsEhrbvcFg" name="Dependency32"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_0AMJQwJREd6NXsEhrbvcFg" name="Dependency51" supplier="_YAvggLo_Ed29K_Ps1iXPuQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_jkLsAwJgEd6NXsEhrbvcFg" name="Dependency52"> + <supplier xmi:type="uml:Class" href="org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_KT-c8AJpEd6BOa-ng0LLhw" name="Dependency53" supplier="_-4GJSHggEd2Vxr2aiClL8g" client="_dMNk0OhrEd25AsNl_TBRDQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_lA-6cw5DEd6KQuvMUCD2yg" name="Dependency54" supplier="_GyHPcA5AEd6KQuvMUCD2yg" client="_GTtU0A5DEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_li24cw5DEd6KQuvMUCD2yg" name="Dependency55" supplier="_Vpjk0A5AEd6KQuvMUCD2yg" client="_LybnUA5DEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_mOa98w5DEd6KQuvMUCD2yg" name="Dependency56" supplier="_l5XbUA5AEd6KQuvMUCD2yg" client="_QWfBUA5DEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_nKAccw5DEd6KQuvMUCD2yg" name="Dependency57" supplier="__T4G0A5AEd6KQuvMUCD2yg" client="_SRUWUA5DEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_oB7i8w5DEd6KQuvMUCD2yg" name="Dependency58" supplier="_xntcUA5BEd6KQuvMUCD2yg" client="_e9siUA5DEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Iq9mcw5LEd6KQuvMUCD2yg" name="Dependency59" supplier="_GTtU0A5DEd6KQuvMUCD2yg" client="_d9MVUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Jl8A8w5LEd6KQuvMUCD2yg" name="Dependency60" supplier="_LybnUA5DEd6KQuvMUCD2yg" client="_d9MVUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_L-cwcw5LEd6KQuvMUCD2yg" name="Dependency61" supplier="_QWfBUA5DEd6KQuvMUCD2yg" client="_d9MVUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_UUIB8w5LEd6KQuvMUCD2yg" name="Dependency62" supplier="_hm9RUA5IEd6KQuvMUCD2yg" client="_d9MVUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_IItYgw5MEd6KQuvMUCD2yg" name="Dependency63" supplier="_QWfBUA5DEd6KQuvMUCD2yg" client="_gUQTUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_bB3k8w5OEd6KQuvMUCD2yg" name="Dependency64" supplier="_SRUWUA5DEd6KQuvMUCD2yg" client="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_isl08w5OEd6KQuvMUCD2yg" name="Dependency65" supplier="_QWfBUA5DEd6KQuvMUCD2yg" client="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_qLZ6cw5PEd6KQuvMUCD2yg" name="Dependency66" supplier="_e9siUA5DEd6KQuvMUCD2yg" client="_lYRm0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_sbTggw5PEd6KQuvMUCD2yg" name="Dependency67" supplier="_SRUWUA5DEd6KQuvMUCD2yg" client="_lYRm0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_gIGNAA5QEd6KQuvMUCD2yg" name="Dependency69" supplier="_SRUWUA5DEd6KQuvMUCD2yg" client="_sw1v0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_xSI3Iw5QEd6KQuvMUCD2yg" name="Dependency70" supplier="_iO1pkHi_Ed2oZoPbWJIMHg" client="_sw1v0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_eYWXkw5ZEd6KQuvMUCD2yg" name="Dependency68" supplier="_hm9RUA5IEd6KQuvMUCD2yg" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_-IWlgw5ZEd6KQuvMUCD2yg" name="Dependency71" supplier="_d9MVUA5IEd6KQuvMUCD2yg" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="__yelAw5ZEd6KQuvMUCD2yg" name="Dependency72" supplier="_sw1v0A5IEd6KQuvMUCD2yg" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_AOjdAw5aEd6KQuvMUCD2yg" name="Dependency73" supplier="_gUQTUA5IEd6KQuvMUCD2yg" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_AoQ9gw5aEd6KQuvMUCD2yg" name="Dependency74" supplier="_lYRm0A5IEd6KQuvMUCD2yg" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_P2_uEA71Ed6i07THnW3V5A" name="Set<String>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_azYGoA72Ed6i07THnW3V5A" name="Dependency75" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_YPxfsPOSEd2JbqIoInRhNw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_w_-Eow72Ed6i07THnW3V5A" name="Dependency76" supplier="_YAvggLo_Ed29K_Ps1iXPuQ" client="_YPxfsPOSEd2JbqIoInRhNw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_NN8JsA8MEd6i07THnW3V5A" name="Dependency77" supplier="_dSGT8KGqEd2ENuCUfYNU7A" client="_YPxfsPOSEd2JbqIoInRhNw"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_CuFh0g8bEd6ZEphZXOMnTg" name="Dependency79" supplier="_gUQTUA5IEd6KQuvMUCD2yg" client="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_RHLosw-nEd6Za8ap1ETEyA" name="Dependency80" supplier="_SRUWUA5DEd6KQuvMUCD2yg" client="_d9MVUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_gnh-4w-sEd6Za8ap1ETEyA" name="Dependency81" supplier="_IfiXMIVfEd2N0bQZBk24XA" client="_sw1v0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_JYw1Yw-wEd6Za8ap1ETEyA" name="Dependency83" supplier="_sw1v0A5IEd6KQuvMUCD2yg" client="_lYRm0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_k3bH8w_GEd6Za8ap1ETEyA" name="Dependency84" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_lQXzcw_GEd6Za8ap1ETEyA" name="Dependency85" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_MONf4xIeEd6Za8ap1ETEyA" name="Dependency86" supplier="_IfiXMIVfEd2N0bQZBk24XA" client="_gUQTUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_OgY94xIeEd6Za8ap1ETEyA" name="Dependency87" supplier="_IfiXMIVfEd2N0bQZBk24XA" client="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_a7E88BIeEd6Za8ap1ETEyA" name="Dependency88" supplier="_iO1pkHi_Ed2oZoPbWJIMHg" client="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_je274xIeEd6Za8ap1ETEyA" name="Dependency78" supplier="_iO1pkHi_Ed2oZoPbWJIMHg" client="_gUQTUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_jH14UBJFEd6o-Ots7TkB2A" name="Dependency89" supplier="_dMNk0OhrEd25AsNl_TBRDQ" client="__IZq8BJDEd6o-Ots7TkB2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_y058cCK_Ed6OMJznllRp2A" name="Dependency82" supplier="_hm9RUA5IEd6KQuvMUCD2yg" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_0pZY4CK_Ed6OMJznllRp2A" name="Dependency90" supplier="_d9MVUA5IEd6KQuvMUCD2yg" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_2h_SMCK_Ed6OMJznllRp2A" name="Dependency91" supplier="_sw1v0A5IEd6KQuvMUCD2yg" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_3VDG0CK_Ed6OMJznllRp2A" name="Dependency92" supplier="_gUQTUA5IEd6KQuvMUCD2yg" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_4FS4ACK_Ed6OMJznllRp2A" name="Dependency93" supplier="_lYRm0A5IEd6KQuvMUCD2yg" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_83YuBCK_Ed6OMJznllRp2A" name="Dependency94" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_9nbq5CK_Ed6OMJznllRp2A" name="Dependency95" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_-U08ZCK_Ed6OMJznllRp2A" name="Dependency96" supplier="_xswuUP9BEd2Qm_QM6AOnsQ" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_hzkiVCODEd6gj5bfXc-Mvw" name="Dependency97" supplier="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_kRt_xCODEd6gj5bfXc-Mvw" name="Dependency98" supplier="_yvPJ2HTaEd20yqJGyRKhKA"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_956h9CODEd6gj5bfXc-Mvw" name="Dependency99" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_fPiC0COEEd6gj5bfXc-Mvw" name="Dependency100" supplier="_lYRm0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_kFj9oCOEEd6gj5bfXc-Mvw" name="Dependency101" supplier="_sw1v0A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_yqJBZCOEEd6gj5bfXc-Mvw" name="Dependency102" client="_x4510A5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_3Qjy4COEEd6gj5bfXc-Mvw" name="Dependency103" client="_J7MKQCK6Ed6OMJznllRp2A"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_T0otsCUBEd6Bk7gvYh5YAQ" name="List<TopicRule>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_bGCH8C_nEd6m7Z8-52146A" name="Dependency104" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_jwI9AC5VEd6W6LY8irJDig"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_MmtlYC_sEd6cNN8u-rRFgA" name="Dependency105" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_NKQXUy_sEd6cNN8u-rRFgA" name="Dependency106" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_hm9RUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_HbpkID-iEd6_O_u-D-Y8sg" name="List<ContentDef>"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_reQ8Uz_aEd6_Lec3g9P76A" name="Dependency107" supplier="_Ugb_4Hi_Ed2oZoPbWJIMHg" client="_gUQTUA5IEd6KQuvMUCD2yg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_vnO80z_aEd6_Lec3g9P76A" name="Dependency108" supplier="_yvPJ2HTaEd20yqJGyRKhKA" client="_gUQTUA5IEd6KQuvMUCD2yg"/> + <profileApplication xmi:id="_LmCD4PWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_LmFHMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + <profileApplication xmi:id="_lZpLIKTREd2FhPzHNqBWcg"> + <eAnnotations xmi:id="_lZxG8KTREd2FhPzHNqBWcg" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://SHARENGO_PROFILES/Sharengo.service.profile.uml#_pCbgIPQ4Ed2_aZMAEjWDNQ"/> + </eAnnotations> + <appliedProfile href="pathmap://SHARENGO_PROFILES/Sharengo.service.profile.uml#_EY2fUKDiEd25boenPflnPQ"/> + </profileApplication> + </uml:Model> + <AcceleoBusiness:Entity xmi:id="_xLZYgHTaEd20yqJGyRKhKA" base_Class="_--aR4HTZEd20yqJGyRKhKA"/> + <AcceleoBusiness:Service xmi:id="_14QJMHTaEd20yqJGyRKhKA" base_Class="_yvPJ2HTaEd20yqJGyRKhKA"/> + <AcceleoBusiness:Dao xmi:id="_5REfIHTaEd20yqJGyRKhKA" base_Class="_3ac7wHTaEd20yqJGyRKhKA"/> + <AcceleoBusiness:Dto xmi:id="_B-XmcHTbEd20yqJGyRKhKA" base_Class="_-1M2GHTaEd20yqJGyRKhKA"/> + <AcceleoBusiness:Remote xmi:id="_iP8nsHTsEd2rPt0GVlmSZQ" base_Operation="_75mnoHTaEd20yqJGyRKhKA"/> + <AcceleoBusiness:BusinessException xmi:id="_a-yYUHUaEd2q--EK4nC0vA"/> + <AcceleoBusiness:Remote xmi:id="_RXj5wHWmEd2gat_LwJwOew"/> + <AcceleoBusiness:Remote xmi:id="_jrbD8HWsEd2gat_LwJwOew" base_Operation="_hBZtsnWsEd2gat_LwJwOew"/> + <AcceleoBusiness:Entity xmi:id="_IYuicHXmEd2XodZQ_XQIpQ" base_Class="_RuhOKHXbEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_I62_IHXmEd2XodZQ_XQIpQ" base_Class="_sRfBYHXZEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_Jk4MgHXmEd2XodZQ_XQIpQ" base_Class="_cKqgGHXfEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_KnL-EHXmEd2XodZQ_XQIpQ" base_Class="_9F6dWHXYEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_Lbo50HXmEd2XodZQ_XQIpQ" base_Class="_WdyWeHXXEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_MRSIYHXmEd2XodZQ_XQIpQ" base_Class="_l2fJWHXYEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_Mz2p8HXmEd2XodZQ_XQIpQ" base_Class="_i__W-HXQEd2gat_LwJwOew"/> + <AcceleoBusiness:Entity xmi:id="_ORu9MHXmEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_O1fxkHXmEd2XodZQ_XQIpQ" base_Class="_vF4GiHXXEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_Pyb68HXmEd2XodZQ_XQIpQ" base_Class="_Bq1oyHXTEd2XodZQ_XQIpQ"/> + <AcceleoBusiness:Entity xmi:id="_QyXG4HXmEd2XodZQ_XQIpQ" base_Class="_mOq5eHXQEd2gat_LwJwOew"/> + <AcceleoBusiness:Entity xmi:id="_RYXW8HXmEd2XodZQ_XQIpQ" base_Class="_IVEMeHXQEd2gat_LwJwOew"/> + <AcceleoBusiness:Entity xmi:id="_R5l0sHXmEd2XodZQ_XQIpQ" base_Class="_O3Kc-HXPEd2gat_LwJwOew"/> + <AcceleoBusiness:Entity xmi:id="_SXi8AHXmEd2XodZQ_XQIpQ" base_Class="_NcHbSHXPEd2gat_LwJwOew"/> + <AcceleoBusiness:Entity xmi:id="_S5OFsHXmEd2XodZQ_XQIpQ" base_Class="_KYKiGHXPEd2gat_LwJwOew"/> + <AcceleoBusiness:Dto xmi:id="_L7ClsHgiEd2Vxr2aiClL8g" base_Class="_4oxq2HghEd2Vxr2aiClL8g"/> + <AcceleoBusiness:Dao xmi:id="_Mg5EwHgiEd2Vxr2aiClL8g" base_Class="_-4GJSHggEd2Vxr2aiClL8g"/> + <AcceleoBusiness:Service xmi:id="_OcRMUHgiEd2Vxr2aiClL8g" base_Class="_zAlIsHggEd2Vxr2aiClL8g"/> + <AcceleoBusiness:Remote xmi:id="_Reu3wHgiEd2Vxr2aiClL8g" base_Operation="_0lpMkHghEd2Vxr2aiClL8g"/> + <AcceleoBusiness:Remote xmi:id="_oWtkAHhBEd2X9uNQyI_qHw" base_Operation="_QCWoQHhBEd2X9uNQyI_qHw"/> + <AcceleoBusiness:Remote xmi:id="_4vsvMHhCEd2X9uNQyI_qHw" base_Operation="_0vbNIHhBEd2X9uNQyI_qHw"/> + <AcceleoBusiness:Service xmi:id="_XAQRQHi_Ed2oZoPbWJIMHg" base_Class="_Ugb_4Hi_Ed2oZoPbWJIMHg"/> + <AcceleoBusiness:Dao xmi:id="_LgUNwHjAEd2oZoPbWJIMHg" base_Class="_iO1pkHi_Ed2oZoPbWJIMHg"/> + <AcceleoBusiness:Dto xmi:id="_6_hbUHjHEd2vSLEPekkQZw" base_Class="_3UukkHjHEd2vSLEPekkQZw"/> + <AcceleoBusiness:Remote xmi:id="_fqrUoHjIEd2vSLEPekkQZw" base_Operation="_LpgsYHjIEd2vSLEPekkQZw"/> + <AcceleoBusiness:Remote xmi:id="_liA7cHjIEd2vSLEPekkQZw"/> + <AcceleoBusiness:Remote xmi:id="_J__d8HjVEd2XX6MpUtjnfg" base_Operation="_IaaAMHjVEd2XX6MpUtjnfg"/> + <AcceleoBusiness:Remote xmi:id="_xh9U4HjsEd2Lq_BH-5XVEg"/> + <AcceleoBusiness:Dto xmi:id="_0e9aEHkDEd2Atp1vvmnWrA" base_Class="_tM0CIHkDEd2Atp1vvmnWrA"/> + <AcceleoBusiness:Dao xmi:id="_Kd7LwHkEEd2Atp1vvmnWrA"/> + <AcceleoBusiness:Remote xmi:id="_CjcZwHkKEd2Atp1vvmnWrA" base_Operation="_bYAHQHkEEd2Atp1vvmnWrA"/> + <AcceleoBusiness:Remote xmi:id="_ko74YHkKEd2Atp1vvmnWrA" base_Operation="_IsL5oHkKEd2Atp1vvmnWrA"/> + <AcceleoBusiness:Remote xmi:id="_ywmWoHkKEd2Atp1vvmnWrA" base_Operation="_m28oEHkKEd2Atp1vvmnWrA"/> + <AcceleoBusiness:Remote xmi:id="_GbhCEHkLEd2Atp1vvmnWrA" base_Operation="_70CtEHkKEd2Atp1vvmnWrA"/> + <AcceleoBusiness:Dao xmi:id="_M3_bYHm9Ed2ql75AYIhxSA" base_Class="_pfA7oHm8Ed2ql75AYIhxSA"/> + <AcceleoBusiness:Remote xmi:id="_qsHkgHpXEd2KlrgMGH48yg" base_Operation="_ma-fcHpXEd2KlrgMGH48yg"/> + <AcceleoBusiness:Dao xmi:id="_SJIaAHsfEd2br5ngUa3Ghw" base_Class="_QKN2QHsfEd2br5ngUa3Ghw"/> + <AcceleoBusiness:Entity xmi:id="_S1W88H2HEd2PvufzAfDQGg" base_Class="_qIx38HtJEd2br5ngUa3Ghw"/> + <AcceleoBusiness:Remote xmi:id="_YtT5gH_REd2UJZ6mvauuHQ" base_Operation="_ME61oH_REd2UJZ6mvauuHQ"/> + <AcceleoBusiness:Remote xmi:id="_k7r64H_REd2UJZ6mvauuHQ" base_Operation="_cqEC8X_REd2UJZ6mvauuHQ"/> + <AcceleoBusiness:Remote xmi:id="_IZoYYIANEd2AxNDbeUs4Sw"/> + <AcceleoBusiness:Remote xmi:id="_8jDHwIATEd2AxNDbeUs4Sw" base_Operation="_vdrM8IATEd2AxNDbeUs4Sw"/> + <AcceleoBusiness:Service xmi:id="_QFmwsIVfEd2N0bQZBk24XA" base_Class="_IfiXMIVfEd2N0bQZBk24XA"/> + <AcceleoBusiness:Remote xmi:id="_b6mb8IYTEd2FDsNjNrtp7Q"/> + <AcceleoBusiness:Remote xmi:id="_qvof4IrcEd2Y45ctWyGYNQ" base_Operation="_IBCPUIrbEd2Y45ctWyGYNQ"/> + <AcceleoBusiness:Dto xmi:id="_yz8twI7QEd2S3Joda-hMBQ" base_Class="_5apesHkIEd2Atp1vvmnWrA"/> + <AcceleoBusiness:Remote xmi:id="_PmnJAJOAEd2PpNHrflS_6A" base_Operation="_K8Su8JOAEd2PpNHrflS_6A"/> + <AcceleoBusiness:Dto xmi:id="_ONdhUJtuEd2hONjUBs7mIQ" base_Class="__rDAwJttEd2hONjUBs7mIQ"/> + <AcceleoBusiness:Remote xmi:id="_na5l4JuJEd2hhejVV_1tQg" base_Operation="_OXz74JuJEd2hhejVV_1tQg"/> + <AcceleoBusiness:Remote xmi:id="_eOI-UJwsEd2jKtVlU3vFlQ" base_Operation="_1INfoJwnEd2jKtVlU3vFlQ"/> + <AcceleoBusiness:Remote xmi:id="_ejaqwJwsEd2jKtVlU3vFlQ" base_Operation="_2cDtIJwnEd2jKtVlU3vFlQ"/> + <AcceleoBusiness:Entity xmi:id="__zEqIKGpEd2ENuCUfYNU7A" base_Class="_8wC-AKGpEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Dto xmi:id="_ItWdgKGqEd2ENuCUfYNU7A" base_Class="_F-eccKGqEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Dao xmi:id="_iwyKMKGqEd2ENuCUfYNU7A" base_Class="_dSGT8KGqEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Remote xmi:id="_OqIvkKGrEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Remote xmi:id="_y5IRUKGrEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Remote xmi:id="_zMjjoKGrEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Remote xmi:id="_zhkxYKGrEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Remote xmi:id="_z6H0QKGrEd2ENuCUfYNU7A"/> + <Sharengoserviceprofile:CrudService xmi:id="_m8_NMKTREd2FhPzHNqBWcg" base_Class="_s08WwKGqEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Dto xmi:id="_n_izYKTyEd2m-IdKVzbNwA" base_Class="_PKoIWKQuEd2GAYp1IpBaGw"/> + <AcceleoBusiness:Remote xmi:id="_5rAQ0KWoEd2Sy4jX_MS0IA" base_Operation="_qjqdYKQrEd2GAYp1IpBaGw"/> + <AcceleoBusiness:Remote xmi:id="_EuWAcKW_Ed2BUJWkFP_TZQ" base_Operation="__5FhsKW-Ed2BUJWkFP_TZQ"/> + <AcceleoBusiness:Remote xmi:id="_3FcP4KXAEd2BUJWkFP_TZQ" base_Operation="_92YqIKW-Ed2BUJWkFP_TZQ"/> + <AcceleoBusiness:Remote xmi:id="_VYcFgKaLEd2G__lOTDfUPw" base_Operation="_F1R5oKaLEd2G__lOTDfUPw"/> + <AcceleoBusiness:Remote xmi:id="_s4PX0KaLEd2G__lOTDfUPw" base_Operation="_HD8sMKaLEd2G__lOTDfUPw"/> + <AcceleoBusiness:Remote xmi:id="_RF5DQKcwEd26eZS_gEW-Hg" base_Operation="_CjwPgKcwEd26eZS_gEW-Hg"/> + <AcceleoBusiness:Remote xmi:id="_xm36AKdjEd2kkeUn0Lf9KQ"/> + <AcceleoBusiness:Remote xmi:id="_E0D_YLSQEd2Svo_ZuxkYww" base_Operation="_BkY-YLSQEd2Svo_ZuxkYww"/> + <AcceleoBusiness:Remote xmi:id="_WtyugLTnEd252vzLZ9nqrQ" base_Operation="_UsJm4LTnEd252vzLZ9nqrQ"/> + <AcceleoBusiness:Remote xmi:id="_2itOELcKEd24mr0Xuj8kuQ" base_Operation="_zdDEsLcKEd24mr0Xuj8kuQ"/> + <AcceleoBusiness:Dto xmi:id="_kj3AoLowEd2LUbkYKt0ISw" base_Class="_FzLjsLoaEd2A0rZMX9hUqA"/> + <AcceleoBusiness:Dto xmi:id="_noZvsLowEd2LUbkYKt0ISw" base_Class="_lvPOoLowEd2LUbkYKt0ISw"/> + <AcceleoBusiness:Dto xmi:id="_tNcFkLowEd2LUbkYKt0ISw" base_Class="_ozMu4LowEd2LUbkYKt0ISw"/> + <AcceleoBusiness:Dto xmi:id="_y8O0YLowEd2LUbkYKt0ISw" base_Class="_wtqrELowEd2LUbkYKt0ISw"/> + <AcceleoBusiness:Dto xmi:id="_3EPLkLowEd2LUbkYKt0ISw" base_Class="_0FQ5ALowEd2LUbkYKt0ISw"/> + <AcceleoBusiness:Dto xmi:id="_MFhXkLoyEd2LUbkYKt0ISw" base_Class="_KP7H4LoyEd2LUbkYKt0ISw"/> + <AcceleoBusiness:Dto xmi:id="_94TcMLo3Ed2LUbkYKt0ISw" base_Class="_5-eq8Lo3Ed2LUbkYKt0ISw"/> + <AcceleoBusiness:Dto xmi:id="_-KBeULo3Ed2LUbkYKt0ISw" base_Class="_t1qfALo3Ed2LUbkYKt0ISw"/> + <AcceleoBusiness:Service xmi:id="_ZgFMULo_Ed29K_Ps1iXPuQ" base_Class="_YAvggLo_Ed29K_Ps1iXPuQ"/> + <AcceleoBusiness:Remote xmi:id="_nxQ9gLpAEd29K_Ps1iXPuQ" base_Operation="_g-dCYLo_Ed29K_Ps1iXPuQ"/> + <AcceleoBusiness:Dto xmi:id="_ULEdMLpEEd2ea__X_Ke6sQ" base_Class="_SdWXILpEEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_3Trt0LrVEd2Re4E5q7qDVg" base_Class="_TtLqgLpIEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_3qXIcLrVEd2Re4E5q7qDVg" base_Class="_FFdooLpHEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_4EXj4LrVEd2Re4E5q7qDVg" base_Class="_GlrBsLpIEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_4Z8yULrVEd2Re4E5q7qDVg" base_Class="_KZ2d8LpIEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_402loLrVEd2Re4E5q7qDVg" base_Class="_L4m68LpIEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_99laALrVEd2Re4E5q7qDVg" base_Class="_wB9kMLpHEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_-Sxm4LrVEd2Re4E5q7qDVg" base_Class="_NMZTgLpHEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_-l1s0LrVEd2Re4E5q7qDVg" base_Class="_lVlhELpHEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_-3ZW4LrVEd2Re4E5q7qDVg" base_Class="_xECFMLpHEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="__LEg0LrVEd2Re4E5q7qDVg" base_Class="_s94IILpHEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="__f1P4LrVEd2Re4E5q7qDVg" base_Class="_x6JN0LpHEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="__5fGALrVEd2Re4E5q7qDVg" base_Class="_0psH0LpIEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_AT-CkLrWEd2Re4E5q7qDVg" base_Class="_G6C5wLpJEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_AuHn8LrWEd2Re4E5q7qDVg" base_Class="_agULMLpIEd2ea__X_Ke6sQ"/> + <AcceleoBusiness:Dto xmi:id="_hSwbALraEd2I3Oprj84ARg" base_Class="_Sp7wcLraEd2I3Oprj84ARg"/> + <AcceleoBusiness:Remote xmi:id="_YC1LILsDEd2hnI17Wy1x7w" base_Operation="_Uo5a4LsDEd2hnI17Wy1x7w"/> + <AcceleoBusiness:Remote xmi:id="_a8dgELvGEd2kF4XjUgVq9Q" base_Operation="_U50BILvGEd2kF4XjUgVq9Q"/> + <AcceleoBusiness:Remote xmi:id="_A8eRYL1lEd2hO74hOuNnYA" base_Operation="_55KmsL1kEd2hO74hOuNnYA"/> + <AcceleoBusiness:Dto xmi:id="_ghyNgMbBEd2uuaPd80qeIQ" base_Class="_bCy1QMbBEd2uuaPd80qeIQ"/> + <AcceleoBusiness:Dto xmi:id="_nxNBkMbBEd2uuaPd80qeIQ" base_Class="_kAX0QMbBEd2uuaPd80qeIQ"/> + <AcceleoBusiness:Remote xmi:id="_PsxiwMbCEd2uuaPd80qeIQ" base_Operation="_FDblgMbCEd2uuaPd80qeIQ"/> + <AcceleoBusiness:Dto xmi:id="_WvZP4MeREd2h5Jm14AAEsA" base_Class="_VbTx0MeREd2h5Jm14AAEsA"/> + <AcceleoBusiness:Dto xmi:id="_esOHAMhWEd2UGuMtCFt8YQ" base_Class="_b7u8YMhWEd2UGuMtCFt8YQ"/> + <AcceleoBusiness:Dto xmi:id="_3LyNMMhWEd2UGuMtCFt8YQ" base_Class="_ysvPAMhWEd2UGuMtCFt8YQ"/> + <AcceleoBusiness:Dto xmi:id="_5Vx_kMhWEd2UGuMtCFt8YQ" base_Class="_3tyHAMhWEd2UGuMtCFt8YQ"/> + <AcceleoBusiness:Dto xmi:id="_EIUVEMhXEd2UGuMtCFt8YQ" base_Class="_CAfs8MhXEd2UGuMtCFt8YQ"/> + <AcceleoBusiness:Dto xmi:id="_HXiDEMhXEd2UGuMtCFt8YQ" base_Class="_FMMz9shXEd2UGuMtCFt8YQ"/> + <AcceleoBusiness:Dto xmi:id="_2HFzANcdEd2nifBZRRnUOg" base_Class="_g6OzsNcdEd2nifBZRRnUOg"/> + <AcceleoBusiness:Service xmi:id="_dnw0oN40Ed2Q5-9ABN1uxA"/> + <AcceleoBusiness:Dto xmi:id="_tWFx4N44Ed2Q5-9ABN1uxA"/> + <AcceleoBusiness:Dto xmi:id="_t0xR8N44Ed2Q5-9ABN1uxA"/> + <AcceleoBusiness:Dto xmi:id="_uS5YYN44Ed2Q5-9ABN1uxA"/> + <AcceleoBusiness:Dto xmi:id="_u0d0YN44Ed2Q5-9ABN1uxA"/> + <AcceleoBusiness:Dto xmi:id="_-B-gYN44Ed2Q5-9ABN1uxA"/> + <AcceleoBusiness:Service xmi:id="_JHaxgOCvEd2azvOuM1o-5g"/> + <AcceleoBusiness:Remote xmi:id="_leZDgOFyEd2_mrdRrPOl2g"/> + <AcceleoBusiness:Config xmi:id="_Cp7zwOI7Ed2T1_-09lWd5Q"/> + <AcceleoBusiness:Service xmi:id="_yQ9vYOPpEd2zfYSdqx49HA"/> + <AcceleoBusiness:Remote xmi:id="_Z_wY0OPqEd2zfYSdqx49HA"/> + <AcceleoBusiness:Remote xmi:id="_f6pC4OPqEd2zfYSdqx49HA"/> + <AcceleoBusiness:Remote xmi:id="_l7xe4OPqEd2zfYSdqx49HA"/> + <AcceleoBusiness:Remote xmi:id="_1s1nsOYKEd2J1PltzDe2qg"/> + <AcceleoBusiness:Service xmi:id="_xw73AOh0Ed25AsNl_TBRDQ" base_Class="_dMNk0OhrEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Dto xmi:id="_yLnA0Oh0Ed25AsNl_TBRDQ" base_Class="_kXbRgOhvEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_U85B4OiKEd25AsNl_TBRDQ" base_Operation="_fbp34OhrEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_VO0fYOiKEd25AsNl_TBRDQ" base_Operation="_hzn00OhrEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_Vr414OiKEd25AsNl_TBRDQ" base_Operation="_j-yr4OhrEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_WBM-kOiKEd25AsNl_TBRDQ" base_Operation="_pSZ6kOhrEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_WRbL4OiKEd25AsNl_TBRDQ" base_Operation="_NaoF8OhsEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_WhQXoOiKEd25AsNl_TBRDQ" base_Operation="_Wlc2wOhsEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_W2lucOiKEd25AsNl_TBRDQ" base_Operation="_cYvEAOhsEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_XFno8OiKEd25AsNl_TBRDQ" base_Operation="_ccEPYOhtEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_XTfs4OiKEd25AsNl_TBRDQ" base_Operation="_kxi3IOhuEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_XhgTsOiKEd25AsNl_TBRDQ" base_Operation="_mu5UoOhuEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_Xwr_MOiKEd25AsNl_TBRDQ" base_Operation="_oerQMOhuEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_rWjykOiKEd25AsNl_TBRDQ" base_Operation="_YL-0EOiKEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Remote xmi:id="_0Lt1YOiKEd25AsNl_TBRDQ" base_Operation="_spkSkOiKEd25AsNl_TBRDQ"/> + <AcceleoBusiness:Dto xmi:id="_sDhpMOktEd2VcLeORko10g" base_Class="_0hSnEOkqEd2VcLeORko10g"/> + <AcceleoBusiness:Service xmi:id="_wVEW4OktEd2VcLeORko10g" base_Class="_x1MNMOkqEd2VcLeORko10g"/> + <AcceleoBusiness:Remote xmi:id="_duFiwOkvEd2w6L86tbByuw" base_Operation="_x1MNMekqEd2VcLeORko10g"/> + <AcceleoBusiness:Remote xmi:id="_ek85UOkvEd2w6L86tbByuw" base_Operation="_x1MNM-kqEd2VcLeORko10g"/> + <AcceleoBusiness:Remote xmi:id="_fJRHUOkvEd2w6L86tbByuw" base_Operation="_x1MNOOkqEd2VcLeORko10g"/> + <AcceleoBusiness:Remote xmi:id="_c3i04OxnEd2cCItakgS7Lg" base_Operation="_xNxvMOxcEd2y9MAFkymhaQ"/> + <AcceleoBusiness:Dto xmi:id="_AMxRUO6-Ed2vc7ElAwQEXw" base_Class="_zqte8O69Ed2vc7ElAwQEXw"/> + <AcceleoBusiness:Dto xmi:id="_EfieIPEbEd2U9JmEC6FyWg" base_Class="_37knQPEaEd2U9JmEC6FyWg"/> + <AcceleoBusiness:Service xmi:id="_mtIhIPOSEd2JbqIoInRhNw" base_Class="_YPxfsPOSEd2JbqIoInRhNw"/> + <AcceleoBusiness:Service xmi:id="_jw0j8PQ1Ed22_7AHmZR45g" base_Class="_t_rlofQqEd2JbqIoInRhNw"/> + <AcceleoBusiness:Service xmi:id="_kOewUPQ1Ed22_7AHmZR45g" base_Class="_t_rlqPQqEd2JbqIoInRhNw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_u4YxoPbPEd2So46ZaKFSQw" base_Association="_bMCi2vbPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_vSpEsPbPEd2So46ZaKFSQw" base_Association="_YRqcafbPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_vvA3oPbPEd2So46ZaKFSQw" base_Association="_Yox76vbPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_wQ5csPbPEd2So46ZaKFSQw" base_Association="_ZFY_avbPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_xGExMPbPEd2So46ZaKFSQw" base_Association="_bpabWvbPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_xrADMPbPEd2So46ZaKFSQw" base_Association="_cIsYWvbPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_y7RYQPbPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_JV-qwPbQEd2So46ZaKFSQw" base_Association="_ZeZ8WvbPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_EJUjMPbREd2So46ZaKFSQw" base_Association="_CQag2vbREd2So46ZaKFSQw"/> + <AcceleoBusiness:Service xmi:id="_MHXs8PbTEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Dao xmi:id="_MnUYUPbTEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Entity xmi:id="_NNavAPbTEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Dto xmi:id="_NsssAPbTEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_GCbdEPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_Gs59cPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_HU-DAPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_Hy4HAPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_IN_8wPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_Ip0WEPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_JDOUkPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_Jb0awPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_J55d4PbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_KSPscPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_KsCFcPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_LEpZwPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_LbWCgPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_L2S5IPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_MM2X8PbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_MmmUsPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_NAZUwPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_NZhmcPbVEd2HpdG1FYiBVQ"/> + <AcceleoBusiness:Remote xmi:id="_N0cA0PbVEd2HpdG1FYiBVQ"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_-alsEPdPEd2So46ZaKFSQw" base_Association="_EhHa6vdPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_-3lKEPdPEd2So46ZaKFSQw" base_Association="_yHKBCvdOEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="__YeQoPdPEd2So46ZaKFSQw" base_Association="_HtwWCvdPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="__0ZXoPdPEd2So46ZaKFSQw" base_Association="_yZixivdOEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_ART9IPdQEd2So46ZaKFSQw" base_Association="_DsL-CvdPEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_Azy_IPdQEd2So46ZaKFSQw" base_Association="_v0cXgPdOEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_2198sPdSEd28Bvfkb-l2ww" base_Association="_ZFg2kPdQEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:CrudService xmi:id="_rU-McPdXEd2lh9IJqfaKxQ" base_Class="_s08WwKGqEd2ENuCUfYNU7A"/> + <AcceleoBusiness:Dto xmi:id="__u1VoPdkEd2Fr5Df5xrkyw"/> + <AcceleoBusiness:Dto xmi:id="_F5YzYPdlEd2Fr5Df5xrkyw"/> + <AcceleoBusiness:Remote xmi:id="_cEQTEPdlEd2Fr5Df5xrkyw" base_Operation="_aSQxAPdlEd2Fr5Df5xrkyw"/> + <AcceleoBusiness:Remote xmi:id="_tp6iMPdlEd2Fr5Df5xrkyw" base_Operation="_rz40svdlEd2Fr5Df5xrkyw"/> + <AcceleoBusiness:Remote xmi:id="_j7HOsPdyEd26SJHML9L6aA"/> + <AcceleoBusiness:Remote xmi:id="_kgksMPdyEd26SJHML9L6aA"/> + <AcceleoBusiness:Remote xmi:id="_lAQR0PdyEd26SJHML9L6aA"/> + <AcceleoBusiness:Remote xmi:id="_rN0x4PdzEd26SJHML9L6aA" base_Operation="_YPxfsfOSEd2JbqIoInRhNw"/> + <AcceleoBusiness:Remote xmi:id="_r23H0PdzEd26SJHML9L6aA" base_Operation="_YPxft_OSEd2JbqIoInRhNw"/> + <AcceleoBusiness:Remote xmi:id="_sWwv4PdzEd26SJHML9L6aA" base_Operation="_YPxfvfOSEd2JbqIoInRhNw"/> + <AcceleoBusiness:Dto xmi:id="_NFHhwPhLEd2EUscs1VHtew"/> + <AcceleoBusiness:Entity xmi:id="_ylZS8PhQEd2Hu-BP-VasxQ" base_Class="_wFp6GPhQEd2Hu-BP-VasxQ"/> + <AcceleoBusiness:Entity xmi:id="_Bz75sPhREd2Hu-BP-VasxQ" base_Class="_79nmmPhQEd2Hu-BP-VasxQ"/> + <AcceleoBusiness:Dao xmi:id="_eEflQPhREd2Hu-BP-VasxQ" base_Class="_bxj5WPhREd2Hu-BP-VasxQ"/> + <AcceleoBusiness:Dao xmi:id="_lrwRkPhREd2Hu-BP-VasxQ" base_Class="_hUWziPhREd2Hu-BP-VasxQ"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_C2XqQPhVEd2du7_XCS7v_A" base_Association="_B3oxKfhVEd2du7_XCS7v_A"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_KrM4gPhVEd2du7_XCS7v_A" base_Association="_J6nwKfhVEd2du7_XCS7v_A"/> + <AcceleoBusiness:Dto xmi:id="_JdAKkPhWEd2HjeLblxEjvQ"/> + <AcceleoBusiness:Remote xmi:id="_UzsG8Pm_Ed2-r9_matJLyA" base_Operation="_P3yNoPm_Ed2-r9_matJLyA"/> + <AcceleoBusiness:Remote xmi:id="_v-gScPm_Ed2-r9_matJLyA" base_Operation="_pBtfcvm_Ed2-r9_matJLyA"/> + <AcceleoBusiness:Remote xmi:id="_LGnycPnEEd2-r9_matJLyA" base_Operation="_2a80ovnDEd2-r9_matJLyA"/> + <AcceleoBusiness:Dto xmi:id="_LKMGAPnTEd2T75KyApI1XQ" base_Class="_k4ogWPm2Ed2ngN8mqQoDPw"/> + <Sharengoserviceprofile_1:CrudService xmi:id="_CWW90P9CEd2Qm_QM6AOnsQ" base_Class="_xswuUP9BEd2Qm_QM6AOnsQ"/> + <AcceleoBusiness:Remote xmi:id="_Hm_xAP9CEd2Qm_QM6AOnsQ" base_Operation="_EmUOQP9CEd2Qm_QM6AOnsQ"/> + <AcceleoBusiness:Remote xmi:id="_H8lmgP9CEd2Qm_QM6AOnsQ"/> + <AcceleoBusiness:Entity xmi:id="_pLVDUP9CEd2Qm_QM6AOnsQ" base_Class="_g3AcsP9CEd2Qm_QM6AOnsQ"/> + <AcceleoBusiness:Dto xmi:id="_phQQAP9CEd2Qm_QM6AOnsQ" base_Class="_e8X8AP9CEd2Qm_QM6AOnsQ"/> + <AcceleoBusiness:Remote xmi:id="_NgHzoP9aEd2Qm_QM6AOnsQ"/> + <AcceleoBusiness:Dao xmi:id="_0ILegP9aEd25BaYHbAwXwQ" base_Class="_poU0cP9aEd25BaYHbAwXwQ"/> + <AcceleoBusiness:Remote xmi:id="_KSM_wAHDEd6YN9j9rf_V2Q" base_Operation="_DhEDIAHDEd6YN9j9rf_V2Q"/> + <AcceleoBusiness:Entity xmi:id="_ipZugAJPEd6NXsEhrbvcFg"/> + <AcceleoBusiness:Dao xmi:id="_ygvaoAJPEd6NXsEhrbvcFg"/> + <AcceleoBusiness:Remote xmi:id="_XzHsAAJQEd6NXsEhrbvcFg"/> + <AcceleoBusiness:Remote xmi:id="_YN0rAAJQEd6NXsEhrbvcFg"/> + <AcceleoBusiness:Remote xmi:id="_Yuo5EAJQEd6NXsEhrbvcFg"/> + <AcceleoBusiness:Remote xmi:id="_4JpbUAmLEd63k8rLfgI_ng" base_Operation="_M-qAgAl6Ed63k8rLfgI_ng"/> + <AcceleoBusiness:Entity xmi:id="_LLTdQA5AEd6KQuvMUCD2yg" base_Class="_GyHPcA5AEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Entity xmi:id="_XcAZ4A5AEd6KQuvMUCD2yg" base_Class="_Vpjk0A5AEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Entity xmi:id="_nWh84A5AEd6KQuvMUCD2yg" base_Class="_l5XbUA5AEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Entity xmi:id="_AzVucA5BEd6KQuvMUCD2yg" base_Class="__T4G0A5AEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Entity xmi:id="_z55hYA5BEd6KQuvMUCD2yg" base_Class="_xntcUA5BEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Dao xmi:id="_K1y_8A5DEd6KQuvMUCD2yg" base_Class="_GTtU0A5DEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Dao xmi:id="_MTBy8A5DEd6KQuvMUCD2yg" base_Class="_LybnUA5DEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Dao xmi:id="_R4AecA5DEd6KQuvMUCD2yg" base_Class="_QWfBUA5DEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Dao xmi:id="_UZcgcA5DEd6KQuvMUCD2yg" base_Class="_SRUWUA5DEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Dao xmi:id="_fV0ucA5DEd6KQuvMUCD2yg" base_Class="_e9siUA5DEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Dto xmi:id="_JGEx8A5HEd6KQuvMUCD2yg" base_Class="_EGAKUA5HEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Dto xmi:id="_ZogCcA5HEd6KQuvMUCD2yg" base_Class="_Vcdf0A5HEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Service xmi:id="_7yqJMA5IEd6KQuvMUCD2yg" base_Class="_d9MVUA5IEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Service xmi:id="_8GaysA5IEd6KQuvMUCD2yg" base_Class="_gUQTUA5IEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Service xmi:id="_8WDxMA5IEd6KQuvMUCD2yg" base_Class="_hm9RUA5IEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Service xmi:id="_8orLMA5IEd6KQuvMUCD2yg" base_Class="_lYRm0A5IEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Service xmi:id="_89IYQA5IEd6KQuvMUCD2yg" base_Class="_sw1v0A5IEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Service xmi:id="_9hNVsA5IEd6KQuvMUCD2yg" base_Class="_x4510A5IEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_JqCIsA5JEd6KQuvMUCD2yg" base_Operation="_B27_0A5JEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_6aOEsA5KEd6KQuvMUCD2yg" base_Operation="_g-XK0A5JEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_6zA_MA5KEd6KQuvMUCD2yg" base_Operation="_qUDH0A5JEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_7NCBsA5KEd6KQuvMUCD2yg" base_Operation="_uvLPUA5JEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_7gGusA5KEd6KQuvMUCD2yg" base_Operation="_0Vhz0A5JEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_71GHQA5KEd6KQuvMUCD2yg" base_Operation="_BZVBUA5KEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_7BXHwA5LEd6KQuvMUCD2yg" base_Operation="_cthV0A5LEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_7TqYsA5LEd6KQuvMUCD2yg" base_Operation="_mIKrUA5LEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_7nkzMA5LEd6KQuvMUCD2yg" base_Operation="_uafG0A5LEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_8AN8sA5LEd6KQuvMUCD2yg" base_Operation="_4z_4UA5LEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_VrIJwA5OEd6KQuvMUCD2yg" base_Operation="_SrRYUA5MEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_V-qJwA5OEd6KQuvMUCD2yg" base_Operation="_i8OeUA5MEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_WPrBQA5OEd6KQuvMUCD2yg" base_Operation="_u3eIUQ5MEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_WgYWwA5OEd6KQuvMUCD2yg" base_Operation="_2zvbUA5MEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_WyTNMA5OEd6KQuvMUCD2yg" base_Operation="_8E4k0A5MEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_XF_lQA5OEd6KQuvMUCD2yg" base_Operation="_SFzeUg5NEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_XXxRwA5OEd6KQuvMUCD2yg" base_Operation="_6GnE0A5NEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_Xn3jQA5OEd6KQuvMUCD2yg" base_Operation="_C6f8UA5OEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_X5L8wA5OEd6KQuvMUCD2yg" base_Operation="_NOD20Q5OEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_bSnhQA5PEd6KQuvMUCD2yg" base_Operation="_tEZ9Ug5OEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_bjoYwA5PEd6KQuvMUCD2yg" base_Operation="_KcJTYA5PEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_b6bvMA5PEd6KQuvMUCD2yg" base_Operation="_OmBS0A5PEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_cJjJQA5PEd6KQuvMUCD2yg" base_Operation="_UXgwUg5PEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_YVjdwA5QEd6KQuvMUCD2yg" base_Operation="_ww1WUg5PEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_YqADwA5QEd6KQuvMUCD2yg" base_Operation="_5V_1Ug5PEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_Y7n_QA5QEd6KQuvMUCD2yg" base_Operation="_SK5SUg5QEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_LfzkQA5ZEd6KQuvMUCD2yg" base_Operation="_lKjk0g5REd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_L2oI0A5ZEd6KQuvMUCD2yg" base_Operation="_sKGJ0g5REd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_MTUE0A5ZEd6KQuvMUCD2yg" base_Operation="_zV1-0g5REd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_MniBUA5ZEd6KQuvMUCD2yg" base_Operation="_Nk_zUg5SEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_M9u60A5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_NV6KQA5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_Nsk90A5ZEd6KQuvMUCD2yg" base_Operation="_VpupUg5TEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_OGmAUA5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_OePrUA5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_Oy_zUA5ZEd6KQuvMUCD2yg" base_Operation="_4uEgYA5UEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_PKRq4A5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_PdaCQA5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_PyT7QA5ZEd6KQuvMUCD2yg" base_Operation="_g1If4A5VEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_QKqJ0A5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_QdlF0A5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_Q3DVwA5ZEd6KQuvMUCD2yg" base_Operation="_cnHx4A5WEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_RLIIUA5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_RhtcUA5ZEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_R3XjQA5ZEd6KQuvMUCD2yg" base_Operation="_LY45YA5YEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_a0eEUA5dEd6KQuvMUCD2yg" base_Operation="_Mz9MYA5cEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_bK1V4A5dEd6KQuvMUCD2yg" base_Operation="_YWVDYA5cEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_be9y0A5dEd6KQuvMUCD2yg" base_Operation="_b4sW4A5cEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_rkZlUA5dEd6KQuvMUCD2yg" base_Operation="_p-Fd4A5UEd6KQuvMUCD2yg"/> + <AcceleoBusiness:Remote xmi:id="_zVlFYA7bEd6GlpMc1IXijg" base_Operation="_sM9c4A7bEd6GlpMc1IXijg"/> + <AcceleoBusiness:Remote xmi:id="_RxOIcA7cEd6GlpMc1IXijg" base_Operation="_G-TYcA7cEd6GlpMc1IXijg"/> + <AcceleoBusiness:Service xmi:id="_iRrFMA7rEd67kIKaKolRBA" base_Class="_fbDdYA7rEd67kIKaKolRBA"/> + <AcceleoBusiness:Remote xmi:id="_v09rEA7rEd67kIKaKolRBA" base_Operation="_tnIhkA7rEd67kIKaKolRBA"/> + <AcceleoBusiness:Dto xmi:id="_sVPs0A70Ed6i07THnW3V5A" base_Class="_pn_cYA70Ed6i07THnW3V5A"/> + <AcceleoBusiness:Remote xmi:id="_af8-4A73Ed6i07THnW3V5A"/> + <AcceleoBusiness:Remote xmi:id="_xjWzoA74Ed6i07THnW3V5A" base_Operation="_rAF68A74Ed6i07THnW3V5A"/> + <AcceleoBusiness:Remote xmi:id="_h89hwBISEd6Rc4a-4dQbWA" base_Operation="_KRUy4BISEd6Rc4a-4dQbWA"/> + <AcceleoBusiness:Remote xmi:id="_idE-wBPfEd6gmdaSlhZGXg" base_Operation="_So_a8BPfEd6gmdaSlhZGXg"/> + <AcceleoBusiness:Remote xmi:id="_4FeoQBVYEd6ea7tnvz6BlA" base_Operation="_x2UXUBVYEd6ea7tnvz6BlA"/> + <AcceleoBusiness:Remote xmi:id="_cpnBoBVbEd6ea7tnvz6BlA" base_Operation="_Wot2MBVbEd6ea7tnvz6BlA"/> + <AcceleoBusiness:Remote xmi:id="_ht4HIB06Ed6sNL3iT4yqBg" base_Operation="_QjYxEB06Ed6sNL3iT4yqBg"/> + <AcceleoBusiness:Remote xmi:id="_3CUfsB07Ed6sNL3iT4yqBg" base_Operation="_rC78kB07Ed6sNL3iT4yqBg"/> + <AcceleoBusiness:Remote xmi:id="_Sxd-8B1KEd6sNL3iT4yqBg" base_Operation="__OwNQB1JEd6sNL3iT4yqBg"/> + <AcceleoBusiness:Remote xmi:id="_i6T7QB3NEd6Rqt7TeCJVaw" base_Operation="_3Mv3gB2-Ed6dVI2yFn6RnA"/> + <AcceleoBusiness:Remote xmi:id="_jcxIEB3NEd6Rqt7TeCJVaw" base_Operation="_FRkdIB2_Ed6dVI2yFn6RnA"/> + <AcceleoBusiness:Dto xmi:id="_gayOsB3WEd6Rqt7TeCJVaw" base_Class="_D5ipwB08Ed6sNL3iT4yqBg"/> + <AcceleoBusiness:Dto xmi:id="_hSLwwB3WEd6Rqt7TeCJVaw" base_Class="_SsxC8B07Ed6sNL3iT4yqBg"/> + <AcceleoBusiness:Remote xmi:id="_ehoT4B4GEd6Hj8IcKtrWfg" base_Operation="_OPZbgB4GEd6Hj8IcKtrWfg"/> + <AcceleoBusiness:Remote xmi:id="_X_ZrEB4IEd6Hj8IcKtrWfg" base_Operation="_HPxsEB4IEd6Hj8IcKtrWfg"/> + <AcceleoBusiness:Remote xmi:id="_a6yeIB4IEd6Hj8IcKtrWfg" base_Operation="_py7zkB4HEd6Hj8IcKtrWfg"/> + <AcceleoBusiness:Remote xmi:id="_NJIQUB9hEd6Y0pLDes4cng" base_Operation="_x5fPMB9gEd6Y0pLDes4cng"/> + <AcceleoBusiness:Remote xmi:id="_O2slYB9hEd6Y0pLDes4cng" base_Operation="_9_TKcB9gEd6Y0pLDes4cng"/> + <AcceleoBusiness:Remote xmi:id="_sU5BYB9kEd6Y0pLDes4cng" base_Operation="_jDLlcB9kEd6Y0pLDes4cng"/> + <AcceleoBusiness:Remote xmi:id="_rHBgQB-JEd6aY9VmaJwuZQ" base_Operation="_iIAW0B-JEd6aY9VmaJwuZQ"/> + <AcceleoBusiness:Remote xmi:id="_j5EaoCAfEd6Rg765w0YsUw" base_Operation="_66ztYCAeEd6Rg765w0YsUw"/> + <AcceleoBusiness:Remote xmi:id="_JATqoCAuEd6Rg765w0YsUw" base_Operation="_2vPuECAtEd6Rg765w0YsUw"/> + <AcceleoBusiness:Remote xmi:id="_hN4hwCBWEd65zZRswDaukg" base_Operation="_bTjRUCBWEd65zZRswDaukg"/> + <AcceleoBusiness:Remote xmi:id="_gCusUCK-Ed6OMJznllRp2A" base_Operation="_W46oICK-Ed6OMJznllRp2A"/> + <AcceleoBusiness:Service xmi:id="_g_vuMCK-Ed6OMJznllRp2A" base_Class="_J7MKQCK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_haX0sCK-Ed6OMJznllRp2A" base_Operation="_O1wm0CK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_iAVogCK-Ed6OMJznllRp2A" base_Operation="_lBWfQCK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_i4WOkCK-Ed6OMJznllRp2A" base_Operation="_mkwLsCK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_jmvloCK-Ed6OMJznllRp2A" base_Operation="_qMXyoCK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_j6eZ8CK-Ed6OMJznllRp2A" base_Operation="_tLGNkCK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_kSl_ACK-Ed6OMJznllRp2A" base_Operation="_yWYmsCK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_kjycsCK-Ed6OMJznllRp2A" base_Operation="_z0I-ICK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_k2dhECK-Ed6OMJznllRp2A" base_Operation="_1kb3ECK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_lKBWQCK-Ed6OMJznllRp2A" base_Operation="_5HypECK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_lddPoCK-Ed6OMJznllRp2A" base_Operation="_65srkCK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_lvYGECK-Ed6OMJznllRp2A" base_Operation="_9VCFkCK6Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_mB7OoCK-Ed6OMJznllRp2A" base_Operation="_BXvtECK7Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_mUPGoCK-Ed6OMJznllRp2A" base_Operation="_CfszoCK7Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_mpY3QCK-Ed6OMJznllRp2A" base_Operation="_FImvkCK7Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_nASUUCK-Ed6OMJznllRp2A" base_Operation="_LMMCoCK7Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_nScbUCK-Ed6OMJznllRp2A" base_Operation="_NVhGoCK7Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_nkjfACK-Ed6OMJznllRp2A" base_Operation="_fX1ckCK7Ed6OMJznllRp2A"/> + <AcceleoBusiness:Remote xmi:id="_Gs_FcCNVEd6d3NARAvR2pQ" base_Operation="_0arywCNUEd6d3NARAvR2pQ"/> + <AcceleoBusiness:Remote xmi:id="_II5CwCNVEd6d3NARAvR2pQ" base_Operation="_sCRWUCNUEd6d3NARAvR2pQ"/> + <AcceleoBusiness:Remote xmi:id="_ImtAICNVEd6d3NARAvR2pQ" base_Operation="_6Vx4MCNUEd6d3NARAvR2pQ"/> + <AcceleoBusiness:Service xmi:id="_u9YGoCOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_0ydDoCOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_1T-cUCOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_1uP9gCOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_2G2qwCOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_2bs5YCOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_2tZtYCOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_3BMzICOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_3SFHwCOCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_3jgO8COCEd6gj5bfXc-Mvw"/> + <AcceleoBusiness:Remote xmi:id="_zh0bgCTdEd6QZ5hRjKYwWQ" base_Operation="_RXPBgCTdEd6QZ5hRjKYwWQ"/> + <AcceleoBusiness:Dto xmi:id="_-_A0EC2PEd6Baqqif9vVOQ" base_Class="_wmHRUC2OEd6Baqqif9vVOQ"/> + <AcceleoBusiness:Remote xmi:id="_6boDQCswEd6tjYAzTLw2Cw" base_Operation="_HG54gCswEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_7CgdECswEd6tjYAzTLw2Cw" base_Operation="_F_XBoCswEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_nVHP8CsxEd6tjYAzTLw2Cw" base_Operation="_esaUwCsxEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_oLL8UCsxEd6tjYAzTLw2Cw" base_Operation="_gDgDgCsxEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Service xmi:id="_69zDwCtSEd6tjYAzTLw2Cw" base_Class="_2kgvUCtSEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Dto xmi:id="_XKp-QCtXEd6tjYAzTLw2Cw" base_Class="_55WnYCtWEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_t46pcCtYEd6tjYAzTLw2Cw" base_Operation="_h84VQitYEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_uURvwCtYEd6tjYAzTLw2Cw" base_Operation="_RV8YMCtYEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_uq7VMCtYEd6tjYAzTLw2Cw" base_Operation="_DPFLMCtYEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_vBMgICtYEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_vZvjACtYEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_vz6WgCtYEd6tjYAzTLw2Cw" base_Operation="_xD0xICtWEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_wK2P0CtYEd6tjYAzTLw2Cw" base_Operation="_BElUcCtWEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_wizc0CtYEd6tjYAzTLw2Cw" base_Operation="_RXQHICtVEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_w87NACtYEd6tjYAzTLw2Cw" base_Operation="_P1nVQCtVEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Dto xmi:id="_AvtOoCtsEd6tjYAzTLw2Cw"/> + <AcceleoBusiness:Remote xmi:id="_OAOuUC2BEd6R-vHwJRLroA" base_Operation="_aCOWAC2AEd6R-vHwJRLroA"/> + <AcceleoBusiness:Remote xmi:id="_7xi7EC2mEd6R-vHwJRLroA" base_Operation="_TFR8wC2mEd6R-vHwJRLroA"/> + <AcceleoBusiness:Remote xmi:id="_SmWdcC5IEd6xvOBU31IlXw" base_Operation="_OsOxQC5IEd6xvOBU31IlXw"/> + <AcceleoBusiness:Remote xmi:id="_PS1sAC5NEd6xvOBU31IlXw" base_Operation="_54S2AC5MEd6xvOBU31IlXw"/> + <AcceleoBusiness:Remote xmi:id="_PpFo0C5NEd6xvOBU31IlXw" base_Operation="__C1oQC5MEd6xvOBU31IlXw"/> + <AcceleoBusiness:Service xmi:id="_nA-boC5VEd6W6LY8irJDig" base_Class="_jwI9AC5VEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_sT8xIC5VEd6W6LY8irJDig" base_Operation="_nj-bAC5VEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_L-FAkC5WEd6W6LY8irJDig" base_Operation="_-489YC5VEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_viAMEC5WEd6W6LY8irJDig" base_Operation="_fjrHIi5WEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_FHRrYC5XEd6W6LY8irJDig" base_Operation="_CkF88i5XEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_RsL9cC5XEd6W6LY8irJDig" base_Operation="_O5tOwC5XEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_dWhdoC5XEd6W6LY8irJDig" base_Operation="_cMvyIC5XEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_LfswkC5YEd6W6LY8irJDig" base_Operation="_JSuisC5YEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_c-F6EC5YEd6W6LY8irJDig" base_Operation="_SoZRki5YEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_ySg58C5YEd6W6LY8irJDig" base_Operation="_wa_XoC5YEd6W6LY8irJDig"/> + <AcceleoBusiness:Remote xmi:id="_zNT6AC5zEd6W6LY8irJDig" base_Operation="_wIjIgC5zEd6W6LY8irJDig"/> + <AcceleoBusiness:Service xmi:id="_jMubMC6HEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_UG6AsC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_Uc7UAC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_UwtysC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_VCxMAC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_VTtyEC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_VnIdUC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_V2rVMC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_WG6JkC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_WZH68C6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_WsHvcC6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_76VSgC6JEd6ts7qX7YWm0w" base_Operation="_6Zbgci6JEd6ts7qX7YWm0w"/> + <AcceleoBusiness:Remote xmi:id="_FRCWMC8ZEd6nTaxxaFh6RQ" base_Operation="_4Bi2EC8YEd6nTaxxaFh6RQ"/> + <AcceleoBusiness:Remote xmi:id="_HQhvcC8eEd6LoL7mDHS7Iw" base_Operation="_CafNkC8eEd6LoL7mDHS7Iw"/> + <AcceleoBusiness:Remote xmi:id="_sgoEsC8lEd6-MauFHegShA" base_Operation="_QyVYsC8lEd6-MauFHegShA"/> + <AcceleoBusiness:Remote xmi:id="_64Y0cC8lEd6-MauFHegShA" base_Operation="_zMZZIC8lEd6-MauFHegShA"/> + <AcceleoBusiness:Remote xmi:id="_C6cy4C_VEd60r8Vp-3Ec5w" base_Operation="_jGB_AC_UEd60r8Vp-3Ec5w"/> + <AcceleoBusiness:Remote xmi:id="_hy_-8C_WEd60r8Vp-3Ec5w" base_Operation="_ScERMC_WEd60r8Vp-3Ec5w"/> + <AcceleoBusiness:Remote xmi:id="_DH_vkC_pEd6m7Z8-52146A" base_Operation="_18f-oC_oEd6m7Z8-52146A"/> + <AcceleoBusiness:Remote xmi:id="_bueHUC_vEd6wTqNjal63Xg" base_Operation="_VvbWAC_vEd6wTqNjal63Xg"/> + <AcceleoBusiness:Remote xmi:id="_TcWy4DSfEd6SRfzb6Civ8A" base_Operation="_OQgZEDSfEd6SRfzb6Civ8A"/> + <AcceleoBusiness:Remote xmi:id="_w5db8DVhEd6Qg9MkiTPhqA" base_Operation="_v3FY8DVhEd6Qg9MkiTPhqA"/> + <AcceleoBusiness:Remote xmi:id="_pEE-oDViEd6Qg9MkiTPhqA" base_Operation="_cOJOADViEd6Qg9MkiTPhqA"/> + <AcceleoBusiness:Service xmi:id="_fpBHYD4_Ed6us98SLDIclA" base_Class="_aJeVgD4_Ed6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_ngIisD5BEd6us98SLDIclA" base_Operation="_ZQkFoD5BEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_GvapMD5CEd6us98SLDIclA" base_Operation="_uwRIcj5BEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_nMLPcD5CEd6us98SLDIclA" base_Operation="_jKYN8j5CEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_VsdlYD5EEd6us98SLDIclA" base_Operation="_wC3t4j5DEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_AS_4AD5FEd6us98SLDIclA" base_Operation="_sgG8Uj5EEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_R8zAQD5FEd6us98SLDIclA" base_Operation="_C_mBIj5FEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_fFyPwD5FEd6us98SLDIclA" base_Operation="_TR5K8T5FEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_vwbBED5FEd6us98SLDIclA" base_Operation="_jk9Jwj5FEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_BEyr4D5GEd6us98SLDIclA" base_Operation="_zP9DAD5FEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_WPg9MD5GEd6us98SLDIclA" base_Operation="_Fr5Z4D5GEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_qkc2AD5GEd6us98SLDIclA" base_Operation="_ZV44Qj5GEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_17SLYD5GEd6us98SLDIclA" base_Operation="_rPunoD5GEd6us98SLDIclA"/> + <AcceleoBusiness:Remote xmi:id="_O1m68D5HEd6us98SLDIclA" base_Operation="_NrMWQD5HEd6us98SLDIclA"/> + <AcceleoBusiness:Service xmi:id="_pbaqsD-hEd6_O_u-D-Y8sg" base_Class="_i_1uYD-hEd6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_ySeyAD-hEd6_O_u-D-Y8sg" base_Operation="_sJPi4D-hEd6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_-cCIUD-iEd6_O_u-D-Y8sg" base_Operation="_85uoED-iEd6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_9dI4UD-8Ed6_O_u-D-Y8sg" base_Operation="_nG5PED-8Ed6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_vPCI8D--Ed6_O_u-D-Y8sg" base_Operation="_-IvaED-8Ed6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_vyIO8D--Ed6_O_u-D-Y8sg" base_Operation="_IHUjED-9Ed6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_wU8oID--Ed6_O_u-D-Y8sg" base_Operation="_TzBVMD-9Ed6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_w6iBcD--Ed6_O_u-D-Y8sg" base_Operation="_QgjCYD--Ed6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_-hOgoD--Ed6_O_u-D-Y8sg" base_Operation="_8VRmcD--Ed6_O_u-D-Y8sg"/> + <AcceleoBusiness:Entity xmi:id="_rNG5sD_AEd6_O_u-D-Y8sg" base_Class="_bj2s4D_AEd6_O_u-D-Y8sg"/> + <AcceleoBusiness:Remote xmi:id="_8I8_oECYEd6fr9GmRQTM7Q" base_Operation="_7crg0D_aEd6_Lec3g9P76A"/> + <AcceleoBusiness:Remote xmi:id="_8joJcECYEd6fr9GmRQTM7Q" base_Operation="_yox70ECWEd6fr9GmRQTM7Q"/> + <AcceleoBusiness:Remote xmi:id="__jUV0EEpEd6naM7GDXYidw" base_Operation="_30KRwEEpEd6naM7GDXYidw"/> + <AcceleoBusiness:Remote xmi:id="_nuXA8EErEd6naM7GDXYidw" base_Operation="_CyLegEEqEd6naM7GDXYidw"/> + <AcceleoBusiness:Remote xmi:id="_D3qN8EEsEd6naM7GDXYidw" base_Operation="_y0-JAEErEd6naM7GDXYidw"/> + <AcceleoBusiness:Remote xmi:id="_P4e7gEEsEd6naM7GDXYidw" base_Operation="_IZDVgEEsEd6naM7GDXYidw"/> + <AcceleoBusiness:Remote xmi:id="_i0aaAEEsEd6naM7GDXYidw" base_Operation="_d8XtAEEsEd6naM7GDXYidw"/> + <AcceleoBusiness:Remote xmi:id="__ZPscEEsEd6naM7GDXYidw" base_Operation="_jYk3AEEsEd6naM7GDXYidw"/> + <AcceleoBusiness:Remote xmi:id="_YNMEQECKEd6gFeLh6Y5JDQ" base_Operation="_6N73sECIEd6gFeLh6Y5JDQ"/> + <AcceleoBusiness:Dto xmi:id="_2Wxt8EFOEd68g6bliBN4DQ" base_Class="_hK3J0EFOEd68g6bliBN4DQ"/> + <AcceleoBusiness:Remote xmi:id="_1w9KYESLEd6vAcvzaNvDvA" base_Operation="_tb8nQESLEd6vAcvzaNvDvA"/> + <AcceleoBusiness:Remote xmi:id="_QreNUEthEd6RroIE_si1DQ" base_Operation="_NDuDgEthEd6RroIE_si1DQ"/> + <AcceleoBusiness:Remote xmi:id="_jcp-8EtiEd6RroIE_si1DQ" base_Operation="_e5A0oEtiEd6RroIE_si1DQ"/> + <AcceleoBusiness:Remote xmi:id="_WMhwMEtjEd6RroIE_si1DQ" base_Operation="_LFxeMEtjEd6RroIE_si1DQ"/> + <AcceleoBusiness:Remote xmi:id="_mtMGIEtjEd6RroIE_si1DQ" base_Operation="_kNJyUEtjEd6RroIE_si1DQ"/> + <AcceleoBusiness:Remote xmi:id="_3LmVIEtqEd6vPPc7KDt3WQ" base_Operation="_ye4HUEtqEd6vPPc7KDt3WQ"/> + <AcceleoBusiness:Remote xmi:id="_yqWQIEttEd6vPPc7KDt3WQ" base_Operation="_pbIukEttEd6vPPc7KDt3WQ"/> + <AcceleoBusiness:Remote xmi:id="_a8vV4EtuEd6vPPc7KDt3WQ" base_Operation="_Xvpu0EtuEd6vPPc7KDt3WQ"/> + <AcceleoBusiness:Remote xmi:id="_H7dicEwgEd6SUqmuGcZJOw" base_Operation="_muW50EweEd6SUqmuGcZJOw"/> + <AcceleoBusiness:Remote xmi:id="_KX8zAEwgEd6SUqmuGcZJOw" base_Operation="_DuVsoEweEd6SUqmuGcZJOw"/> + <AcceleoBusiness:Remote xmi:id="_Ku6hgEwgEd6SUqmuGcZJOw" base_Operation="_PKe_0EweEd6SUqmuGcZJOw"/> + <AcceleoBusiness:Remote xmi:id="__g-kQEwxEd6rAqa4OnNuyg" base_Operation="_EGXQcEwxEd6rAqa4OnNuyg"/> + <AcceleoBusiness:Remote xmi:id="_rsFTEExVEd663ZuzwRMpEw" base_Operation="_e_pcsExVEd663ZuzwRMpEw"/> + <AcceleoBusiness:Remote xmi:id="_q7c8oE6gEd6NiYsm9_1_qQ" base_Operation="_oGapME6gEd6NiYsm9_1_qQ"/> + <AcceleoBusiness:Dto xmi:id="_AdOu4E9YEd6VjacN4bzw2Q" base_Class="_5R04IE9XEd6VjacN4bzw2Q"/> + <AcceleoBusiness:Remote xmi:id="_o7-_YE-JEd6jPaCGdA6eKw" base_Operation="_eD-Q0E-FEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_pYdgAE-JEd6jPaCGdA6eKw" base_Operation="_eipJ0E-FEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_pwzHgE-JEd6jPaCGdA6eKw" base_Operation="_lYrNgE-FEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_qKqZAE-JEd6jPaCGdA6eKw" base_Operation="_26s50k-FEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_qi7IAE-JEd6jPaCGdA6eKw" base_Operation="_5s3fck-FEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_q4-QgE-JEd6jPaCGdA6eKw" base_Operation="_92iDgk-FEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_tO-ekE-JEd6jPaCGdA6eKw" base_Operation="_CCRrME-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_uysUEE-JEd6jPaCGdA6eKw" base_Operation="_ELEjsE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_vKM1IE-JEd6jPaCGdA6eKw" base_Operation="_FuL8QE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_vj_OIE-JEd6jPaCGdA6eKw" base_Operation="_Hug1QE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_v5rxUE-JEd6jPaCGdA6eKw" base_Operation="_JvE-0E-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_wQKXoE-JEd6jPaCGdA6eKw" base_Operation="_Mo3PYE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_wtAEoE-JEd6jPaCGdA6eKw" base_Operation="_PBxngE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_xAnkME-JEd6jPaCGdA6eKw" base_Operation="_TasvkE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_xUSuIE-JEd6jPaCGdA6eKw" base_Operation="_YitLME-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_xvO9sE-JEd6jPaCGdA6eKw" base_Operation="_cA-B0E-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_yBd9ME-JEd6jPaCGdA6eKw" base_Operation="_nMzBEE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_yXl-ME-JEd6jPaCGdA6eKw" base_Operation="_tR1ssE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_yoZaUE-JEd6jPaCGdA6eKw" base_Operation="_vutXwE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_y9KJYE-JEd6jPaCGdA6eKw" base_Operation="_xxkAUE-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_zOOrQE-JEd6jPaCGdA6eKw" base_Operation="_1jDU8E-GEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_b0yqME-KEd6jPaCGdA6eKw" base_Operation="_V67T0E-KEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_NLUNcE-MEd6jPaCGdA6eKw" base_Operation="_64J_Ik-LEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_OtNeAE-MEd6jPaCGdA6eKw" base_Operation="_7RMKME-LEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Service xmi:id="_ubuBsE-NEd6jPaCGdA6eKw" base_Class="_ZoF7YE-FEd6jPaCGdA6eKw"/> + <AcceleoBusiness:Remote xmi:id="_b9eX4FEFEd643dseCuH5RA" base_Operation="_7QVeMFECEd643dseCuH5RA"/> + <AcceleoBusiness:Remote xmi:id="_1AJyMFEFEd643dseCuH5RA" base_Operation="_jWSYgFEFEd643dseCuH5RA"/> + <AcceleoBusiness:Remote xmi:id="_-kz_UFEFEd643dseCuH5RA" base_Operation="_2OVckFEFEd643dseCuH5RA"/> + <AcceleoBusiness:Remote xmi:id="_TSTiEFEGEd643dseCuH5RA" base_Operation="_P-5QkFEGEd643dseCuH5RA"/> + <AcceleoBusiness:Remote xmi:id="_erUBsFEGEd643dseCuH5RA" base_Operation="_bQsU8lEGEd643dseCuH5RA"/> + <AcceleoBusiness:Dto xmi:id="_xONbQFGtEd6lINZTnfnS_Q" base_Class="_jCwpMFGtEd6lINZTnfnS_Q"/> + <AcceleoBusiness:Dto xmi:id="_xzWvsFGtEd6lINZTnfnS_Q" base_Class="_UKe4QFGrEd6lINZTnfnS_Q"/> + <AcceleoBusiness:Dto xmi:id="_yTqncFGtEd6lINZTnfnS_Q" base_Class="_xIOzQFGmEd6lINZTnfnS_Q"/> + <AcceleoBusiness:Dto xmi:id="_y2KQgFGtEd6lINZTnfnS_Q" base_Class="_3CkDsFGmEd6lINZTnfnS_Q"/> + <AcceleoBusiness:Dto xmi:id="_zY4jEFGtEd6lINZTnfnS_Q" base_Class="_VfsXsFGrEd6lINZTnfnS_Q"/> + <AcceleoBusiness:Remote xmi:id="_14jdsFTSEd6m1uIJAJogNQ" base_Operation="_0bPyMFTSEd6m1uIJAJogNQ"/> + <AcceleoBusiness:Remote xmi:id="_gHfvsFTTEd6m1uIJAJogNQ" base_Operation="_dpVEIFTTEd6m1uIJAJogNQ"/> + <AcceleoBusiness:Remote xmi:id="_ss2tsFTTEd6m1uIJAJogNQ" base_Operation="_qnotoFTTEd6m1uIJAJogNQ"/> +</xmi:XMI> diff --git a/eugene/src/test/resources/xmi/2.1/cmsLink.uml b/eugene/src/test/resources/xmi/2.1/cmsLink.uml new file mode 100644 index 0000000..3ee9f44 --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/cmsLink.uml @@ -0,0 +1,425 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:AcceleoBusiness="http:///schemas/AcceleoBusiness/_81fAsPWcEdyuYMHNZCqWBQ/0" xmlns:Sharengoserviceprofile="http:///schemas/Sharengoserviceprofile/_bMLXQKEQEd2L7a68DRX6Bg/1" xmlns:Sharengoserviceprofile_1="http:///schemas/Sharengoserviceprofile/_pCa5EPQ4Ed2_aZMAEjWDNQ/2" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/um [...] + <uml:Model xmi:id="_qb8akM37EdqwVrslYOdUDA" name="org::sharengo::utils::container::link"> + <packagedElement xmi:type="uml:Package" xmi:id="_w8IxIM37EdqwVrslYOdUDA" name="org.sharengo.utils.container.link.services"> + <packagedElement xmi:type="uml:Class" xmi:id="_uY4mEIr-Ed2zQqb9w4_QNQ" name="LinkDefinitionSrv" clientDependency="_VMAbA4sLEd2zQqb9w4_QNQ _2_ffU6UEEd2k3eK_Lp3Frw _3tRLUqUEEd2k3eK_Lp3Frw __duhIMXYEd2-8YlSmAaQ6Q"> + <ownedOperation xmi:id="_RYHKANAUEd2cQYB39pbhsw" name="findByName"> + <ownedParameter xmi:id="_S3FCYNAUEd2cQYB39pbhsw" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_UHI8ENAUEd2cQYB39pbhsw" name="return" type="_c2ZwIIrlEd2IhLeDKBwRog" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_VMAbA4sLEd2zQqb9w4_QNQ" name="Dependency1" supplier="_fvANkIroEd2IhLeDKBwRog" client="_uY4mEIr-Ed2zQqb9w4_QNQ"/> + <packagedElement xmi:type="uml:Class" xmi:id="_9FUhAI7-Ed2TZJhzNZ91vg" name="LinkSrv" clientDependency="__FUp447-Ed2TZJhzNZ91vg _Kz80M47_Ed2TZJhzNZ91vg"> + <ownedOperation xmi:id="_JLjdkI8AEd2TZJhzNZ91vg" name="create"> + <ownedParameter xmi:id="_l_h34I8DEd2TZJhzNZ91vg" name="return" type="_Q7hZ8I8AEd2TZJhzNZ91vg" direction="return"/> + <ownedParameter xmi:id="_3f1F4I8DEd2TZJhzNZ91vg" name="link" type="_Q7hZ8I8AEd2TZJhzNZ91vg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_u7JjcI_REd2HauxSWiOG3w" name="findAllByContent"> + <ownedParameter xmi:id="_xdFUsI_REd2HauxSWiOG3w" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_xfOCsI_REd2HauxSWiOG3w" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_40C7MI_REd2HauxSWiOG3w" name="return" type="_CcXgUI_SEd2HauxSWiOG3w" direction="return"/> + <ownedParameter xmi:id="_QPfAAI_UEd2HauxSWiOG3w" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_CDjdEpwaEd2jKtVlU3vFlQ" name="delete"> + <ownedParameter xmi:id="_F7CsAJwaEd2jKtVlU3vFlQ" name="linkId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_DANSkJwaEd2jKtVlU3vFlQ" name="deleteByEntityId"> + <ownedParameter xmi:id="_EITjEJwaEd2jKtVlU3vFlQ" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_fOAvcKDYEd2h0IgxKuvUCA" name="update"> + <ownedParameter xmi:id="_rbbukKDYEd2h0IgxKuvUCA" name="link" type="_Q7hZ8I8AEd2TZJhzNZ91vg"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_LE8j4KDiEd2h0IgxKuvUCA" name="find"> + <ownedParameter xmi:id="_PxJNQKDiEd2h0IgxKuvUCA" name="linkId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Xkl7cKDiEd2h0IgxKuvUCA" name="return" type="_Q7hZ8I8AEd2TZJhzNZ91vg" direction="return"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_EWe7MNAeEd2UY7ZCxznfRg" name="findRelatedTo"> + <ownedParameter xmi:id="_E2PZUNAeEd2UY7ZCxznfRg" name="return" type="_CcXgUI_SEd2HauxSWiOG3w" direction="return"/> + <ownedParameter xmi:id="_Ic9BUNAeEd2UY7ZCxznfRg" name="boundId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_uDGz4O7WEd2R4ZtD5-VcmA" name="findByLinkDef"> + <ownedParameter xmi:id="_wUUBgO7WEd2R4ZtD5-VcmA" name="return" type="_CcXgUI_SEd2HauxSWiOG3w" direction="return"/> + <ownedParameter xmi:id="_yWzdsO7WEd2R4ZtD5-VcmA" name="linkDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="__FUp447-Ed2TZJhzNZ91vg" name="Dependency2" supplier="_2Cf-gI7-Ed2TZJhzNZ91vg" client="_9FUhAI7-Ed2TZJhzNZ91vg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_Kz80M47_Ed2TZJhzNZ91vg" name="Dependency3" supplier="_fvANkIroEd2IhLeDKBwRog" client="_9FUhAI7-Ed2TZJhzNZ91vg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_2_ffU6UEEd2k3eK_Lp3Frw" name="Dependency4" supplier="_c2ZwIIrlEd2IhLeDKBwRog" client="_uY4mEIr-Ed2zQqb9w4_QNQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_3tRLUqUEEd2k3eK_Lp3Frw" name="Dependency5" supplier="_LufsoIroEd2IhLeDKBwRog" client="_uY4mEIr-Ed2zQqb9w4_QNQ"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="__duhIMXYEd2-8YlSmAaQ6Q" name="Dependency6" supplier="_2Cf-gI7-Ed2TZJhzNZ91vg" client="_uY4mEIr-Ed2zQqb9w4_QNQ"/> + <profileApplication xmi:id="_MIURkPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_MIURkfWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_tBzGgPWREdy_h6Mk-BiOHw" name="org.sharengo.utils.container.link.daos"> + <packagedElement xmi:type="uml:Class" xmi:id="_fvANkIroEd2IhLeDKBwRog" name="LinkDefinitionDao" clientDependency="_W-MKU4sLEd2zQqb9w4_QNQ"> + <ownedOperation xmi:id="_g-DGcIufEd2EPJQ4AZxy5g" name="get"> + <ownedParameter xmi:id="_h8edkIufEd2EPJQ4AZxy5g" name="return" type="_xeNZII7sEd2TZJhzNZ91vg" direction="return"/> + <ownedParameter xmi:id="_YPfCoI-3Ed2tTo-QrgrvjA" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_YRSZcI-3Ed2tTo-QrgrvjA" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </ownedOperation> + <ownedOperation xmi:id="_njyWcI4zEd2TdbFAPL6LJw" name="findByName"> + <ownedParameter xmi:id="_pzhkcI4zEd2TdbFAPL6LJw" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_u0FUQI4zEd2TdbFAPL6LJw" name="result" type="_LufsoIroEd2IhLeDKBwRog" direction="return"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_W-MKU4sLEd2zQqb9w4_QNQ" name="Dependency1" supplier="_LufsoIroEd2IhLeDKBwRog" client="_fvANkIroEd2IhLeDKBwRog"/> + <packagedElement xmi:type="uml:Class" xmi:id="_2Cf-gI7-Ed2TZJhzNZ91vg" name="LinkDao" clientDependency="_49bek47-Ed2TZJhzNZ91vg"> + <ownedOperation xmi:id="_Da4bMI_LEd2tTo-QrgrvjA" name="findByName"> + <ownedParameter xmi:id="_GnbPsI_LEd2tTo-QrgrvjA" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_KJpZQI_LEd2tTo-QrgrvjA" name="result" type="_-ercgI5BEd2yq5IM5PZa8A" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_s6ZY8JBbEd2E4-FUm_dE_g" name="linksRelatedTo"> + <ownedParameter xmi:id="_0uUBMJBbEd2E4-FUm_dE_g" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_5CTl8JBbEd2E4-FUm_dE_g" name="return" type="_a6Z4MJFhEd2KAoS_KFncGw" isOrdered="true" isUnique="false" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDgXwJBcEd2E4-FUm_dE_g" value="1"/> + </ownedParameter> + <ownedParameter xmi:id="_lAL2YJFWEd2KAoS_KFncGw" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_lEJJUJFWEd2KAoS_KFncGw" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_1eLmEpwbEd2jKtVlU3vFlQ" name="deleteByEntityId"> + <ownedParameter xmi:id="_3BXQEJwbEd2jKtVlU3vFlQ" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_DrgXMKcvEd26YZ4PE8pCiA" name="linksByEntities"> + <ownedParameter xmi:id="_zgHRMKcvEd26YZ4PE8pCiA" name="entitySourceId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_K5ekUKcwEd26YZ4PE8pCiA" name="entityTargetId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_Z_-pYKcwEd26YZ4PE8pCiA" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_fwP-4KcwEd26YZ4PE8pCiA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_1g99EMXYEd2-8YlSmAaQ6Q" name="deleteByLinkDefinitionId"> + <ownedParameter xmi:id="_4j6JoMXYEd2-8YlSmAaQ6Q" name="linkDefinitionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_7_BDMu7YEd2R4ZtD5-VcmA" name="findByLinkDef"> + <ownedParameter xmi:id="__qTpMO7YEd2R4ZtD5-VcmA" name="return" type="_a6Z4MJFhEd2KAoS_KFncGw" direction="return"/> + <ownedParameter xmi:id="_LVyY4O7ZEd2R4ZtD5-VcmA" name="linkDefId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_P4RFkO7ZEd2R4ZtD5-VcmA" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_RctT0O7ZEd2R4ZtD5-VcmA" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_49bek47-Ed2TZJhzNZ91vg" name="Dependency2" supplier="_-ercgI5BEd2yq5IM5PZa8A" client="_2Cf-gI7-Ed2TZJhzNZ91vg"/> + <profileApplication xmi:id="_Mg9bEPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_Mg-CIPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="__PrMMPWREdy_h6Mk-BiOHw" name="org.sharengo.utils.container.link.dtos"> + <packagedElement xmi:type="uml:Class" xmi:id="_c2ZwIIrlEd2IhLeDKBwRog" name="LinkDefinition"> + <ownedAttribute xmi:id="_vY4XYIrmEd2IhLeDKBwRog" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_X9tQ8IrnEd2IhLeDKBwRog" name="directionType" type="_qTVrwIuoEd2EPJQ4AZxy5g"/> + <ownedAttribute xmi:id="_If5CoIroEd2IhLeDKBwRog" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_FxuCoNaLEd2EvcfjEHUVCg" name="sourceEntityType"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_So9a0NaLEd2EvcfjEHUVCg" name="targetEntityType"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_Q7hZ8I8AEd2TZJhzNZ91vg" name="Link"> + <ownedAttribute xmi:id="_TW7scI8AEd2TZJhzNZ91vg" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_W-fB8I8AEd2TZJhzNZ91vg" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_mCdXco8AEd2TZJhzNZ91vg" name="sourceEntityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Y-9PcI8BEd2TZJhzNZ91vg" name="targetEntityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_1GezcI8EEd2TZJhzNZ91vg" name="linkDefinitionId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_WEZiYO6yEd2R4ZtD5-VcmA" name="Association1" memberEnd="_WEZiYe6yEd2R4ZtD5-VcmA _WEZiZO6yEd2R4ZtD5-VcmA" navigableOwnedEnd="_WEZiZO6yEd2R4ZtD5-VcmA"> + <ownedEnd xmi:id="_WEZiYe6yEd2R4ZtD5-VcmA" name="source" association="_WEZiYO6yEd2R4ZtD5-VcmA"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WEZiYu6yEd2R4ZtD5-VcmA" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WEZiY-6yEd2R4ZtD5-VcmA" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_WEZiZO6yEd2R4ZtD5-VcmA" name="links" type="_Q7hZ8I8AEd2TZJhzNZ91vg" aggregation="composite" association="_WEZiYO6yEd2R4ZtD5-VcmA"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WEZiZe6yEd2R4ZtD5-VcmA" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WEZiZu6yEd2R4ZtD5-VcmA"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_cyGl6vbIEd2hfYFyIHz3vg" name="Association2" memberEnd="_cyGl6_bIEd2hfYFyIHz3vg _cyGl7vbIEd2hfYFyIHz3vg" navigableOwnedEnd="_cyGl7vbIEd2hfYFyIHz3vg"> + <ownedEnd xmi:id="_cyGl6_bIEd2hfYFyIHz3vg" name="source" type="_c2ZwIIrlEd2IhLeDKBwRog" association="_cyGl6vbIEd2hfYFyIHz3vg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cyGl7PbIEd2hfYFyIHz3vg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cyGl7fbIEd2hfYFyIHz3vg" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_cyGl7vbIEd2hfYFyIHz3vg" name="target" association="_cyGl6vbIEd2hfYFyIHz3vg"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cyGl7_bIEd2hfYFyIHz3vg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cyGl8PbIEd2hfYFyIHz3vg" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_dTmJavbIEd2hfYFyIHz3vg" name="Association3" memberEnd="_dTmJa_bIEd2hfYFyIHz3vg _dTmJbvbIEd2hfYFyIHz3vg" navigableOwnedEnd="_dTmJbvbIEd2hfYFyIHz3vg"> + <ownedEnd xmi:id="_dTmJa_bIEd2hfYFyIHz3vg" name="source" type="_Q7hZ8I8AEd2TZJhzNZ91vg" association="_dTmJavbIEd2hfYFyIHz3vg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dTmJbPbIEd2hfYFyIHz3vg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dTmJbfbIEd2hfYFyIHz3vg" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_dTmJbvbIEd2hfYFyIHz3vg" name="target" association="_dTmJavbIEd2hfYFyIHz3vg"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dTmJb_bIEd2hfYFyIHz3vg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dTmJcPbIEd2hfYFyIHz3vg" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_d5C_2vbIEd2hfYFyIHz3vg" name="Association4" memberEnd="_d5C_2_bIEd2hfYFyIHz3vg _d5C_3vbIEd2hfYFyIHz3vg" navigableOwnedEnd="_d5C_3vbIEd2hfYFyIHz3vg"> + <ownedEnd xmi:id="_d5C_2_bIEd2hfYFyIHz3vg" name="source" type="_Q7hZ8I8AEd2TZJhzNZ91vg" association="_d5C_2vbIEd2hfYFyIHz3vg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d5C_3PbIEd2hfYFyIHz3vg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d5C_3fbIEd2hfYFyIHz3vg" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_d5C_3vbIEd2hfYFyIHz3vg" name="target" association="_d5C_2vbIEd2hfYFyIHz3vg"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d5C_3_bIEd2hfYFyIHz3vg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d5C_4PbIEd2hfYFyIHz3vg" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_eNV02vbIEd2hfYFyIHz3vg" name="Association5" memberEnd="_eNV02_bIEd2hfYFyIHz3vg _eNV03vbIEd2hfYFyIHz3vg" navigableOwnedEnd="_eNV03vbIEd2hfYFyIHz3vg"> + <ownedEnd xmi:id="_eNV02_bIEd2hfYFyIHz3vg" name="source" type="_c2ZwIIrlEd2IhLeDKBwRog" association="_eNV02vbIEd2hfYFyIHz3vg"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eNV03PbIEd2hfYFyIHz3vg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eNV03fbIEd2hfYFyIHz3vg" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_eNV03vbIEd2hfYFyIHz3vg" name="target" association="_eNV02vbIEd2hfYFyIHz3vg"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eNV03_bIEd2hfYFyIHz3vg" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eNV04PbIEd2hfYFyIHz3vg" value="1"/> + </ownedEnd> + </packagedElement> + <profileApplication xmi:id="_M2BsIPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_M2CTMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_Cp0X0PWSEdy_h6Mk-BiOHw" name="org.sharengo.utils.container.link.entities"> + <packagedElement xmi:type="uml:Class" xmi:id="_LufsoIroEd2IhLeDKBwRog" name="LinkDefinitionEntity"> + <ownedAttribute xmi:id="_QRR7UIroEd2IhLeDKBwRog" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Sn078IroEd2IhLeDKBwRog" name="directionType" type="_qTVrwIuoEd2EPJQ4AZxy5g"/> + <ownedAttribute xmi:id="_2Kds0NZ9Ed27MNrAVBAOlQ" name="sourceEntityType"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_5icVQNZ9Ed27MNrAVBAOlQ" name="targetEntityType"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_qTVrwIuoEd2EPJQ4AZxy5g" name="LinkDefType"> + <ownedLiteral xmi:id="_9zWHsIuoEd2EPJQ4AZxy5g" name="MASTER_SLAVE"/> + <ownedLiteral xmi:id="_BVHlUIupEd2EPJQ4AZxy5g" name="BIDIRECTIONAL"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_-ercgI5BEd2yq5IM5PZa8A" name="LinkEntity"> + <ownedAttribute xmi:id="_u1klII77Ed2TZJhzNZ91vg" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_6ZEW4I-SEd2qCZRofqgmcQ" name="sourceEntityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_7yZhUI-SEd2qCZRofqgmcQ" name="targetEntityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_V4vTOI5CEd2yq5IM5PZa8A" name="Association1" memberEnd="_V4vTOY5CEd2yq5IM5PZa8A _V4vTPI5CEd2yq5IM5PZa8A" navigableOwnedEnd="_V4vTPI5CEd2yq5IM5PZa8A"> + <ownedEnd xmi:id="_V4vTOY5CEd2yq5IM5PZa8A" name="link" type="_-ercgI5BEd2yq5IM5PZa8A" isUnique="false" aggregation="composite" association="_V4vTOI5CEd2yq5IM5PZa8A"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V4vTOo5CEd2yq5IM5PZa8A" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V4vTO45CEd2yq5IM5PZa8A"/> + </ownedEnd> + <ownedEnd xmi:id="_V4vTPI5CEd2yq5IM5PZa8A" name="definition" type="_LufsoIroEd2IhLeDKBwRog" association="_V4vTOI5CEd2yq5IM5PZa8A"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V4vTPY5CEd2yq5IM5PZa8A" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V4vTPo5CEd2yq5IM5PZa8A" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_fVIIqvaOEd2-MYgc0GvAJw" name="Association2" memberEnd="_fVIIq_aOEd2-MYgc0GvAJw _fVIIrvaOEd2-MYgc0GvAJw" navigableOwnedEnd="_fVIIrvaOEd2-MYgc0GvAJw"> + <ownedEnd xmi:id="_fVIIq_aOEd2-MYgc0GvAJw" name="source" type="_LufsoIroEd2IhLeDKBwRog" association="_fVIIqvaOEd2-MYgc0GvAJw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fVIIrPaOEd2-MYgc0GvAJw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fVIIrfaOEd2-MYgc0GvAJw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_fVIIrvaOEd2-MYgc0GvAJw" name="target" association="_fVIIqvaOEd2-MYgc0GvAJw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fVIIr_aOEd2-MYgc0GvAJw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fVIIsPaOEd2-MYgc0GvAJw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_fsyauvaOEd2-MYgc0GvAJw" name="Association3" memberEnd="_fsyau_aOEd2-MYgc0GvAJw _fsyavvaOEd2-MYgc0GvAJw" navigableOwnedEnd="_fsyavvaOEd2-MYgc0GvAJw"> + <ownedEnd xmi:id="_fsyau_aOEd2-MYgc0GvAJw" name="source" type="_-ercgI5BEd2yq5IM5PZa8A" association="_fsyauvaOEd2-MYgc0GvAJw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fsyavPaOEd2-MYgc0GvAJw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fsyavfaOEd2-MYgc0GvAJw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_fsyavvaOEd2-MYgc0GvAJw" name="target2" association="_fsyauvaOEd2-MYgc0GvAJw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fsyav_aOEd2-MYgc0GvAJw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fsyawPaOEd2-MYgc0GvAJw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_lcE4yvaOEd2-MYgc0GvAJw" name="Association4" memberEnd="_lcE4y_aOEd2-MYgc0GvAJw _lcE4zvaOEd2-MYgc0GvAJw" navigableOwnedEnd="_lcE4zvaOEd2-MYgc0GvAJw"> + <ownedEnd xmi:id="_lcE4y_aOEd2-MYgc0GvAJw" name="source" type="_-ercgI5BEd2yq5IM5PZa8A" association="_lcE4yvaOEd2-MYgc0GvAJw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lcE4zPaOEd2-MYgc0GvAJw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lcE4zfaOEd2-MYgc0GvAJw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_lcE4zvaOEd2-MYgc0GvAJw" name="target" association="_lcE4yvaOEd2-MYgc0GvAJw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lcE4z_aOEd2-MYgc0GvAJw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lcE40PaOEd2-MYgc0GvAJw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_l7buSvaOEd2-MYgc0GvAJw" name="Association5" memberEnd="_l7buS_aOEd2-MYgc0GvAJw _l7buTvaOEd2-MYgc0GvAJw" navigableOwnedEnd="_l7buTvaOEd2-MYgc0GvAJw"> + <ownedEnd xmi:id="_l7buS_aOEd2-MYgc0GvAJw" name="source" type="_LufsoIroEd2IhLeDKBwRog" association="_l7buSvaOEd2-MYgc0GvAJw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l7buTPaOEd2-MYgc0GvAJw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l7buTfaOEd2-MYgc0GvAJw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_l7buTvaOEd2-MYgc0GvAJw" name="target" association="_l7buSvaOEd2-MYgc0GvAJw"> + <type xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l7buT_aOEd2-MYgc0GvAJw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l7buUPaOEd2-MYgc0GvAJw" value="1"/> + </ownedEnd> + </packagedElement> + <profileApplication xmi:id="_NQyVgPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_NQy8kPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_Ulfm4IsGEd2zQqb9w4_QNQ" name="PagedResult<LinkDefinition>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_xeNZII7sEd2TZJhzNZ91vg" name="PagedResult<LinkDefinitionEntity>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_CcXgUI_SEd2HauxSWiOG3w" name="PagedResult<Link>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_a6Z4MJFhEd2KAoS_KFncGw" name="PagedResult<LinkEntity>"/> + <profileApplication xmi:id="_LmCD4PWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_LmFHMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + <profileApplication xmi:id="_Xqq8EKUFEd2k3eK_Lp3Frw"> + <eAnnotations xmi:id="_XqsxQKUFEd2k3eK_Lp3Frw" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://SHARENGO_PROFILES/Sharengo.service.profile.uml#_pCbgIPQ4Ed2_aZMAEjWDNQ"/> + </eAnnotations> + <appliedProfile href="pathmap://SHARENGO_PROFILES/Sharengo.service.profile.uml#_EY2fUKDiEd25boenPflnPQ"/> + </profileApplication> + </uml:Model> + <AcceleoBusiness:Dto xmi:id="_sqYw0IrmEd2IhLeDKBwRog" base_Class="_c2ZwIIrlEd2IhLeDKBwRog"/> + <AcceleoBusiness:Entity xmi:id="_Nc69UIroEd2IhLeDKBwRog" base_Class="_LufsoIroEd2IhLeDKBwRog"/> + <AcceleoBusiness:Dao xmi:id="_o6bbUIroEd2IhLeDKBwRog" base_Class="_fvANkIroEd2IhLeDKBwRog"/> + <AcceleoBusiness:Remote xmi:id="_6KfL4Ir-Ed2zQqb9w4_QNQ"/> + <AcceleoBusiness:Remote xmi:id="_7iO6kIsBEd2zQqb9w4_QNQ"/> + <AcceleoBusiness:Remote xmi:id="_3DY7QIsCEd2zQqb9w4_QNQ"/> + <AcceleoBusiness:Remote xmi:id="_mYnKkIsDEd2zQqb9w4_QNQ"/> + <AcceleoBusiness:Remote xmi:id="_SCrr4IsGEd2zQqb9w4_QNQ"/> + <AcceleoBusiness:Remote xmi:id="_6Yxp0IueEd2EPJQ4AZxy5g"/> + <AcceleoBusiness:Entity xmi:id="_b_To0I5CEd2yq5IM5PZa8A" base_Class="_-ercgI5BEd2yq5IM5PZa8A"/> + <AcceleoBusiness:Entity xmi:id="_cVi-kI5CEd2yq5IM5PZa8A"/> + <AcceleoBusiness:Entity xmi:id="_crXdkI5CEd2yq5IM5PZa8A"/> + <AcceleoBusiness:Dao xmi:id="_A2uWEI7_Ed2TZJhzNZ91vg" base_Class="_2Cf-gI7-Ed2TZJhzNZ91vg"/> + <AcceleoBusiness:Remote xmi:id="_MOvhwI8AEd2TZJhzNZ91vg" base_Operation="_JLjdkI8AEd2TZJhzNZ91vg"/> + <AcceleoBusiness:Dto xmi:id="_SK7MUI8AEd2TZJhzNZ91vg" base_Class="_Q7hZ8I8AEd2TZJhzNZ91vg"/> + <AcceleoBusiness:Remote xmi:id="_O8wewI_SEd2HauxSWiOG3w" base_Operation="_u7JjcI_REd2HauxSWiOG3w"/> + <AcceleoBusiness:Remote xmi:id="_UvqW4JwaEd2jKtVlU3vFlQ" base_Operation="_CDjdEpwaEd2jKtVlU3vFlQ"/> + <AcceleoBusiness:Remote xmi:id="_VMT2oJwaEd2jKtVlU3vFlQ" base_Operation="_DANSkJwaEd2jKtVlU3vFlQ"/> + <AcceleoBusiness:Remote xmi:id="_Bg37sKDZEd2h0IgxKuvUCA" base_Operation="_fOAvcKDYEd2h0IgxKuvUCA"/> + <AcceleoBusiness:Remote xmi:id="_bBfgIKDiEd2h0IgxKuvUCA" base_Operation="_LE8j4KDiEd2h0IgxKuvUCA"/> + <Sharengoserviceprofile:CrudService xmi:id="_ZHZ_0KUFEd2k3eK_Lp3Frw" base_Class="_uY4mEIr-Ed2zQqb9w4_QNQ"/> + <AcceleoBusiness:Remote xmi:id="_l2PJINAWEd2cQYB39pbhsw" base_Operation="_RYHKANAUEd2cQYB39pbhsw"/> + <AcceleoBusiness:Remote xmi:id="_HYukMNAeEd2UY7ZCxznfRg" base_Operation="_EWe7MNAeEd2UY7ZCxznfRg"/> + <AcceleoBusiness:Dto xmi:id="_X9xe0O6yEd2R4ZtD5-VcmA"/> + <AcceleoBusiness:Remote xmi:id="__PrNkO7WEd2R4ZtD5-VcmA" base_Operation="_uDGz4O7WEd2R4ZtD5-VcmA"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_ko7kkPaOEd2-MYgc0GvAJw" base_Association="_fVIIqvaOEd2-MYgc0GvAJw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_pkCMoPaOEd2-MYgc0GvAJw" base_Association="_fsyauvaOEd2-MYgc0GvAJw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_qDK_sPaOEd2-MYgc0GvAJw" base_Association="_l7buSvaOEd2-MYgc0GvAJw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_qiJasPaOEd2-MYgc0GvAJw" base_Association="_lcE4yvaOEd2-MYgc0GvAJw"/> + <Sharengoserviceprofile_1:CrudService xmi:id="_mLIXUPazEd2aF7naIqxcFg" base_Class="_uY4mEIr-Ed2zQqb9w4_QNQ"/> + <AcceleoBusiness:Service xmi:id="_L_i-wPa0Ed2oUNMJWfgZpQ" base_Class="_9FUhAI7-Ed2TZJhzNZ91vg"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_e6hq8PbIEd2hfYFyIHz3vg" base_Association="_cyGl6vbIEd2hfYFyIHz3vg"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_fV6mcPbIEd2hfYFyIHz3vg" base_Association="_eNV02vbIEd2hfYFyIHz3vg"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_fxdS8PbIEd2hfYFyIHz3vg" base_Association="_d5C_2vbIEd2hfYFyIHz3vg"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_gTaJcPbIEd2hfYFyIHz3vg" base_Association="_dTmJavbIEd2hfYFyIHz3vg"/> +</xmi:XMI> diff --git a/eugene/src/test/resources/xmi/2.1/http-storage-api/src/main/uml/conception.uml b/eugene/src/test/resources/xmi/2.1/http-storage-api/src/main/uml/conception.uml new file mode 100644 index 0000000..f9919e7 --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/http-storage-api/src/main/uml/conception.uml @@ -0,0 +1,250 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:AcceleoBusiness="http:///schemas/AcceleoBusiness/_my2ZAHXaEd2S2Y-Jnv-fiQ/2" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http:///schemas/AcceleoBusiness/_my2ZAHXaEd2S2Y-Jnv-fiQ/2 pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"> + <uml:Model xmi:id="_qb8akM37EdqwVrslYOdUDA" name="org::sharengo::s4a::storage::http::api"> + <packagedElement xmi:type="uml:Package" xmi:id="_w8IxIM37EdqwVrslYOdUDA" name="services"> + <packagedElement xmi:type="uml:Interface" xmi:id="_hqBkGO7mEd2ObcIAlNg7-w" name="IHttpStorageSrv"> + <ownedOperation xmi:id="_4-4fwu7oEd2ObcIAlNg7-w" name="getDescription"> + <ownedParameter xmi:id="_VibUkO7wEd2ObcIAlNg7-w" name="return" type="_nstfSO7mEd2ObcIAlNg7-w" direction="return"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_Ji7kEu7tEd2ObcIAlNg7-w" name="getContract"> + <ownedParameter xmi:id="_YMmb0O7wEd2ObcIAlNg7-w" name="return" type="_8lDAGO7mEd2ObcIAlNg7-w" direction="return"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_5C-RYu7vEd2ObcIAlNg7-w" name="createFileEntry"> + <ownedParameter xmi:id="__F19UO7wEd2ObcIAlNg7-w" name="return" type="_e_H4iO7wEd2ObcIAlNg7-w" direction="return"/> + <ownedParameter xmi:id="_A9WRgO7xEd2ObcIAlNg7-w" name="fileEntry" type="_e_H4iO7wEd2ObcIAlNg7-w"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_6rIiAu7vEd2ObcIAlNg7-w" name="deleteFileEntry"> + <ownedParameter xmi:id="_JWiKAO7xEd2ObcIAlNg7-w" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_FkgfUu7wEd2ObcIAlNg7-w" name="retrieveFileEntry"> + <ownedParameter xmi:id="_OvWBwO7xEd2ObcIAlNg7-w" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_TNwGwO7xEd2ObcIAlNg7-w" name="return" type="_e_H4iO7wEd2ObcIAlNg7-w" direction="return"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_PR4jku7wEd2ObcIAlNg7-w" name="getUploadToken"> + <ownedParameter xmi:id="_V_OI0O7xEd2ObcIAlNg7-w" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_YCgPMO7xEd2ObcIAlNg7-w" name="return" type="_VmNvyO7tEd2ObcIAlNg7-w" direction="return"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_Qe6-cu7wEd2ObcIAlNg7-w" name="getDownloadUrl"> + <ownedParameter xmi:id="_c0bGEO7xEd2ObcIAlNg7-w" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_e3jbcO7xEd2ObcIAlNg7-w" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_kVhLgvELEd2YNfzDP2MSAQ" name="getThumbnailHtmlCode"> + <ownedParameter xmi:id="_XTYVcPEMEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_q5BfUPEMEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_qGUsgvELEd2YNfzDP2MSAQ" name="getViewerHtmlCode"> + <ownedParameter xmi:id="_ZoGKEPEMEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_st_c4PEMEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_wAgzAvELEd2YNfzDP2MSAQ" name="getThumbnailJpegImageUrl"> + <ownedParameter xmi:id="_jnqKgPEMEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_uFT1IPEMEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_TAreUvLGEd2tb4J5u_5Mmg" name="validateUpload"> + <ownedParameter xmi:id="_YoZUwPLGEd2tb4J5u_5Mmg" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_ZK0sYPLGEd2tb4J5u_5Mmg" name="postReponseCode"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_a2jOYPLGEd2tb4J5u_5Mmg" name="postResponseContent"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_cHLIwPLGEd2tb4J5u_5Mmg" name="return" type="_4h1OsPLKEd2CRrN6b1NfLw" direction="return"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + </packagedElement> + <profileApplication xmi:id="_MIURkPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_MIURkfWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_tBzGgPWREdy_h6Mk-BiOHw" name="daos"> + <profileApplication xmi:id="_Mg9bEPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_Mg-CIPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="__PrMMPWREdy_h6Mk-BiOHw" name="dtos"> + <packagedElement xmi:type="uml:Class" xmi:id="_nstfSO7mEd2ObcIAlNg7-w" name="HttpStorageDescription"> + <ownedAttribute xmi:id="_SMBIgO7nEd2ObcIAlNg7-w" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_VZ9EIu7nEd2ObcIAlNg7-w" name="type"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_8lDAGO7mEd2ObcIAlNg7-w" name="HttpStorageContract"> + <ownedAttribute xmi:id="_LpEUsu7uEd2ObcIAlNg7-w" name="maxSize"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_GiMB2O7rEd2ObcIAlNg7-w" name="SupportedFormat"> + <ownedAttribute xmi:id="_IsLNIu7rEd2ObcIAlNg7-w" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_N_Dmku7sEd2ObcIAlNg7-w" name="code"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_ZfoGyO7sEd2ObcIAlNg7-w" name="Association1" memberEnd="_ZfoGye7sEd2ObcIAlNg7-w _ZfoGzO7sEd2ObcIAlNg7-w" navigableOwnedEnd="_ZfoGzO7sEd2ObcIAlNg7-w"> + <ownedEnd xmi:id="_ZfoGye7sEd2ObcIAlNg7-w" name="" type="_8lDAGO7mEd2ObcIAlNg7-w" association="_ZfoGyO7sEd2ObcIAlNg7-w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZfoGyu7sEd2ObcIAlNg7-w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZfoGy-7sEd2ObcIAlNg7-w" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_ZfoGzO7sEd2ObcIAlNg7-w" name="inputFormats" type="_GiMB2O7rEd2ObcIAlNg7-w" association="_ZfoGyO7sEd2ObcIAlNg7-w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZfoGze7sEd2ObcIAlNg7-w" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZfoGzu7sEd2ObcIAlNg7-w" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_6PnyGO7sEd2ObcIAlNg7-w" name="Association2" memberEnd="_6PnyGe7sEd2ObcIAlNg7-w _6PnyHO7sEd2ObcIAlNg7-w" navigableOwnedEnd="_6PnyHO7sEd2ObcIAlNg7-w"> + <ownedEnd xmi:id="_6PnyGe7sEd2ObcIAlNg7-w" name="source" type="_8lDAGO7mEd2ObcIAlNg7-w" association="_6PnyGO7sEd2ObcIAlNg7-w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6PnyGu7sEd2ObcIAlNg7-w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6PnyG-7sEd2ObcIAlNg7-w" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_6PnyHO7sEd2ObcIAlNg7-w" name="outputFormats" type="_GiMB2O7rEd2ObcIAlNg7-w" association="_6PnyGO7sEd2ObcIAlNg7-w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6PnyHe7sEd2ObcIAlNg7-w" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6PnyHu7sEd2ObcIAlNg7-w" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_VmNvyO7tEd2ObcIAlNg7-w" name="HttpTransferToken"> + <ownedAttribute xmi:id="_WvlgsO7vEd2ObcIAlNg7-w" name="url"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_KKBuaO7vEd2ObcIAlNg7-w" name="HttpParameter"> + <ownedAttribute xmi:id="_iUxbIu7vEd2ObcIAlNg7-w" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_i5kxUu7vEd2ObcIAlNg7-w" name="value"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_aoJGqu7vEd2ObcIAlNg7-w" name="Association3" memberEnd="_aoJGq-7vEd2ObcIAlNg7-w _aoJGru7vEd2ObcIAlNg7-w" navigableOwnedEnd="_aoJGru7vEd2ObcIAlNg7-w"> + <ownedEnd xmi:id="_aoJGq-7vEd2ObcIAlNg7-w" name="source" type="_VmNvyO7tEd2ObcIAlNg7-w" association="_aoJGqu7vEd2ObcIAlNg7-w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aoJGrO7vEd2ObcIAlNg7-w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aoJGre7vEd2ObcIAlNg7-w" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_aoJGru7vEd2ObcIAlNg7-w" name="parameters" type="_KKBuaO7vEd2ObcIAlNg7-w" association="_aoJGqu7vEd2ObcIAlNg7-w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aoJGr-7vEd2ObcIAlNg7-w" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aoJGsO7vEd2ObcIAlNg7-w" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_e_H4iO7wEd2ObcIAlNg7-w" name="FileEntry"> + <ownedAttribute xmi:id="_g1SI4u7wEd2ObcIAlNg7-w" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_iVQG0O7wEd2ObcIAlNg7-w" name="fileName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_DmgCgPEJEd2YNfzDP2MSAQ" name="state" type="_FboYJfEJEd2YNfzDP2MSAQ"/> + <ownedAttribute xmi:id="_bfNkEvEJEd2YNfzDP2MSAQ" name="creationDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:id="_M2BsIPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_M2CTMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_Cp0X0PWSEdy_h6Mk-BiOHw" name="entities"> + <profileApplication xmi:id="_NQyVgPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_NQy8kPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_ExHpoO7nEd2ObcIAlNg7-w" name="GenericFormat"> + <ownedLiteral xmi:id="_Ie7_Mu7nEd2ObcIAlNg7-w" name="ALL_FORMAT"/> + <ownedLiteral xmi:id="_LWYGYO7nEd2ObcIAlNg7-w" name="ORIGINAL_INPUT_FORMAT"/> + </packagedElement> + <packagedElement xmi:type="uml:Enumeration" xmi:id="_FboYJfEJEd2YNfzDP2MSAQ" name="FileEntryState"> + <ownedLiteral xmi:id="_IqdEkvEJEd2YNfzDP2MSAQ" name="CREATED"/> + <ownedLiteral xmi:id="_KyM0MvEJEd2YNfzDP2MSAQ" name="UPLOADED"/> + <ownedLiteral xmi:id="_yw6sAvE1Ed2YNfzDP2MSAQ" name="UPLOAD_IN_PROGRESS"/> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_4h1OsPLKEd2CRrN6b1NfLw" name="Boolean"/> + <profileApplication xmi:id="_LmCD4PWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_LmFHMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </uml:Model> + <AcceleoBusiness:Dto xmi:id="_VXIAUO7sEd2ObcIAlNg7-w" base_Class="_GiMB2O7rEd2ObcIAlNg7-w"/> + <AcceleoBusiness:Dto xmi:id="_WCyzgO7sEd2ObcIAlNg7-w" base_Class="_8lDAGO7mEd2ObcIAlNg7-w"/> + <AcceleoBusiness:Dto xmi:id="_WqbbQO7sEd2ObcIAlNg7-w" base_Class="_nstfSO7mEd2ObcIAlNg7-w"/> + <AcceleoBusiness:Dto xmi:id="_pWriAPE8Ed2IhJnrV0PXeg" base_Class="_e_H4iO7wEd2ObcIAlNg7-w"/> + <AcceleoBusiness:Dto xmi:id="_p_zXgPE8Ed2IhJnrV0PXeg" base_Class="_VmNvyO7tEd2ObcIAlNg7-w"/> + <AcceleoBusiness:Dto xmi:id="_qj3t4PE8Ed2IhJnrV0PXeg" base_Class="_KKBuaO7vEd2ObcIAlNg7-w"/> +</xmi:XMI> diff --git a/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.properties b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.properties new file mode 100644 index 0000000..42b117b --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.properties @@ -0,0 +1,7 @@ +useModelAsBaseImports=yes + +useServicePackage=no +useEntityPackage=no +useDaoPackage=no +useDtoPackage=no +useConfigPackage=no \ No newline at end of file diff --git a/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml new file mode 100644 index 0000000..aaba731 --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.uml @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:AcceleoBusiness="http:///schemas/AcceleoBusiness/_my2ZAHXaEd2S2Y-Jnv-fiQ/2" xmlns:Sharengoserviceprofile="http:///schemas/Sharengoserviceprofile/_bMLXQKEQEd2L7a68DRX6Bg/1" xmlns:Sharengoserviceprofile_1="http:///schemas/Sharengoserviceprofile/_pCa5EPQ4Ed2_aZMAEjWDNQ/2" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/um [...] + <uml:Model xmi:id="_qb8akM37EdqwVrslYOdUDA" name="org::sharengo::utils::container::nomenclature"> + <packagedElement xmi:type="uml:Package" xmi:id="_w8IxIM37EdqwVrslYOdUDA" name="org.sharengo.utils.container.nomenclature.services"> + <packagedElement xmi:type="uml:Class" xmi:id="_OKT88KUBEd2nLbvCg8hnUg" name="NomenclatureSrv" clientDependency="_865OI6UBEd2nLbvCg8hnUg _9U5Cg6UBEd2nLbvCg8hnUg _DXnZ86UCEd2nLbvCg8hnUg _nDTZQ7boEd2KrtrRT6fCnw"> + <ownedOperation xmi:id="_wgSO4KXCEd2zDMU8vDJUDQ" name="createRootLevel"> + <ownedParameter xmi:id="_9myyIKXCEd2zDMU8vDJUDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_9pQQQKXCEd2zDMU8vDJUDQ" name="nomenclatureId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_eU6YsKXEEd2zDMU8vDJUDQ" name="levelTitle"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_wwqNMKXCEd2zDMU8vDJUDQ" name="addLevelChild"> + <ownedParameter xmi:id="_GQFjMKXDEd2zDMU8vDJUDQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_GRdcMKXDEd2zDMU8vDJUDQ" name="parentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_G965kKXDEd2zDMU8vDJUDQ" name="childTitle"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_5aLLQKXDEd2zDMU8vDJUDQ" name="getRoots"> + <ownedParameter xmi:id="_QFtIAKXEEd2zDMU8vDJUDQ" name="return" type="_uEJHIKXDEd2zDMU8vDJUDQ" isOrdered="true" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Y4w5EKXEEd2zDMU8vDJUDQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_a624gLffEd2168ohD-3VDw"/> + </ownedParameter> + <ownedParameter xmi:id="_QJhRAKXEEd2zDMU8vDJUDQ" name="nomenclatureId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_LLvIYaXEEd2zDMU8vDJUDQ" name="getChildsOf"> + <ownedParameter xmi:id="_VbwmsKXEEd2zDMU8vDJUDQ" name="return" type="_uEJHIKXDEd2zDMU8vDJUDQ" isOrdered="true" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l1KeEKXEEd2zDMU8vDJUDQ" value="*"/> + </ownedParameter> + <ownedParameter xmi:id="_VfRNsKXEEd2zDMU8vDJUDQ" name="nomenclatureNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_xq4u4KXEEd2zDMU8vDJUDQ" name="removeNode"> + <ownedParameter xmi:id="_2T5hYKXEEd2zDMU8vDJUDQ" name="nomenclatureNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_0rZSgKXEEd2zDMU8vDJUDQ" name="removeNodes"> + <ownedParameter xmi:id="_73UGoKXEEd2zDMU8vDJUDQ" name="nomenclatureNodeIds"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__kQ5gKXEEd2zDMU8vDJUDQ" value="*"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_roQBkKXFEd2zDMU8vDJUDQ" name="getNomenclatureTree"> + <ownedParameter xmi:id="_z0fqQKXFEd2zDMU8vDJUDQ" name="return" type="_TznHsKXFEd2zDMU8vDJUDQ" direction="return"/> + <ownedParameter xmi:id="_2PgUIKXFEd2zDMU8vDJUDQ" name="nomenclatureNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_6qG8kLbvEd2KrtrRT6fCnw" name="updateNode"> + <eAnnotations xmi:id="_Bq9TsLbxEd2KrtrRT6fCnw" source="http://www.topcased.org/documentation"> + <details xmi:id="_Bq96wLbxEd2KrtrRT6fCnw" key="documentation" value="Update a node contained in a nomenclature"/> + </eAnnotations> + <ownedParameter xmi:id="__zaYsLbvEd2KrtrRT6fCnw" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="__2gI8LbvEd2KrtrRT6fCnw" name="newTitle"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_A8dhELcUEd2KeeDiiZ5-bg" name="moveNodeBefore"> + <ownedParameter xmi:id="_K2vY4LcUEd2KeeDiiZ5-bg" name="movedNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_PGmEgLcUEd2KeeDiiZ5-bg" name="otherNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_Dn-sILcUEd2KeeDiiZ5-bg" name="moveNodeAfter"> + <ownedParameter xmi:id="_K2vY4LcUEd2KeeDiiZ5-bg" name="movedNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_PGmEgLcUEd2KeeDiiZ5-bg" name="otherNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_E2kmMLcUEd2KeeDiiZ5-bg" name="setNodePosition"> + <ownedParameter xmi:id="_K2vY4LcUEd2KeeDiiZ5-bg" name="movedNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_PGmEgLcUEd2KeeDiiZ5-bg" name="nodePosition"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_pJaOgMqOEd2OkPIUdMmWyA" name="moveAsChild"> + <ownedParameter xmi:id="_urunkMqOEd2OkPIUdMmWyA" name="movedNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_uyU-0MqOEd2OkPIUdMmWyA" name="targetNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="#_SWv98MqtEd2OkPIUdMmWyA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </ownedOperation> + <ownedOperation xmi:id="_VKxtIM0QEd28dI5dmASfVg" name="findNode"> + <ownedParameter xmi:id="_euzBEM0QEd28dI5dmASfVg" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_kDhDAM0QEd28dI5dmASfVg" name="return" type="_uEJHIKXDEd2zDMU8vDJUDQ" direction="return"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_865OI6UBEd2nLbvCg8hnUg" name="Dependency1" supplier="_yF0iAKUBEd2nLbvCg8hnUg" client="_OKT88KUBEd2nLbvCg8hnUg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_9U5Cg6UBEd2nLbvCg8hnUg" name="Dependency2" supplier="_2IP1oKUBEd2nLbvCg8hnUg" client="_OKT88KUBEd2nLbvCg8hnUg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_DXnZ86UCEd2nLbvCg8hnUg" name="Dependency3" supplier="__a9XIKUBEd2nLbvCg8hnUg" client="_OKT88KUBEd2nLbvCg8hnUg"/> + <packagedElement xmi:type="uml:Dependency" xmi:id="_nDTZQ7boEd2KrtrRT6fCnw" name="Dependency5" client="_OKT88KUBEd2nLbvCg8hnUg"/> + <packagedElement xmi:type="uml:Class" xmi:id="_SWv98MqtEd2OkPIUdMmWyA" name="IncorrectMoveException"> + <generalization xmi:id="_OKs-08quEd2OkPIUdMmWyA"> + <general xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </generalization> + </packagedElement> + <profileApplication xmi:id="_MIURkPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_MIURkfWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_tBzGgPWREdy_h6Mk-BiOHw" name="org.sharengo.utils.container.nomenclature.daos"> + <packagedElement xmi:type="uml:Class" xmi:id="__a9XIKUBEd2nLbvCg8hnUg" name="NomenclatureDao" clientDependency="_AuxvcaUCEd2nLbvCg8hnUg"> + <ownedOperation xmi:id="_j-SpkKWkEd2JF80ZOmiT1A" name="findByName"> + <ownedParameter xmi:id="_l_H44KWkEd2JF80ZOmiT1A" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_uaHIMKWkEd2JF80ZOmiT1A" name="result" type="_2IP1oKUBEd2nLbvCg8hnUg" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_BDR7UKZsEd2hSoU9Ned0VQ" name="findNode"> + <ownedParameter xmi:id="_CtvSAKZsEd2hSoU9Ned0VQ" name="return" type="_bWQHkKZmEd2hSoU9Ned0VQ" direction="return"/> + <ownedParameter xmi:id="_CwcAsKZsEd2hSoU9Ned0VQ" name="nodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_z3JVkKaJEd2Xq_aycuMC1w" name="createNode"> + <ownedParameter xmi:id="_14MAQKaJEd2Xq_aycuMC1w" name="return" type="_bWQHkKZmEd2hSoU9Ned0VQ" direction="return"/> + <ownedParameter xmi:id="_3IcHMKaJEd2Xq_aycuMC1w" name="nodeTitle"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_3Kf8sKaJEd2Xq_aycuMC1w" name="nomenclature" type="_2IP1oKUBEd2nLbvCg8hnUg"/> + <ownedParameter xmi:id="_XirmILe7Ed2h3JVTJeT3sw" name="parentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_RaMcoLcFEd2KeeDiiZ5-bg" name="updateNode"> + <ownedParameter xmi:id="_TmnQ4LcFEd2KeeDiiZ5-bg" name="node" type="_bWQHkKZmEd2hSoU9Ned0VQ"/> + </ownedOperation> + <ownedOperation xmi:id="_N2zvALfBEd2h3JVTJeT3sw" name="incrementIndexesFromNode"> + <ownedParameter xmi:id="_UduYoLfBEd2h3JVTJeT3sw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_UmQpkLfBEd2h3JVTJeT3sw" name="node" type="_bWQHkKZmEd2hSoU9Ned0VQ"/> + </ownedOperation> + <ownedOperation xmi:id="_o7_vcLfIEd2h3JVTJeT3sw" name="incrementIndexesForPosition"> + <ownedParameter xmi:id="_uza10LfIEd2h3JVTJeT3sw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_u9dioLfIEd2h3JVTJeT3sw" name="parentID"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_8gXuALfIEd2h3JVTJeT3sw" name="position"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_1JDI4LfNEd2h3JVTJeT3sw" name="getChilds"> + <ownedParameter xmi:id="_22OcYLfNEd2h3JVTJeT3sw" name="return" type="_bWQHkKZmEd2hSoU9Ned0VQ" isOrdered="true" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7jZWILfNEd2h3JVTJeT3sw" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8NlioLfNEd2h3JVTJeT3sw"/> + </ownedParameter> + <ownedParameter xmi:id="_24j-sLfNEd2h3JVTJeT3sw" name="parentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_9sE-4LoHEd2fLub6PO-GXQ" name="removeNode"> + <ownedParameter xmi:id="_AwX2ULoIEd2fLub6PO-GXQ" name="node" type="_bWQHkKZmEd2hSoU9Ned0VQ"/> + </ownedOperation> + <ownedOperation xmi:id="_bt6rwLoREd2fLub6PO-GXQ" name="getRoots"> + <ownedParameter xmi:id="_d2PqMLoREd2fLub6PO-GXQ" name="nomenclature" type="_2IP1oKUBEd2nLbvCg8hnUg"/> + <ownedParameter xmi:id="_k6Uw8LoREd2fLub6PO-GXQ" name="return" type="_bWQHkKZmEd2hSoU9Ned0VQ" isOrdered="true" direction="return"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ozaiYLoREd2fLub6PO-GXQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oXQx4LoREd2fLub6PO-GXQ"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_bhR6AMqQEd2OkPIUdMmWyA" name="getNextIndexIn"> + <ownedParameter xmi:id="_dLLQAMqQEd2OkPIUdMmWyA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_dNHwwMqQEd2OkPIUdMmWyA" name="nomenclature" type="_2IP1oKUBEd2nLbvCg8hnUg"/> + <ownedParameter xmi:id="_dab0AMqQEd2OkPIUdMmWyA" name="parentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_hgzZIPw4Ed2bV7AHEnJvKw" name="createNode"> + <ownedParameter xmi:id="_mWmDYPw4Ed2bV7AHEnJvKw" name="nodeTitle"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_rBqEUPw4Ed2bV7AHEnJvKw" name="nomenclature" type="_2IP1oKUBEd2nLbvCg8hnUg"/> + <ownedParameter xmi:id="_vINqAPw4Ed2bV7AHEnJvKw" name="parentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_1EVqMPw4Ed2bV7AHEnJvKw" name="externalId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_lJYz8Pw5Ed2bV7AHEnJvKw" name="return" type="_bWQHkKZmEd2hSoU9Ned0VQ" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_Md-70PzWEd2PIPDmB0ur5g" name="findNodeByExternalId"> + <ownedParameter xmi:id="_QsvbQPzWEd2PIPDmB0ur5g" name="return" type="_bWQHkKZmEd2hSoU9Ned0VQ" direction="return"/> + <ownedParameter xmi:id="_S6TfAPzWEd2PIPDmB0ur5g" name="externalNodeId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_AuxvcaUCEd2nLbvCg8hnUg" name="Dependency1" supplier="_2IP1oKUBEd2nLbvCg8hnUg" client="__a9XIKUBEd2nLbvCg8hnUg"/> + <profileApplication xmi:id="_Mg9bEPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_Mg-CIPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_Cp0X0PWSEdy_h6Mk-BiOHw" name="org.sharengo.utils.container.nomenclature.entities"> + <packagedElement xmi:type="uml:Class" xmi:id="_2IP1oKUBEd2nLbvCg8hnUg" name="NomenclatureEntity"> + <ownedAttribute xmi:id="_QMBDEKUOEd2UE9_vp3wznw" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_HrJBIKZhEd2hSoU9Ned0VQ" name="graphId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_bWQHkKZmEd2hSoU9Ned0VQ" name="NomenclatureNodeEntity"> + <ownedAttribute xmi:id="_dXdxYKZmEd2hSoU9Ned0VQ" name="title"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_nYIyQLcTEd2KeeDiiZ5-bg" name="nodeIndex"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_qmLXILe5Ed2h3JVTJeT3sw" name="parentId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_fuboyKZmEd2hSoU9Ned0VQ" name="Association1" memberEnd="_fuboyaZmEd2hSoU9Ned0VQ _fubozKZmEd2hSoU9Ned0VQ" navigableOwnedEnd="_fuboyaZmEd2hSoU9Ned0VQ _fubozKZmEd2hSoU9Ned0VQ"> + <ownedEnd xmi:id="_fuboyaZmEd2hSoU9Ned0VQ" name="nomenclature" type="_2IP1oKUBEd2nLbvCg8hnUg" association="_fuboyKZmEd2hSoU9Ned0VQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fuboyqZmEd2hSoU9Ned0VQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fuboy6ZmEd2hSoU9Ned0VQ" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_fubozKZmEd2hSoU9Ned0VQ" name="nodes" type="_bWQHkKZmEd2hSoU9Ned0VQ" aggregation="shared" association="_fuboyKZmEd2hSoU9Ned0VQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fubozaZmEd2hSoU9Ned0VQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fubozqZmEd2hSoU9Ned0VQ"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_6Wco0fatEd24qc6_yLs78w" name="Association2" memberEnd="_6Wco0vatEd24qc6_yLs78w _6Wco1fatEd24qc6_yLs78w" navigableOwnedEnd="_6Wco1fatEd24qc6_yLs78w"> + <ownedEnd xmi:id="_6Wco0vatEd24qc6_yLs78w" name="source" type="_2IP1oKUBEd2nLbvCg8hnUg" association="_6Wco0fatEd24qc6_yLs78w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6Wco0_atEd24qc6_yLs78w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6Wco1PatEd24qc6_yLs78w" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_6Wco1fatEd24qc6_yLs78w" name="target" association="_6Wco0fatEd24qc6_yLs78w"> + <type xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6Wco1vatEd24qc6_yLs78w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6Wco1_atEd24qc6_yLs78w" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_6wOayvatEd24qc6_yLs78w" name="Association3" memberEnd="_6wOay_atEd24qc6_yLs78w _6wOazvatEd24qc6_yLs78w" navigableOwnedEnd="_6wOazvatEd24qc6_yLs78w"> + <ownedEnd xmi:id="_6wOay_atEd24qc6_yLs78w" name="source" type="_2IP1oKUBEd2nLbvCg8hnUg" association="_6wOayvatEd24qc6_yLs78w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6wOazPatEd24qc6_yLs78w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6wOazfatEd24qc6_yLs78w" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_6wOazvatEd24qc6_yLs78w" name="target" association="_6wOayvatEd24qc6_yLs78w"> + <type xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6wOaz_atEd24qc6_yLs78w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6wOa0PatEd24qc6_yLs78w" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_7KyP2vatEd24qc6_yLs78w" name="Association4" memberEnd="_7KyP2_atEd24qc6_yLs78w _7KyP3vatEd24qc6_yLs78w" navigableOwnedEnd="_7KyP3vatEd24qc6_yLs78w"> + <ownedEnd xmi:id="_7KyP2_atEd24qc6_yLs78w" name="source" type="_bWQHkKZmEd2hSoU9Ned0VQ" association="_7KyP2vatEd24qc6_yLs78w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7KyP3PatEd24qc6_yLs78w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7KyP3fatEd24qc6_yLs78w" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_7KyP3vatEd24qc6_yLs78w" name="target" association="_7KyP2vatEd24qc6_yLs78w"> + <type xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7KyP3_atEd24qc6_yLs78w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7KyP4PatEd24qc6_yLs78w" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_7ojJ6vatEd24qc6_yLs78w" name="Association5" memberEnd="_7ojJ6_atEd24qc6_yLs78w _7ojJ7vatEd24qc6_yLs78w" navigableOwnedEnd="_7ojJ7vatEd24qc6_yLs78w"> + <ownedEnd xmi:id="_7ojJ6_atEd24qc6_yLs78w" name="source" type="_bWQHkKZmEd2hSoU9Ned0VQ" association="_7ojJ6vatEd24qc6_yLs78w"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7ojJ7PatEd24qc6_yLs78w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7ojJ7fatEd24qc6_yLs78w" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_7ojJ7vatEd24qc6_yLs78w" name="target" association="_7ojJ6vatEd24qc6_yLs78w"> + <type xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7ojJ7_atEd24qc6_yLs78w" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7ojJ8PatEd24qc6_yLs78w" value="1"/> + </ownedEnd> + </packagedElement> + <profileApplication xmi:id="_NQyVgPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_NQy8kPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="__PrMMPWREdy_h6Mk-BiOHw" name="org.sharengo.utils.container.nomenclature.dtos"> + <packagedElement xmi:type="uml:Class" xmi:id="_yF0iAKUBEd2nLbvCg8hnUg" name="Nomenclature"> + <ownedAttribute xmi:id="_JJvTIKUOEd2UE9_vp3wznw" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_JzurUqUOEd2UE9_vp3wznw" name="name"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_uEJHIKXDEd2zDMU8vDJUDQ" name="NomenclatureNode"> + <ownedAttribute xmi:id="_yGKLEKXDEd2zDMU8vDJUDQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_yVLegKXDEd2zDMU8vDJUDQ" name="title"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_O2wi8KmFEd2hV_-u0X61lQ" name="hasChild"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Boolean"/> + </ownedAttribute> + <ownedAttribute xmi:id="_vrUwcLcTEd2KeeDiiZ5-bg" name="nodeIndex"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedAttribute> + <ownedAttribute xmi:id="_tCCmQLrSEd2jN8XEkpz7QA" name="parentID"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_TznHsKXFEd2zDMU8vDJUDQ" name="NomenclatureTree"> + <ownedAttribute xmi:id="_a_Yx4KXFEd2zDMU8vDJUDQ" name="node" type="_uEJHIKXDEd2zDMU8vDJUDQ"/> + <ownedAttribute xmi:id="_eHOskKXFEd2zDMU8vDJUDQ" name="childs" type="_TznHsKXFEd2zDMU8vDJUDQ" isOrdered="true"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_juFnYKXFEd2zDMU8vDJUDQ" value="*"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_pdT68PbNEd2So46ZaKFSQw" name="Association1" memberEnd="_pdT68fbNEd2So46ZaKFSQw _pdT69PbNEd2So46ZaKFSQw" navigableOwnedEnd="_pdT69PbNEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_pdT68fbNEd2So46ZaKFSQw" name="source" type="_yF0iAKUBEd2nLbvCg8hnUg" association="_pdT68PbNEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pdT68vbNEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pdT68_bNEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_pdT69PbNEd2So46ZaKFSQw" name="target" association="_pdT68PbNEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pdT69fbNEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pdT69vbNEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_px5q4PbNEd2So46ZaKFSQw" name="Association2" memberEnd="_px5q4fbNEd2So46ZaKFSQw _px5q5PbNEd2So46ZaKFSQw" navigableOwnedEnd="_px5q5PbNEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_px5q4fbNEd2So46ZaKFSQw" name="source" type="_yF0iAKUBEd2nLbvCg8hnUg" association="_px5q4PbNEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_px5q4vbNEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_px5q4_bNEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_px5q5PbNEd2So46ZaKFSQw" name="target" association="_px5q4PbNEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_px5q5fbNEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_px5q5vbNEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_qC1p6vbNEd2So46ZaKFSQw" name="Association3" memberEnd="_qC1p6_bNEd2So46ZaKFSQw _qC1p7vbNEd2So46ZaKFSQw" navigableOwnedEnd="_qC1p7vbNEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_qC1p6_bNEd2So46ZaKFSQw" name="source" type="_uEJHIKXDEd2zDMU8vDJUDQ" association="_qC1p6vbNEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qC1p7PbNEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qC1p7fbNEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_qC1p7vbNEd2So46ZaKFSQw" name="target" association="_qC1p6vbNEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qC1p7_bNEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qC1p8PbNEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_qbFx2vbNEd2So46ZaKFSQw" name="Association4" memberEnd="_qbFx2_bNEd2So46ZaKFSQw _qbFx3vbNEd2So46ZaKFSQw" navigableOwnedEnd="_qbFx3vbNEd2So46ZaKFSQw"> + <ownedEnd xmi:id="_qbFx2_bNEd2So46ZaKFSQw" name="source" type="_uEJHIKXDEd2zDMU8vDJUDQ" association="_qbFx2vbNEd2So46ZaKFSQw"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qbFx3PbNEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qbFx3fbNEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_qbFx3vbNEd2So46ZaKFSQw" name="target" association="_qbFx2vbNEd2So46ZaKFSQw"> + <type xmi:type="uml:Class" href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qbFx3_bNEd2So46ZaKFSQw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qbFx4PbNEd2So46ZaKFSQw" value="1"/> + </ownedEnd> + </packagedElement> + <profileApplication xmi:id="_M2BsIPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_M2CTMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <profileApplication xmi:id="_LmCD4PWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_LmFHMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + <profileApplication xmi:id="_qGSfoKUBEd2nLbvCg8hnUg"> + <eAnnotations xmi:id="_qGYmQKUBEd2nLbvCg8hnUg" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://SHARENGO_PROFILES/Sharengo.service.profile.uml#_pCbgIPQ4Ed2_aZMAEjWDNQ"/> + </eAnnotations> + <appliedProfile href="pathmap://SHARENGO_PROFILES/Sharengo.service.profile.uml#_EY2fUKDiEd25boenPflnPQ"/> + </profileApplication> + </uml:Model> + <Sharengoserviceprofile:CrudService xmi:id="_shxqoKUBEd2nLbvCg8hnUg" base_Class="_OKT88KUBEd2nLbvCg8hnUg"/> + <AcceleoBusiness:Dto xmi:id="_60N1gKUBEd2nLbvCg8hnUg" base_Class="_yF0iAKUBEd2nLbvCg8hnUg"/> + <AcceleoBusiness:Entity xmi:id="_7jad0KUBEd2nLbvCg8hnUg" base_Class="_2IP1oKUBEd2nLbvCg8hnUg"/> + <AcceleoBusiness:Dao xmi:id="_BFMrYKUCEd2nLbvCg8hnUg" base_Class="__a9XIKUBEd2nLbvCg8hnUg"/> + <AcceleoBusiness:Remote xmi:id="_GW51kKUCEd2nLbvCg8hnUg"/> + <AcceleoBusiness:Remote xmi:id="_SyqS8KXDEd2zDMU8vDJUDQ" base_Operation="_wgSO4KXCEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Remote xmi:id="_TRsYUKXDEd2zDMU8vDJUDQ" base_Operation="_wwqNMKXCEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Dto xmi:id="_2B3LoKXDEd2zDMU8vDJUDQ" base_Class="_uEJHIKXDEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Remote xmi:id="_OK9SkKXEEd2zDMU8vDJUDQ" base_Operation="_5aLLQKXDEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Remote xmi:id="_OpY7AKXEEd2zDMU8vDJUDQ" base_Operation="_LLvIYaXEEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Remote xmi:id="_Ay5P0KXFEd2zDMU8vDJUDQ" base_Operation="_xq4u4KXEEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Remote xmi:id="_BKROAKXFEd2zDMU8vDJUDQ" base_Operation="_0rZSgKXEEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Dto xmi:id="_aLRNUKXFEd2zDMU8vDJUDQ" base_Class="_TznHsKXFEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Remote xmi:id="_1jPrEKXFEd2zDMU8vDJUDQ" base_Operation="_roQBkKXFEd2zDMU8vDJUDQ"/> + <AcceleoBusiness:Entity xmi:id="_COVrIKZqEd2hSoU9Ned0VQ" base_Class="_bWQHkKZmEd2hSoU9Ned0VQ"/> + <AcceleoBusiness:Dto xmi:id="_glncwLbrEd2KrtrRT6fCnw"/> + <AcceleoBusiness:Remote xmi:id="_PaDWYLbwEd2KrtrRT6fCnw" base_Operation="_6qG8kLbvEd2KrtrRT6fCnw"/> + <AcceleoBusiness:Remote xmi:id="_ImDIoLcUEd2KeeDiiZ5-bg" base_Operation="_A8dhELcUEd2KeeDiiZ5-bg"/> + <AcceleoBusiness:Remote xmi:id="_JDnOYLcUEd2KeeDiiZ5-bg" base_Operation="_Dn-sILcUEd2KeeDiiZ5-bg"/> + <AcceleoBusiness:Remote xmi:id="_JgmsYLcUEd2KeeDiiZ5-bg" base_Operation="_E2kmMLcUEd2KeeDiiZ5-bg"/> + <AcceleoBusiness:Remote xmi:id="_sHVYMMqOEd2OkPIUdMmWyA" base_Operation="_pJaOgMqOEd2OkPIUdMmWyA"/> + <AcceleoBusiness:Remote xmi:id="_YmC6IM0QEd28dI5dmASfVg" base_Operation="_VKxtIM0QEd28dI5dmASfVg"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_BS3BUPauEd24qc6_yLs78w" base_Association="_6Wco0fatEd24qc6_yLs78w"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_BzC9QPauEd24qc6_yLs78w" base_Association="_7KyP2vatEd24qc6_yLs78w"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_CSfSUPauEd24qc6_yLs78w" base_Association="_7ojJ6vatEd24qc6_yLs78w"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_DAfn0PauEd24qc6_yLs78w" base_Association="_6wOayvatEd24qc6_yLs78w"/> + <Sharengoserviceprofile_1:CrudService xmi:id="_atiaAPawEd2aF7naIqxcFg" base_Class="_OKT88KUBEd2nLbvCg8hnUg"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_sOmW0PbNEd2So46ZaKFSQw" base_Association="_pdT68PbNEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_soju8PbNEd2So46ZaKFSQw" base_Association="_qbFx2vbNEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_tBH_8PbNEd2So46ZaKFSQw" base_Association="_px5q4PbNEd2So46ZaKFSQw"/> + <Sharengoserviceprofile_1:Embedded xmi:id="_ths9cPbNEd2So46ZaKFSQw" base_Association="_qC1p6vbNEd2So46ZaKFSQw"/> +</xmi:XMI> diff --git a/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.umldi b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.umldi new file mode 100644 index 0000000..58f9d7f --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.container.nomenclature/src/main/uml/conception.umldi @@ -0,0 +1,853 @@ +<?xml version="1.0" encoding="UTF-8"?> +<diagrams:Diagrams xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.topcased.org/DI/1.0" xmlns:diagrams="http://www.topcased.org/Diagrams/1.0" xmi:id="_cd3aIPWREdy_h6Mk-BiOHw" activeDiagram="_KWzjgPatEd24qc6_yLs78w"> + <model href="conception.uml#_qb8akM37EdqwVrslYOdUDA"/> + <diagrams xmi:id="_CP4_cPWTEdy_h6Mk-BiOHw" position="0,0" size="100,100" name="Package Overview" viewport="0,6"> + <property xmi:id="_CQUdQPWTEdy_h6Mk-BiOHw" key="pageFormatName" value="A4"/> + <property xmi:id="_CQUdQfWTEdy_h6Mk-BiOHw" key="diagramWidth" value="840"/> + <property xmi:id="_CQUdQvWTEdy_h6Mk-BiOHw" key="diagramHeight" value="1188"/> + <property xmi:id="_CQUdQ_WTEdy_h6Mk-BiOHw" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_CQUdRPWTEdy_h6Mk-BiOHw" key="diagramTopMargin" value="20"/> + <property xmi:id="_CQUdRfWTEdy_h6Mk-BiOHw" key="diagramBottomMargin" value="20"/> + <property xmi:id="_CQUdRvWTEdy_h6Mk-BiOHw" key="diagramLeftMargin" value="20"/> + <property xmi:id="_CQUdR_WTEdy_h6Mk-BiOHw" key="diagramRightMargin" value="20"/> + <property xmi:id="_CQUdSPWTEdy_h6Mk-BiOHw" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_CP4_cfWTEdy_h6Mk-BiOHw" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception.uml#_qb8akM37EdqwVrslYOdUDA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_CiytUPWTEdy_h6Mk-BiOHw" position="54,172" size="561,127"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_CiytUfWTEdy_h6Mk-BiOHw" presentation="default"> + <element href="conception.uml#_w8IxIM37EdqwVrslYOdUDA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_OJ8wkKUBEd2nLbvCg8hnUg" position="6,25" size="178,-1"> + <anchorage xmi:id="_86aF8KUBEd2nLbvCg8hnUg" graphEdge="_865OIKUBEd2nLbvCg8hnUg _9U5CgKUBEd2nLbvCg8hnUg _DXnZ8KUCEd2nLbvCg8hnUg"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_OJ8wkaUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_OJ8wkqUBEd2nLbvCg8hnUg"> + <property xmi:id="_OJ8wk6UBEd2nLbvCg8hnUg" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_OJ8wlKUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_OJ8wlaUBEd2nLbvCg8hnUg"> + <property xmi:id="_OJ8wlqUBEd2nLbvCg8hnUg" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_OJ8wl6UBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_C1ow0PWTEdy_h6Mk-BiOHw" position="53,321" size="565,153"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_C1ow0fWTEdy_h6Mk-BiOHw" presentation="default"> + <element href="conception.uml#_tBzGgPWREdy_h6Mk-BiOHw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="__a8JAKUBEd2nLbvCg8hnUg" position="10,17" size="174,-1"> + <anchorage xmi:id="_AuvTMKUCEd2nLbvCg8hnUg" graphEdge="_AuxIYKUCEd2nLbvCg8hnUg _DXnZ8KUCEd2nLbvCg8hnUg"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="__a8JAaUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="__a8JAqUBEd2nLbvCg8hnUg"> + <property xmi:id="__a8JA6UBEd2nLbvCg8hnUg" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="__a8JBKUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="__a8JBaUBEd2nLbvCg8hnUg"> + <property xmi:id="__a8JBqUBEd2nLbvCg8hnUg" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="__a8JB6UBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_DYMrUPWTEdy_h6Mk-BiOHw" position="59,505" size="559,167"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_DYMrUfWTEdy_h6Mk-BiOHw" presentation="default"> + <element href="conception.uml#_Cp0X0PWSEdy_h6Mk-BiOHw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_2IPOkKUBEd2nLbvCg8hnUg" position="9,31" size="167,-1"> + <anchorage xmi:id="_9U4bcKUBEd2nLbvCg8hnUg" graphEdge="_9U5CgKUBEd2nLbvCg8hnUg _AuxIYKUCEd2nLbvCg8hnUg _fubowKZmEd2hSoU9Ned0VQ"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_2IPOkaUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_2IP1oKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_2IPOkqUBEd2nLbvCg8hnUg"> + <property xmi:id="_2IPOk6UBEd2nLbvCg8hnUg" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_2IPOlKUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_2IP1oKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_2IPOlaUBEd2nLbvCg8hnUg"> + <property xmi:id="_2IPOlqUBEd2nLbvCg8hnUg" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_2IPOl6UBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_2IP1oKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_bWMdMKZmEd2hSoU9Ned0VQ" position="324,32" size="224,-1"> + <anchorage xmi:id="_fubBsKZmEd2hSoU9Ned0VQ" graphEdge="_fubowKZmEd2hSoU9Ned0VQ"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bWNEQKZmEd2hSoU9Ned0VQ" presentation="default"> + <element href="conception.uml#_bWQHkKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_bWNEQaZmEd2hSoU9Ned0VQ"> + <property xmi:id="_bWNEQqZmEd2hSoU9Ned0VQ" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bWNEQ6ZmEd2hSoU9Ned0VQ" presentation="default"> + <element href="conception.uml#_bWQHkKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_bWNERKZmEd2hSoU9Ned0VQ"> + <property xmi:id="_bWNERaZmEd2hSoU9Ned0VQ" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bWNERqZmEd2hSoU9Ned0VQ" presentation="default"> + <element href="conception.uml#_bWQHkKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_fubowKZmEd2hSoU9Ned0VQ" anchor="_9U4bcKUBEd2nLbvCg8hnUg _fubBsKZmEd2hSoU9Ned0VQ"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_fubowaZmEd2hSoU9Ned0VQ" presentation="default"> + <element href="conception.uml#_fuboyKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_fubowqZmEd2hSoU9Ned0VQ" id="srcNameEdgeObject" uDistance="25" vDistance="-8"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_fubow6ZmEd2hSoU9Ned0VQ" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_fuboxKZmEd2hSoU9Ned0VQ" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_fuboxaZmEd2hSoU9Ned0VQ" id="targetCountEdgeObject" uDistance="-1" vDistance="9"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_fuboxqZmEd2hSoU9Ned0VQ" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_fubox6ZmEd2hSoU9Ned0VQ" id="stereotypeEdgeObject" offset="0,-10"/> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_865OIKUBEd2nLbvCg8hnUg" anchor="_86aF8KUBEd2nLbvCg8hnUg _86atAKUBEd2nLbvCg8hnUg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_865OIaUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_865OI6UBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_865OIqUBEd2nLbvCg8hnUg" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_9U5CgKUBEd2nLbvCg8hnUg" anchor="_86aF8KUBEd2nLbvCg8hnUg _9U4bcKUBEd2nLbvCg8hnUg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9U5CgaUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_9U5Cg6UBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_9U5CgqUBEd2nLbvCg8hnUg" id="stereotypeEdgeObject"/> + <waypoints>[-117, 0, -119, -348]</waypoints> + <waypoints>[-117, 348, -119, 0]</waypoints> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_AuxIYKUCEd2nLbvCg8hnUg" anchor="_AuvTMKUCEd2nLbvCg8hnUg _9U4bcKUBEd2nLbvCg8hnUg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_AuxIYaUCEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_AuxvcaUCEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_AuxvcKUCEd2nLbvCg8hnUg" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_DXnZ8KUCEd2nLbvCg8hnUg" anchor="_86aF8KUBEd2nLbvCg8hnUg _AuvTMKUCEd2nLbvCg8hnUg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_DXnZ8aUCEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_DXnZ86UCEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_DXnZ8qUCEd2nLbvCg8hnUg" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_DGWtYPWTEdy_h6Mk-BiOHw" position="52,15" size="559,139"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_DGWtYfWTEdy_h6Mk-BiOHw" presentation="default"> + <element href="conception.uml#__PrMMPWREdy_h6Mk-BiOHw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_yFzT4KUBEd2nLbvCg8hnUg" position="9,28" size="158,-1"> + <anchorage xmi:id="_86atAKUBEd2nLbvCg8hnUg" graphEdge="_865OIKUBEd2nLbvCg8hnUg"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yFzT4aUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_yFzT4qUBEd2nLbvCg8hnUg"> + <property xmi:id="_yFzT46UBEd2nLbvCg8hnUg" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yFzT5KUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_yFz68KUBEd2nLbvCg8hnUg"> + <property xmi:id="_yFz68aUBEd2nLbvCg8hnUg" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yFz68qUBEd2nLbvCg8hnUg" presentation="default"> + <element href="conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_uD7rwKXDEd2zDMU8vDJUDQ" position="185,26" size="158,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_uD7rwaXDEd2zDMU8vDJUDQ" presentation="default"> + <element href="conception.uml#_uEJHIKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_uD7rwqXDEd2zDMU8vDJUDQ"> + <property xmi:id="_uD7rw6XDEd2zDMU8vDJUDQ" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_uD7rxKXDEd2zDMU8vDJUDQ" presentation="default"> + <element href="conception.uml#_uEJHIKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_uD7rxaXDEd2zDMU8vDJUDQ"> + <property xmi:id="_uD7rxqXDEd2zDMU8vDJUDQ" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_uD7rx6XDEd2zDMU8vDJUDQ" presentation="default"> + <element href="conception.uml#_uEJHIKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Tzl5kKXFEd2zDMU8vDJUDQ" position="356,25" size="173,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Tzl5kaXFEd2zDMU8vDJUDQ" presentation="default"> + <element href="conception.uml#_TznHsKXFEd2zDMU8vDJUDQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_Tzl5kqXFEd2zDMU8vDJUDQ"> + <property xmi:id="_Tzl5k6XFEd2zDMU8vDJUDQ" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Tzl5lKXFEd2zDMU8vDJUDQ" presentation="default"> + <element href="conception.uml#_TznHsKXFEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Tzl5laXFEd2zDMU8vDJUDQ"> + <property xmi:id="_Tzl5lqXFEd2zDMU8vDJUDQ" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Tzl5l6XFEd2zDMU8vDJUDQ" presentation="default"> + <element href="conception.uml#_TznHsKXFEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + </contained> + </contained> + </diagrams> + <subdiagrams xmi:id="_blzJsPWREdy_h6Mk-BiOHw"> + <model href="conception.uml#_w8IxIM37EdqwVrslYOdUDA"/> + <diagrams xmi:id="_PvEKAMqtEd2OkPIUdMmWyA" position="0,0" size="100,100" name="services" viewport="0,0"> + <property xmi:id="_Pvp_4MqtEd2OkPIUdMmWyA" key="pageFormatName" value="A4"/> + <property xmi:id="_Pvp_4cqtEd2OkPIUdMmWyA" key="diagramWidth" value="840"/> + <property xmi:id="_Pvp_4sqtEd2OkPIUdMmWyA" key="diagramHeight" value="1188"/> + <property xmi:id="_Pvp_48qtEd2OkPIUdMmWyA" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_Pvp_5MqtEd2OkPIUdMmWyA" key="diagramTopMargin" value="20"/> + <property xmi:id="_Pvp_5cqtEd2OkPIUdMmWyA" key="diagramBottomMargin" value="20"/> + <property xmi:id="_Pvp_5sqtEd2OkPIUdMmWyA" key="diagramLeftMargin" value="20"/> + <property xmi:id="_Pvp_58qtEd2OkPIUdMmWyA" key="diagramRightMargin" value="20"/> + <property xmi:id="_Pvp_6MqtEd2OkPIUdMmWyA" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PvEKAcqtEd2OkPIUdMmWyA" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception.uml#_w8IxIM37EdqwVrslYOdUDA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_PwUHMMqtEd2OkPIUdMmWyA" position="10,11" size="658,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwUHMcqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_PwUHMsqtEd2OkPIUdMmWyA"> + <property xmi:id="_PwUHM8qtEd2OkPIUdMmWyA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwUHNMqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwUHNcqtEd2OkPIUdMmWyA"> + <property xmi:id="_PwUHNsqtEd2OkPIUdMmWyA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwUHN8qtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_OKT88KUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_PwWjcMqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwWjccqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_wgSO4KXCEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwWjcsqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwWjc8qtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_wwqNMKXCEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwWjdMqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwWjdcqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_5aLLQKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwXKgMqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwXKgcqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_LLvIYaXEEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwXKgsqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwXKg8qtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_xq4u4KXEEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwXKhMqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwXKhcqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_0rZSgKXEEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwXKhsqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwXKh8qtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_roQBkKXFEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwXxkMqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwXxkcqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_6qG8kLbvEd2KrtrRT6fCnw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwXxksqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwXxk8qtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_A8dhELcUEd2KeeDiiZ5-bg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwXxlMqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwXxlcqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_Dn-sILcUEd2KeeDiiZ5-bg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwXxlsqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwXxl8qtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_E2kmMLcUEd2KeeDiiZ5-bg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PwYYoMqtEd2OkPIUdMmWyA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PwYYocqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_pJaOgMqOEd2OkPIUdMmWyA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_xvQk0M0REd28dI5dmASfVg" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_xvQk0c0REd28dI5dmASfVg" presentation="default"> + <element href="conception.uml#_VKxtIM0QEd28dI5dmASfVg"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_SWffQMqtEd2OkPIUdMmWyA" position="37,468" size="206,-1"> + <anchorage xmi:id="_OKm4MMquEd2OkPIUdMmWyA" graphEdge="_OKs-0MquEd2OkPIUdMmWyA"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_SWffQcqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_SWv98MqtEd2OkPIUdMmWyA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_SWffQsqtEd2OkPIUdMmWyA"> + <property xmi:id="_SWffQ8qtEd2OkPIUdMmWyA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_SWffRMqtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_SWv98MqtEd2OkPIUdMmWyA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_SWffRcqtEd2OkPIUdMmWyA"> + <property xmi:id="_SWffRsqtEd2OkPIUdMmWyA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_SWffR8qtEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_SWv98MqtEd2OkPIUdMmWyA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_M4Ti0MquEd2OkPIUdMmWyA" position="33,337" size="212,-1"> + <anchorage xmi:id="_OKm4McquEd2OkPIUdMmWyA" graphEdge="_OKs-0MquEd2OkPIUdMmWyA"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_M4Ti0cquEd2OkPIUdMmWyA" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_M4Ti0squEd2OkPIUdMmWyA"> + <property xmi:id="_M4Ti08quEd2OkPIUdMmWyA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_M4Ti1MquEd2OkPIUdMmWyA" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_M4Ti1cquEd2OkPIUdMmWyA"> + <property xmi:id="_M4Ti1squEd2OkPIUdMmWyA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_M4Ti18quEd2OkPIUdMmWyA" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_OKs-0MquEd2OkPIUdMmWyA" anchor="_OKm4MMquEd2OkPIUdMmWyA _OKm4McquEd2OkPIUdMmWyA"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_OKs-0cquEd2OkPIUdMmWyA" presentation="default"> + <element href="conception.uml#_OKs-08quEd2OkPIUdMmWyA"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_OKs-0squEd2OkPIUdMmWyA" id="stereotypeEdgeObject"/> + </contained> + </diagrams> + </subdiagrams> + <subdiagrams xmi:id="_08VmAPasEd24qc6_yLs78w"> + <model href="conception.uml#__PrMMPWREdy_h6Mk-BiOHw"/> + <diagrams xmi:id="_08XbMPasEd24qc6_yLs78w" position="0,0" size="100,100" name="dtos" viewport="0,0"> + <property xmi:id="_08jocPasEd24qc6_yLs78w" key="pageFormatName" value="A4"/> + <property xmi:id="_08jocfasEd24qc6_yLs78w" key="diagramWidth" value="840"/> + <property xmi:id="_08jocvasEd24qc6_yLs78w" key="diagramHeight" value="1188"/> + <property xmi:id="_08joc_asEd24qc6_yLs78w" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_08jodPasEd24qc6_yLs78w" key="diagramTopMargin" value="20"/> + <property xmi:id="_08jodfasEd24qc6_yLs78w" key="diagramBottomMargin" value="20"/> + <property xmi:id="_08jodvasEd24qc6_yLs78w" key="diagramLeftMargin" value="20"/> + <property xmi:id="_08jod_asEd24qc6_yLs78w" key="diagramRightMargin" value="20"/> + <property xmi:id="_08joePasEd24qc6_yLs78w" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_08XbMfasEd24qc6_yLs78w" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception.uml#__PrMMPWREdy_h6Mk-BiOHw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_5tMF4PasEd24qc6_yLs78w" position="81,33" size="158,-1"> + <anchorage xmi:id="_pdSFwPbNEd2So46ZaKFSQw" graphEdge="_pdTT4PbNEd2So46ZaKFSQw _px5D0PbNEd2So46ZaKFSQw"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5tMF4fasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_5tMF4vasEd24qc6_yLs78w"> + <property xmi:id="_5tMF4_asEd24qc6_yLs78w" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5tMF5PasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_5tNUAPasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5tNUAfasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_JJvTIKUOEd2UE9_vp3wznw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_5tN7EPasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5tN7EfasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_JzurUqUOEd2UE9_vp3wznw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_5tMF5fasEd24qc6_yLs78w"> + <property xmi:id="_5tMF5vasEd24qc6_yLs78w" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5tMF5_asEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_yF0iAKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6BsWQPasEd24qc6_yLs78w" position="444,30" size="158,-1"> + <anchorage xmi:id="_qC0bwPbNEd2So46ZaKFSQw" graphEdge="_qC1p4PbNEd2So46ZaKFSQw _qbFx0PbNEd2So46ZaKFSQw"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6BsWQfasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_uEJHIKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_6BsWQvasEd24qc6_yLs78w"> + <property xmi:id="_6BsWQ_asEd24qc6_yLs78w" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6BsWRPasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_uEJHIKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_6Bs9UPasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6Bs9UfasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_yGKLEKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6Bs9UvasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6Bs9U_asEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_yVLegKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6BtkYvasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6BtkY_asEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_O2wi8KmFEd2hV_-u0X61lQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6BuLcPasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6BuLcfasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_vrUwcLcTEd2KeeDiiZ5-bg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6BuLcvasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6BuLc_asEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_tCCmQLrSEd2jN8XEkpz7QA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6BsWRfasEd24qc6_yLs78w"> + <property xmi:id="_6BsWRvasEd24qc6_yLs78w" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6BsWR_asEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_uEJHIKXDEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6XEJUPasEd24qc6_yLs78w" position="157,526" size="360,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6XEJUfasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_TznHsKXFEd2zDMU8vDJUDQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_6XEJUvasEd24qc6_yLs78w"> + <property xmi:id="_6XEJU_asEd24qc6_yLs78w" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6XEJVPasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_TznHsKXFEd2zDMU8vDJUDQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_6XEwYPasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6XEwYfasEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_a_Yx4KXFEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6XEwYvasEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6XEwY_asEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_eHOskKXFEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6XEJVfasEd24qc6_yLs78w"> + <property xmi:id="_6XEJVvasEd24qc6_yLs78w" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6XEJV_asEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_TznHsKXFEd2zDMU8vDJUDQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_k3SLAPbNEd2So46ZaKFSQw" position="24,344" size="273,-1"> + <anchorage xmi:id="_pdSFwfbNEd2So46ZaKFSQw" graphEdge="_pdTT4PbNEd2So46ZaKFSQw _qC1p4PbNEd2So46ZaKFSQw"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_k3SLAfbNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_k3SLAvbNEd2So46ZaKFSQw"> + <property xmi:id="_k3SLA_bNEd2So46ZaKFSQw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_k3SLBPbNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_k3TZIPbNEd2So46ZaKFSQw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_k3TZIfbNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4vaMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_k3UAMPbNEd2So46ZaKFSQw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_k3UAMfbNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4_aMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_k3SLBfbNEd2So46ZaKFSQw"> + <property xmi:id="_k3SLBvbNEd2So46ZaKFSQw" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_k3SLB_bNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_lOJy4PbNEd2So46ZaKFSQw" position="386,344" size="273,-1"> + <anchorage xmi:id="_px4cwPbNEd2So46ZaKFSQw" graphEdge="_px5D0PbNEd2So46ZaKFSQw _qbFx0PbNEd2So46ZaKFSQw"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_lOJy4fbNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_lOJy4vbNEd2So46ZaKFSQw"> + <property xmi:id="_lOJy4_bNEd2So46ZaKFSQw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_lOJy5PbNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_lOVZEPbNEd2So46ZaKFSQw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_lOVZEfbNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5faMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_lOVZEvbNEd2So46ZaKFSQw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_lOVZE_bNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5vaMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_lOJy5fbNEd2So46ZaKFSQw"> + <property xmi:id="_lOJy5vbNEd2So46ZaKFSQw" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_lOJy5_bNEd2So46ZaKFSQw" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_pdTT4PbNEd2So46ZaKFSQw" anchor="_pdSFwPbNEd2So46ZaKFSQw _pdSFwfbNEd2So46ZaKFSQw"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_pdTT4fbNEd2So46ZaKFSQw" presentation="default"> + <element href="conception.uml#_pdT68PbNEd2So46ZaKFSQw"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_pdTT4vbNEd2So46ZaKFSQw" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_pdTT4_bNEd2So46ZaKFSQw" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_pdTT5PbNEd2So46ZaKFSQw" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_pdTT5fbNEd2So46ZaKFSQw" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_pdTT5vbNEd2So46ZaKFSQw" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_pdTT5_bNEd2So46ZaKFSQw" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_pdTT6PbNEd2So46ZaKFSQw" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_pdTT6fbNEd2So46ZaKFSQw" id="stereotypeEdgeObject" offset="-76,-11"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_px5D0PbNEd2So46ZaKFSQw" anchor="_pdSFwPbNEd2So46ZaKFSQw _px4cwPbNEd2So46ZaKFSQw"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_px5D0fbNEd2So46ZaKFSQw" presentation="default"> + <element href="conception.uml#_px5q4PbNEd2So46ZaKFSQw"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_px5D0vbNEd2So46ZaKFSQw" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_px5D0_bNEd2So46ZaKFSQw" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_px5D1PbNEd2So46ZaKFSQw" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_px5D1fbNEd2So46ZaKFSQw" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_px5D1vbNEd2So46ZaKFSQw" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_px5D1_bNEd2So46ZaKFSQw" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_px5D2PbNEd2So46ZaKFSQw" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_px5D2fbNEd2So46ZaKFSQw" id="stereotypeEdgeObject" offset="117,38"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_qC1p4PbNEd2So46ZaKFSQw" anchor="_qC0bwPbNEd2So46ZaKFSQw _pdSFwfbNEd2So46ZaKFSQw"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_qC1p4fbNEd2So46ZaKFSQw" presentation="default"> + <element href="conception.uml#_qC1p6vbNEd2So46ZaKFSQw"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qC1p4vbNEd2So46ZaKFSQw" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qC1p4_bNEd2So46ZaKFSQw" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qC1p5PbNEd2So46ZaKFSQw" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qC1p5fbNEd2So46ZaKFSQw" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qC1p5vbNEd2So46ZaKFSQw" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qC1p5_bNEd2So46ZaKFSQw" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_qC1p6PbNEd2So46ZaKFSQw" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_qC1p6fbNEd2So46ZaKFSQw" id="stereotypeEdgeObject" offset="-98,16"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_qbFx0PbNEd2So46ZaKFSQw" anchor="_qC0bwPbNEd2So46ZaKFSQw _px4cwPbNEd2So46ZaKFSQw"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_qbFx0fbNEd2So46ZaKFSQw" presentation="default"> + <element href="conception.uml#_qbFx2vbNEd2So46ZaKFSQw"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qbFx0vbNEd2So46ZaKFSQw" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qbFx0_bNEd2So46ZaKFSQw" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qbFx1PbNEd2So46ZaKFSQw" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qbFx1fbNEd2So46ZaKFSQw" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qbFx1vbNEd2So46ZaKFSQw" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_qbFx1_bNEd2So46ZaKFSQw" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_qbFx2PbNEd2So46ZaKFSQw" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_qbFx2fbNEd2So46ZaKFSQw" id="stereotypeEdgeObject" offset="75,-18"/> + </contained> + </diagrams> + </subdiagrams> + <subdiagrams xmi:id="_KWv5IPatEd24qc6_yLs78w"> + <model href="conception.uml#_tBzGgPWREdy_h6Mk-BiOHw"/> + <diagrams xmi:id="_KWzjgPatEd24qc6_yLs78w" position="0,0" size="100,100" name="daos" viewport="0,0"> + <property xmi:id="_KXKI0PatEd24qc6_yLs78w" key="pageFormatName" value="A4"/> + <property xmi:id="_KXKI0fatEd24qc6_yLs78w" key="diagramWidth" value="840"/> + <property xmi:id="_KXKI0vatEd24qc6_yLs78w" key="diagramHeight" value="1188"/> + <property xmi:id="_KXKI0_atEd24qc6_yLs78w" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_KXKI1PatEd24qc6_yLs78w" key="diagramTopMargin" value="20"/> + <property xmi:id="_KXKI1fatEd24qc6_yLs78w" key="diagramBottomMargin" value="20"/> + <property xmi:id="_KXKI1vatEd24qc6_yLs78w" key="diagramLeftMargin" value="20"/> + <property xmi:id="_KXKI1_atEd24qc6_yLs78w" key="diagramRightMargin" value="20"/> + <property xmi:id="_KXKI2PatEd24qc6_yLs78w" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_KWzjgfatEd24qc6_yLs78w" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception.uml#_tBzGgPWREdy_h6Mk-BiOHw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_MQ2OUPatEd24qc6_yLs78w" position="62,56" size="657,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ2OUfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_MQ2OUvatEd24qc6_yLs78w"> + <property xmi:id="_MQ2OU_atEd24qc6_yLs78w" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ2OVPatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ2OVfatEd24qc6_yLs78w"> + <property xmi:id="_MQ2OVvatEd24qc6_yLs78w" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ2OV_atEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_MQ21YPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ21YfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_j-SpkKWkEd2JF80ZOmiT1A"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ3ccPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ3ccfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_BDR7UKZsEd2hSoU9Ned0VQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ3ccvatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ3cc_atEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_z3JVkKaJEd2Xq_aycuMC1w"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ3cdPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ3cdfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_RaMcoLcFEd2KeeDiiZ5-bg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ4DgPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ4DgfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_N2zvALfBEd2h3JVTJeT3sw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ4DgvatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ4Dg_atEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_o7_vcLfIEd2h3JVTJeT3sw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ4DhPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ4DhfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_1JDI4LfNEd2h3JVTJeT3sw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ4qkPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ4qkfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_9sE-4LoHEd2fLub6PO-GXQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ4qkvatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ4qk_atEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_bt6rwLoREd2fLub6PO-GXQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MQ4qlPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MQ4qlfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_bhR6AMqQEd2OkPIUdMmWyA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_hgM8MPw4Ed2bV7AHEnJvKw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_hgM8Mfw4Ed2bV7AHEnJvKw" presentation="default"> + <element href="conception.uml#_hgzZIPw4Ed2bV7AHEnJvKw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MdiP4PzWEd2PIPDmB0ur5g" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MdiP4fzWEd2PIPDmB0ur5g" presentation="default"> + <element href="conception.uml#_Md-70PzWEd2PIPDmB0ur5g"/> + </semanticModel> + </contained> + </contained> + </contained> + </diagrams> + <subdiagrams xmi:id="_bXbAEPw4Ed2bV7AHEnJvKw"> + <model href="conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + <diagrams xmi:id="_bXbAEfw4Ed2bV7AHEnJvKw" position="0,0" size="100,100" name="unnamed" viewport="0,0"> + <property xmi:id="_bYwc0Pw4Ed2bV7AHEnJvKw" key="pageFormatName" value="A4"/> + <property xmi:id="_bYwc0fw4Ed2bV7AHEnJvKw" key="diagramWidth" value="840"/> + <property xmi:id="_bYwc0vw4Ed2bV7AHEnJvKw" key="diagramHeight" value="1188"/> + <property xmi:id="_bYwc0_w4Ed2bV7AHEnJvKw" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_bYwc1Pw4Ed2bV7AHEnJvKw" key="diagramTopMargin" value="20"/> + <property xmi:id="_bYwc1fw4Ed2bV7AHEnJvKw" key="diagramBottomMargin" value="20"/> + <property xmi:id="_bYwc1vw4Ed2bV7AHEnJvKw" key="diagramLeftMargin" value="20"/> + <property xmi:id="_bYwc1_w4Ed2bV7AHEnJvKw" key="diagramRightMargin" value="20"/> + <property xmi:id="_bYwc2Pw4Ed2bV7AHEnJvKw" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bXbAEvw4Ed2bV7AHEnJvKw" presentation="org.topcased.modeler.uml.compositestructuresdiagram"> + <element href="conception.uml#__a9XIKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </diagrams> + </subdiagrams> + </subdiagrams> + <subdiagrams xmi:id="_Xt9x4PatEd24qc6_yLs78w"> + <model href="conception.uml#_Cp0X0PWSEdy_h6Mk-BiOHw"/> + <diagrams xmi:id="_XuD4gPatEd24qc6_yLs78w" position="0,0" size="100,100" name="entities" viewport="0,0"> + <property xmi:id="_Xubr8PatEd24qc6_yLs78w" key="pageFormatName" value="A4"/> + <property xmi:id="_Xubr8fatEd24qc6_yLs78w" key="diagramWidth" value="840"/> + <property xmi:id="_Xubr8vatEd24qc6_yLs78w" key="diagramHeight" value="1188"/> + <property xmi:id="_Xubr8_atEd24qc6_yLs78w" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_Xubr9PatEd24qc6_yLs78w" key="diagramTopMargin" value="20"/> + <property xmi:id="_XucTAPatEd24qc6_yLs78w" key="diagramBottomMargin" value="20"/> + <property xmi:id="_XucTAfatEd24qc6_yLs78w" key="diagramLeftMargin" value="20"/> + <property xmi:id="_XucTAvatEd24qc6_yLs78w" key="diagramRightMargin" value="20"/> + <property xmi:id="_XucTA_atEd24qc6_yLs78w" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_XuD4gfatEd24qc6_yLs78w" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception.uml#_Cp0X0PWSEdy_h6Mk-BiOHw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ZqQfcPatEd24qc6_yLs78w" position="60,55" size="159,-1"> + <anchorage xmi:id="_Z_AAYPatEd24qc6_yLs78w" graphEdge="_Z_BOgPatEd24qc6_yLs78w _6WcBwPatEd24qc6_yLs78w _6wOawPatEd24qc6_yLs78w"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZqRGgPatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_2IP1oKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ZqRGgfatEd24qc6_yLs78w"> + <property xmi:id="_ZqRGgvatEd24qc6_yLs78w" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZqRGg_atEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_2IP1oKUBEd2nLbvCg8hnUg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ZqRGh_atEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZqRGiPatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_QMBDEKUOEd2UE9_vp3wznw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ZqSUoPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZqSUofatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_HrJBIKZhEd2hSoU9Ned0VQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ZqRGhPatEd24qc6_yLs78w"> + <property xmi:id="_ZqRGhfatEd24qc6_yLs78w" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ZqRGhvatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_2IP1oKUBEd2nLbvCg8hnUg"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Z-4EkPatEd24qc6_yLs78w" position="441,47" size="198,-1"> + <anchorage xmi:id="_Z_AAYfatEd24qc6_yLs78w" graphEdge="_Z_BOgPatEd24qc6_yLs78w _7KyP0PatEd24qc6_yLs78w _7ojJ4PatEd24qc6_yLs78w"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z-4EkfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_bWQHkKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_Z-4EkvatEd24qc6_yLs78w"> + <property xmi:id="_Z-4Ek_atEd24qc6_yLs78w" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z-4ElPatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_bWQHkKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_Z-4roPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z-4rofatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_dXdxYKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Z-5SsPatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z-5SsfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_nYIyQLcTEd2KeeDiiZ5-bg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Z-5SsvatEd24qc6_yLs78w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z-5Ss_atEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_qmLXILe5Ed2h3JVTJeT3sw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Z-4ElfatEd24qc6_yLs78w"> + <property xmi:id="_Z-4ElvatEd24qc6_yLs78w" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z-4El_atEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_bWQHkKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_Z_BOgPatEd24qc6_yLs78w" anchor="_Z_AAYPatEd24qc6_yLs78w _Z_AAYfatEd24qc6_yLs78w"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z_BOgfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_fuboyKZmEd2hSoU9Ned0VQ"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_Z_BOgvatEd24qc6_yLs78w" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_Z_BOg_atEd24qc6_yLs78w" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_Z_BOhPatEd24qc6_yLs78w" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_Z_BOhfatEd24qc6_yLs78w" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_Z_BOhvatEd24qc6_yLs78w" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_Z_BOh_atEd24qc6_yLs78w" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_Z_BOiPatEd24qc6_yLs78w" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_Z_BOifatEd24qc6_yLs78w" id="stereotypeEdgeObject" offset="0,-10"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_yUzGkPatEd24qc6_yLs78w" position="44,293" size="190,-1"> + <anchorage xmi:id="_6WbasPatEd24qc6_yLs78w" graphEdge="_6WcBwPatEd24qc6_yLs78w _7KyP0PatEd24qc6_yLs78w"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yUzGkfatEd24qc6_yLs78w" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_yUzGkvatEd24qc6_yLs78w"> + <property xmi:id="_yUzGk_atEd24qc6_yLs78w" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yUzGlPatEd24qc6_yLs78w" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_yUzGlfatEd24qc6_yLs78w"> + <property xmi:id="_yUzGlvatEd24qc6_yLs78w" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yUzGl_atEd24qc6_yLs78w" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_yr1tkPatEd24qc6_yLs78w" position="413,290" size="252,-1"> + <anchorage xmi:id="_6wNzsPatEd24qc6_yLs78w" graphEdge="_6wOawPatEd24qc6_yLs78w _7ojJ4PatEd24qc6_yLs78w"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yr1tkfatEd24qc6_yLs78w" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_yr1tkvatEd24qc6_yLs78w"> + <property xmi:id="_yr1tk_atEd24qc6_yLs78w" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yr1tlPatEd24qc6_yLs78w" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_yr1tlfatEd24qc6_yLs78w"> + <property xmi:id="_yr1tlvatEd24qc6_yLs78w" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yr1tl_atEd24qc6_yLs78w" presentation="default"> + <element href="../../../../org.sharengo.utils.utils/src/main/uml/conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_6WcBwPatEd24qc6_yLs78w" anchor="_Z_AAYPatEd24qc6_yLs78w _6WbasPatEd24qc6_yLs78w"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6WcBwfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_6Wco0fatEd24qc6_yLs78w"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6WcBwvatEd24qc6_yLs78w" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6WcBw_atEd24qc6_yLs78w" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6WcBxPatEd24qc6_yLs78w" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6WcBxfatEd24qc6_yLs78w" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6WcBxvatEd24qc6_yLs78w" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6WcBx_atEd24qc6_yLs78w" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_6WcByPatEd24qc6_yLs78w" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_6Wco0PatEd24qc6_yLs78w" id="stereotypeEdgeObject" offset="-66,-7"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_6wOawPatEd24qc6_yLs78w" anchor="_Z_AAYPatEd24qc6_yLs78w _6wNzsPatEd24qc6_yLs78w"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6wOawfatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_6wOayvatEd24qc6_yLs78w"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6wOawvatEd24qc6_yLs78w" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6wOaw_atEd24qc6_yLs78w" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6wOaxPatEd24qc6_yLs78w" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6wOaxfatEd24qc6_yLs78w" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6wOaxvatEd24qc6_yLs78w" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_6wOax_atEd24qc6_yLs78w" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_6wOayPatEd24qc6_yLs78w" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_6wOayfatEd24qc6_yLs78w" id="stereotypeEdgeObject" offset="108,10"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_7KyP0PatEd24qc6_yLs78w" anchor="_Z_AAYfatEd24qc6_yLs78w _6WbasPatEd24qc6_yLs78w"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_7KyP0fatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_7KyP2vatEd24qc6_yLs78w"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7KyP0vatEd24qc6_yLs78w" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7KyP0_atEd24qc6_yLs78w" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7KyP1PatEd24qc6_yLs78w" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7KyP1fatEd24qc6_yLs78w" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7KyP1vatEd24qc6_yLs78w" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7KyP1_atEd24qc6_yLs78w" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_7KyP2PatEd24qc6_yLs78w" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_7KyP2fatEd24qc6_yLs78w" id="stereotypeEdgeObject" offset="-105,6"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_7ojJ4PatEd24qc6_yLs78w" anchor="_Z_AAYfatEd24qc6_yLs78w _6wNzsPatEd24qc6_yLs78w"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_7ojJ4fatEd24qc6_yLs78w" presentation="default"> + <element href="conception.uml#_7ojJ6vatEd24qc6_yLs78w"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7ojJ4vatEd24qc6_yLs78w" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7ojJ4_atEd24qc6_yLs78w" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7ojJ5PatEd24qc6_yLs78w" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7ojJ5fatEd24qc6_yLs78w" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7ojJ5vatEd24qc6_yLs78w" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_7ojJ5_atEd24qc6_yLs78w" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_7ojJ6PatEd24qc6_yLs78w" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_7ojJ6fatEd24qc6_yLs78w" id="stereotypeEdgeObject" offset="71,-10"/> + </contained> + </diagrams> + </subdiagrams> +</diagrams:Diagrams> diff --git a/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception-helper.uml b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception-helper.uml new file mode 100644 index 0000000..3dd388d --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception-helper.uml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:AcceleoBusiness="http:///schemas/AcceleoBusiness/_81fAsPWcEdyuYMHNZCqWBQ/0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http:///schemas/AcceleoBusiness/_81fAsPWcEdyuYMHNZCqWBQ/0 pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"> + <uml:Model xmi:id="_qb8akM37EdqwVrslYOdUDA"> + <packagedElement xmi:type="uml:Package" xmi:id="_w8IxIM37EdqwVrslYOdUDA" name="conception-helper"> + <packagedElement xmi:type="uml:Interface" xmi:id="_hFFQ0Hg-Ed2do542yyYrFA" name="Serializable"/> + <packagedElement xmi:type="uml:Class" xmi:id="_cYCF4H2vEd22ZfAQrfk_WQ" name="Collection"/> + <packagedElement xmi:type="uml:Class" xmi:id="_j3qGYKEgEd2PM6_wGJR42Q" name="TechnicalException"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_W6YdYKtBEd2Nmqhc73l7SA" name="LogIdentifier"/> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_Hb8X4PaMEd2-MYgc0GvAJw" name="org.sharengo.utils.utils.embedded"> + <packagedElement xmi:type="uml:Class" xmi:id="_Hb8X4faMEd2-MYgc0GvAJw" name="DatedElement"> + <ownedAttribute xmi:id="_Hb8X4vaMEd2-MYgc0GvAJw" name="creationDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Hb8X4_aMEd2-MYgc0GvAJw" name="updateDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_Hb8X5PaMEd2-MYgc0GvAJw" name="ExternalIdentifiableElement"> + <ownedAttribute xmi:id="_Hb8X5faMEd2-MYgc0GvAJw" name="externalId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Hb8X5vaMEd2-MYgc0GvAJw" name="source"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + </packagedElement> + <profileApplication xmi:id="_i_GGsKEgEd2PM6_wGJR42Q"> + <eAnnotations xmi:id="_i_GGsaEgEd2PM6_wGJR42Q" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </uml:Model> + <AcceleoBusiness:Exception xmi:id="_mLQgsKEgEd2PM6_wGJR42Q" base_Class="_j3qGYKEgEd2PM6_wGJR42Q"/> +</xmi:XMI> diff --git a/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception-helper.umldi b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception-helper.umldi new file mode 100644 index 0000000..277fa8b --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception-helper.umldi @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="UTF-8"?> +<diagrams:Diagrams xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.topcased.org/DI/1.0" xmlns:diagrams="http://www.topcased.org/Diagrams/1.0" xmi:id="_h0-hIPaMEd2-MYgc0GvAJw" activeDiagram="_h1AWUPaMEd2-MYgc0GvAJw"> + <model href="conception-helper.uml#_qb8akM37EdqwVrslYOdUDA"/> + <subdiagrams xmi:id="_4e_d4Hg7Ed2do542yyYrFA" activeDiagram="_4e_d4Xg7Ed2do542yyYrFA"> + <model href="conception-helper.uml#_w8IxIM37EdqwVrslYOdUDA"/> + <diagrams xmi:id="_4e_d4Xg7Ed2do542yyYrFA" position="0,0" size="100,100" name="conception-helper" viewport="0,0"> + <property xmi:id="_4fJ18Hg7Ed2do542yyYrFA" key="pageFormatName" value="A4"/> + <property xmi:id="_4fJ18Xg7Ed2do542yyYrFA" key="diagramWidth" value="840"/> + <property xmi:id="_4fJ18ng7Ed2do542yyYrFA" key="diagramHeight" value="1188"/> + <property xmi:id="_4fJ183g7Ed2do542yyYrFA" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_4fJ19Hg7Ed2do542yyYrFA" key="diagramTopMargin" value="20"/> + <property xmi:id="_4fJ19Xg7Ed2do542yyYrFA" key="diagramBottomMargin" value="20"/> + <property xmi:id="_4fJ19ng7Ed2do542yyYrFA" key="diagramLeftMargin" value="20"/> + <property xmi:id="_4fJ193g7Ed2do542yyYrFA" key="diagramRightMargin" value="20"/> + <property xmi:id="_4fJ1-Hg7Ed2do542yyYrFA" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_4e_d4ng7Ed2do542yyYrFA" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception-helper.uml#_w8IxIM37EdqwVrslYOdUDA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_hFCNgHg-Ed2do542yyYrFA" position="30,30" size="114,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_hFCNgXg-Ed2do542yyYrFA" presentation="default"> + <element href="conception-helper.uml#_hFFQ0Hg-Ed2do542yyYrFA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_hFCNgng-Ed2do542yyYrFA"> + <property xmi:id="_hFCNg3g-Ed2do542yyYrFA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_hFCNhHg-Ed2do542yyYrFA" presentation="default"> + <element href="conception-helper.uml#_hFFQ0Hg-Ed2do542yyYrFA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_hFCNhXg-Ed2do542yyYrFA"> + <property xmi:id="_hFCNhng-Ed2do542yyYrFA" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_hFCNh3g-Ed2do542yyYrFA" presentation="default"> + <element href="conception-helper.uml#_hFFQ0Hg-Ed2do542yyYrFA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_cXzcYH2vEd22ZfAQrfk_WQ" position="163,32" size="86,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_cXzcYX2vEd22ZfAQrfk_WQ" presentation="default"> + <element href="conception-helper.uml#_cYCF4H2vEd22ZfAQrfk_WQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_cXzcYn2vEd22ZfAQrfk_WQ"> + <property xmi:id="_cXzcY32vEd22ZfAQrfk_WQ" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_cXzcZH2vEd22ZfAQrfk_WQ" presentation="default"> + <element href="conception-helper.uml#_cYCF4H2vEd22ZfAQrfk_WQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_cXzcZX2vEd22ZfAQrfk_WQ"> + <property xmi:id="_cXzcZn2vEd22ZfAQrfk_WQ" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_cXzcZ32vEd22ZfAQrfk_WQ" presentation="default"> + <element href="conception-helper.uml#_cYCF4H2vEd22ZfAQrfk_WQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_j3pfUKEgEd2PM6_wGJR42Q" position="110,135" size="152,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_j3pfUaEgEd2PM6_wGJR42Q" presentation="default"> + <element href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_j3pfUqEgEd2PM6_wGJR42Q"> + <property xmi:id="_j3pfU6EgEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_j3pfVKEgEd2PM6_wGJR42Q" presentation="default"> + <element href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_j3pfVaEgEd2PM6_wGJR42Q"> + <property xmi:id="_j3pfVqEgEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_j3pfV6EgEd2PM6_wGJR42Q" presentation="default"> + <element href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_W6X2UKtBEd2Nmqhc73l7SA" position="367,149" size="115,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_W6X2UatBEd2Nmqhc73l7SA" presentation="default"> + <element href="conception-helper.uml#_W6YdYKtBEd2Nmqhc73l7SA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_W6X2UqtBEd2Nmqhc73l7SA"> + <property xmi:id="_W6X2U6tBEd2Nmqhc73l7SA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_W6X2VKtBEd2Nmqhc73l7SA" presentation="default"> + <element href="conception-helper.uml#_W6YdYKtBEd2Nmqhc73l7SA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_W6X2VatBEd2Nmqhc73l7SA"> + <property xmi:id="_W6X2VqtBEd2Nmqhc73l7SA" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_W6X2V6tBEd2Nmqhc73l7SA" presentation="default"> + <element href="conception-helper.uml#_W6YdYKtBEd2Nmqhc73l7SA"/> + </semanticModel> + </contained> + </contained> + </diagrams> + </subdiagrams> + <subdiagrams xmi:id="_h0-hIfaMEd2-MYgc0GvAJw"> + <model href="conception-helper.uml#_Hb8X4PaMEd2-MYgc0GvAJw"/> + <diagrams xmi:id="_h1AWUPaMEd2-MYgc0GvAJw" position="0,0" size="100,100" name="Embedded" viewport="0,0"> + <property xmi:id="_h1I5MPaMEd2-MYgc0GvAJw" key="pageFormatName" value="A4"/> + <property xmi:id="_h1I5MfaMEd2-MYgc0GvAJw" key="diagramWidth" value="840"/> + <property xmi:id="_h1I5MvaMEd2-MYgc0GvAJw" key="diagramHeight" value="1188"/> + <property xmi:id="_h1I5M_aMEd2-MYgc0GvAJw" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_h1I5NPaMEd2-MYgc0GvAJw" key="diagramTopMargin" value="20"/> + <property xmi:id="_h1I5NfaMEd2-MYgc0GvAJw" key="diagramBottomMargin" value="20"/> + <property xmi:id="_h1I5NvaMEd2-MYgc0GvAJw" key="diagramLeftMargin" value="20"/> + <property xmi:id="_h1I5N_aMEd2-MYgc0GvAJw" key="diagramRightMargin" value="20"/> + <property xmi:id="_h1I5OPaMEd2-MYgc0GvAJw" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_h1AWUfaMEd2-MYgc0GvAJw" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception-helper.uml#_Hb8X4PaMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_wfiREPaMEd2-MYgc0GvAJw" position="152,112" size="158,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_wfiREfaMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_wfiREvaMEd2-MYgc0GvAJw"> + <property xmi:id="_wfiRE_aMEd2-MYgc0GvAJw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_wfiRFPaMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_wfjfMPaMEd2-MYgc0GvAJw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_wfjfMfaMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X4vaMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_wfpl0PaMEd2-MYgc0GvAJw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_wfpl0faMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X4_aMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_wfiRFfaMEd2-MYgc0GvAJw"> + <property xmi:id="_wfiRFvaMEd2-MYgc0GvAJw" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_wfiRF_aMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X4faMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_w7cJ8PaMEd2-MYgc0GvAJw" position="151,253" size="218,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_w7cJ8faMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_w7cJ8vaMEd2-MYgc0GvAJw"> + <property xmi:id="_w7cJ8_aMEd2-MYgc0GvAJw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_w7cJ9PaMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_w7cxAPaMEd2-MYgc0GvAJw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_w7cxAfaMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X5faMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_w7dYEPaMEd2-MYgc0GvAJw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_w7dYEfaMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X5vaMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_w7cJ9faMEd2-MYgc0GvAJw"> + <property xmi:id="_w7cJ9vaMEd2-MYgc0GvAJw" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_w7cJ9_aMEd2-MYgc0GvAJw" presentation="default"> + <element href="conception-helper.uml#_Hb8X5PaMEd2-MYgc0GvAJw"/> + </semanticModel> + </contained> + </contained> + </diagrams> + </subdiagrams> +</diagrams:Diagrams> diff --git a/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.properties b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.properties new file mode 100644 index 0000000..42b117b --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.properties @@ -0,0 +1,7 @@ +useModelAsBaseImports=yes + +useServicePackage=no +useEntityPackage=no +useDaoPackage=no +useDtoPackage=no +useConfigPackage=no \ No newline at end of file diff --git a/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.uml b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.uml new file mode 100644 index 0000000..2d7c838 --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.uml @@ -0,0 +1,297 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:AcceleoBusiness="http:///schemas/AcceleoBusiness/_81fAsPWcEdyuYMHNZCqWBQ/0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http:///schemas/AcceleoBusiness/_81fAsPWcEdyuYMHNZCqWBQ/0 pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"> + <uml:Model xmi:id="_qb8akM37EdqwVrslYOdUDA" name="org.sharengo.utils.utils"> + <packagedElement xmi:type="uml:Package" xmi:id="_w8IxIM37EdqwVrslYOdUDA" name="org.sharengo.utils.utils.services"> + <packagedElement xmi:type="uml:Interface" xmi:id="_l25sMKEeEd2PM6_wGJR42Q" name="ICrudSrv" redefinedClassifier="_9u74UKEeEd2PM6_wGJR42Q"> + <ownedOperation xmi:id="_1TsKUKEeEd2PM6_wGJR42Q" name="create"> + <ownedParameter xmi:id="_OV-jEKEfEd2PM6_wGJR42Q" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + <ownedParameter xmi:id="_QVBpsKEfEd2PM6_wGJR42Q" name="return" type="_LncgQKEfEd2PM6_wGJR42Q" direction="return"/> + <raisedException xmi:type="uml:Class" href="#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_0ve_IKEgEd2PM6_wGJR42Q" name="find"> + <ownedParameter xmi:id="_0ve_IaEgEd2PM6_wGJR42Q" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_0ve_IqEgEd2PM6_wGJR42Q" name="return" type="_LncgQKEfEd2PM6_wGJR42Q" direction="return"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_2y7dkKEgEd2PM6_wGJR42Q" name="update"> + <ownedParameter xmi:id="_2y7dkaEgEd2PM6_wGJR42Q" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_3wMXEKEgEd2PM6_wGJR42Q" name="delete"> + <ownedParameter xmi:id="_3wMXEaEgEd2PM6_wGJR42Q" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_4Gn6EKEgEd2PM6_wGJR42Q" name="findAll"> + <ownedParameter xmi:id="_4Gn6EaEgEd2PM6_wGJR42Q" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_Mlxe0KEhEd2PM6_wGJR42Q" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_UVT9YKEhEd2PM6_wGJR42Q" name="return" type="_Qfx2QKEhEd2PM6_wGJR42Q" direction="return"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="_9u74UKEeEd2PM6_wGJR42Q" name="AnyDto extends Serializable"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_D2KVQKEfEd2PM6_wGJR42Q" name="AnyEntity extends Serializable"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_LncgQKEfEd2PM6_wGJR42Q" name="AnyDto"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_Mhz2wKEfEd2PM6_wGJR42Q" name="AnyEntity"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_Qfx2QKEhEd2PM6_wGJR42Q" name="PagedResult<AnyDto>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_31g0gKHnEd2T0aUWLQqzuQ" name="DAO<AnyEntity>"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_FZ2jQKHoEd2T0aUWLQqzuQ" name="Log"/> + <packagedElement xmi:type="uml:Package" xmi:id="_4JKaAKQ8Ed2AzttPnb4djA" name="impl"> + <packagedElement xmi:type="uml:Class" xmi:id="_6MN4EKHlEd2BIt21aAt4XQ" name="AbstractCrudSrv" clientDependency="_LED-8KHmEd2BIt21aAt4XQ" isAbstract="true" redefinedClassifier="_9u74UKEeEd2PM6_wGJR42Q _D2KVQKEfEd2PM6_wGJR42Q"> + <interfaceRealization xmi:id="_LED-8KHmEd2BIt21aAt4XQ" name="InterfaceRealization1" supplier="_l25sMKEeEd2PM6_wGJR42Q" client="_6MN4EKHlEd2BIt21aAt4XQ" contract="_l25sMKEeEd2PM6_wGJR42Q"/> + <ownedOperation xmi:id="_gUeBgKHmEd2BIt21aAt4XQ" name="create"> + <ownedParameter xmi:id="_gUeBgaHmEd2BIt21aAt4XQ" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + <ownedParameter xmi:id="_gUeBgqHmEd2BIt21aAt4XQ" name="return" type="_LncgQKEfEd2PM6_wGJR42Q" direction="return"/> + <raisedException xmi:type="uml:Class" href="#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_h-vyAKHmEd2BIt21aAt4XQ" name="find"> + <ownedParameter xmi:id="_h-vyAaHmEd2BIt21aAt4XQ" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_h-vyAqHmEd2BIt21aAt4XQ" name="return" type="_LncgQKEfEd2PM6_wGJR42Q" direction="return"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_x1foQKHmEd2T0aUWLQqzuQ" name="update"> + <ownedParameter xmi:id="_x1foQaHmEd2T0aUWLQqzuQ" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_yucpgKHmEd2T0aUWLQqzuQ" name="delete"> + <ownedParameter xmi:id="_yudQkKHmEd2T0aUWLQqzuQ" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="#_EbIwUKtAEd2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_zTIq8KHmEd2T0aUWLQqzuQ" name="findAll"> + <ownedParameter xmi:id="_zTIq8aHmEd2T0aUWLQqzuQ" name="start"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_zTIq8qHmEd2T0aUWLQqzuQ" name="end"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_zTIq86HmEd2T0aUWLQqzuQ" name="return" type="_Qfx2QKEhEd2PM6_wGJR42Q" direction="return"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_673s0HXGEd2Ekv686xx4qA"/> + </ownedOperation> + <ownedOperation xmi:id="_-cp9EKHmEd2T0aUWLQqzuQ" name="convertToDto" visibility="protected" isAbstract="true"> + <ownedParameter xmi:id="_A0NDQKHnEd2T0aUWLQqzuQ" name="return" type="_LncgQKEfEd2PM6_wGJR42Q" direction="return"/> + <ownedParameter xmi:id="_CzdlQKHnEd2T0aUWLQqzuQ" name="entity" type="_Mhz2wKEfEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_aPi1MKHnEd2T0aUWLQqzuQ" name="convertToNewEntity" visibility="protected"> + <ownedParameter xmi:id="_cgK0AKHnEd2T0aUWLQqzuQ" name="return" type="_Mhz2wKEfEd2PM6_wGJR42Q" direction="return"/> + <ownedParameter xmi:id="_fFcNIKHnEd2T0aUWLQqzuQ" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_oCavMKHnEd2T0aUWLQqzuQ" name="convertToEntity" visibility="protected" isAbstract="true"> + <ownedParameter xmi:id="_pcoDYKHnEd2T0aUWLQqzuQ" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + <ownedParameter xmi:id="_qqCRsKHnEd2T0aUWLQqzuQ" name="entity" type="_Mhz2wKEfEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_ytZrMKHnEd2T0aUWLQqzuQ" name="createEntity" visibility="protected" isAbstract="true"> + <ownedParameter xmi:id="_z4qkcKHnEd2T0aUWLQqzuQ" name="return" type="_Mhz2wKEfEd2PM6_wGJR42Q" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_1j0esKHnEd2T0aUWLQqzuQ" name="getDao" visibility="protected" isAbstract="true"> + <ownedParameter xmi:id="_7H6ZYKHnEd2T0aUWLQqzuQ" name="return" type="_31g0gKHnEd2T0aUWLQqzuQ" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_9IXOMKHnEd2T0aUWLQqzuQ" name="getIdFromDto" visibility="protected" isAbstract="true"> + <ownedParameter xmi:id="_-xGGkKHnEd2T0aUWLQqzuQ" name="return" direction="return"> + <type xmi:type="uml:Interface" href="conception-helper.uml#_hFFQ0Hg-Ed2do542yyYrFA"/> + </ownedParameter> + <ownedParameter xmi:id="_A0I8YKHoEd2T0aUWLQqzuQ" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_GpkesKHoEd2T0aUWLQqzuQ" name="getLog" visibility="protected" isAbstract="true"> + <ownedParameter xmi:id="_IvYUoKHoEd2T0aUWLQqzuQ" name="return" type="_FZ2jQKHoEd2T0aUWLQqzuQ" direction="return"/> + </ownedOperation> + <ownedOperation xmi:id="_OR2esaHoEd2T0aUWLQqzuQ" name="validateDto" visibility="protected" isAbstract="true" raisedException="_GfaEUHmfEd2HRLLd0I1WrA _YNI5EHmZEd2HRLLd0I1WrA"> + <ownedParameter xmi:id="_Ruj2IKHoEd2T0aUWLQqzuQ" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_k0lEwKHoEd2T0aUWLQqzuQ" name="checkUniqueConstraintsBeforeCreate" visibility="protected"> + <ownedParameter xmi:id="_nyF-wKHoEd2T0aUWLQqzuQ" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + <ownedOperation xmi:id="_u1l2sKHoEd2T0aUWLQqzuQ" name="checkUniqueConstraintsBeforeUpdate" visibility="protected"> + <ownedParameter xmi:id="_yti_sKHoEd2T0aUWLQqzuQ" name="dto" type="_LncgQKEfEd2PM6_wGJR42Q"/> + <ownedParameter xmi:id="_zgAXYKHoEd2T0aUWLQqzuQ" name="entity" type="_Mhz2wKEfEd2PM6_wGJR42Q"/> + <raisedException xmi:type="uml:Class" href="#_yvGYUHXJEd20DoWUDUK0Ig"/> + <raisedException xmi:type="uml:Class" href="conception-helper.uml#_j3qGYKEgEd2PM6_wGJR42Q"/> + </ownedOperation> + </packagedElement> + </packagedElement> + <profileApplication xmi:id="_MIURkPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_MIURkfWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_tBzGgPWREdy_h6Mk-BiOHw" name="daos"> + <profileApplication xmi:id="_Mg9bEPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_Mg-CIPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="__PrMMPWREdy_h6Mk-BiOHw" name="dtos"> + <profileApplication xmi:id="_M2BsIPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_M2CTMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_Cp0X0PWSEdy_h6Mk-BiOHw" name="entities"> + <profileApplication xmi:id="_NQyVgPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_NQy8kPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_bKMq8HXGEd2Ekv686xx4qA" name="org.sharengo.utils.utils.exceptions"> + <packagedElement xmi:type="uml:Class" xmi:id="_c4VnwHXGEd2Ekv686xx4qA" name="GenericBusinessException" isAbstract="true"/> + <packagedElement xmi:type="uml:Class" xmi:id="_673s0HXGEd2Ekv686xx4qA" name="OutOfRangeException"> + <generalization xmi:id="_nt5gM3j0Ed2Lq_BH-5XVEg" general="_bI0twHg-Ed2lVPDSSAZWVg"/> + <ownedAttribute xmi:id="_iaKv4KtAEd2Nmqhc73l7SA" name="minValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_jlBZcKtAEd2Nmqhc73l7SA" name="maxValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_yvGYUHXJEd20DoWUDUK0Ig" name="UniqueConstraintsException"> + <generalization xmi:id="_o_-zI3j0Ed2Lq_BH-5XVEg" general="_Z3cGsHj0Ed2Lq_BH-5XVEg"/> + <ownedAttribute xmi:id="_qoDjQHXKEd20DoWUDUK0Ig" name="dataName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_ryxC4HXKEd20DoWUDUK0Ig" name="dataValue"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_bI0twHg-Ed2lVPDSSAZWVg" name="UnexpectedArgumentException" isAbstract="true"> + <generalization xmi:id="_nMrpg3j0Ed2Lq_BH-5XVEg" general="_c4VnwHXGEd2Ekv686xx4qA"/> + <ownedAttribute xmi:id="_IGOxIHg_Ed2lVPDSSAZWVg" name="parameterName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Xjqvgng_Ed2lVPDSSAZWVg" name="reason"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedOperation xmi:id="_YPQokKvkEd2rnp-byoZYOw" name="getParameterName"> + <ownedParameter xmi:id="_dtADoKvkEd2rnp-byoZYOw" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_KQqi-HjwEd2MH8DN-NMNrA" name="NoSuchEntityException"> + <generalization xmi:id="_o2bOg3j0Ed2Lq_BH-5XVEg" general="_Z3cGsHj0Ed2Lq_BH-5XVEg"/> + <ownedAttribute xmi:id="_NpxMwnjwEd2MH8DN-NMNrA" name="entityName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_PLYJcnjwEd2MH8DN-NMNrA" name="entityId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_Z3cGsHj0Ed2Lq_BH-5XVEg" name="CoherencyException" isAbstract="true"> + <generalization xmi:id="_nYJ5s3j0Ed2Lq_BH-5XVEg" general="_c4VnwHXGEd2Ekv686xx4qA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_YNI5EHmZEd2HRLLd0I1WrA" name="NullParameterException"> + <generalization xmi:id="_N2AvUqtAEd2Nmqhc73l7SA" general="_EbIwUKtAEd2Nmqhc73l7SA"/> + <ownedOperation xmi:id="_eaeLwHmeEd2HRLLd0I1WrA" name="getParameterName"> + <ownedParameter xmi:id="_m5lGEHmeEd2HRLLd0I1WrA" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_GfaEUHmfEd2HRLLd0I1WrA" name="EmptyParameterException"> + <generalization xmi:id="_OEX7c6tAEd2Nmqhc73l7SA" general="_EbIwUKtAEd2Nmqhc73l7SA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_4RBZUKs-Ed2Nmqhc73l7SA" name="InvalidParameterException"> + <generalization xmi:id="_6-nA8Ks-Ed2Nmqhc73l7SA" general="_bI0twHg-Ed2lVPDSSAZWVg"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_EbIwUKtAEd2Nmqhc73l7SA" name="NullOrEmptyParameterException"> + <generalization xmi:id="_S6EfE6tAEd2Nmqhc73l7SA" general="_bI0twHg-Ed2lVPDSSAZWVg"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_vE68IOMjEd2zc-bceOzXYQ" name="ExceptionsStack"/> + <packagedElement xmi:type="uml:Association" xmi:id="_AU1kyuMkEd2zc-bceOzXYQ" name="Association1" memberEnd="_AU1ky-MkEd2zc-bceOzXYQ _AU1kzuMkEd2zc-bceOzXYQ" navigableOwnedEnd="_AU1kzuMkEd2zc-bceOzXYQ"> + <ownedEnd xmi:id="_AU1ky-MkEd2zc-bceOzXYQ" name="stack" type="_vE68IOMjEd2zc-bceOzXYQ" isUnique="false" association="_AU1kyuMkEd2zc-bceOzXYQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AU1kzOMkEd2zc-bceOzXYQ" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AU1kzeMkEd2zc-bceOzXYQ" value="1"/> + </ownedEnd> + <ownedEnd xmi:id="_AU1kzuMkEd2zc-bceOzXYQ" name="exceptions" type="_c4VnwHXGEd2Ekv686xx4qA" isUnique="false" association="_AU1kyuMkEd2zc-bceOzXYQ"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AU1kz-MkEd2zc-bceOzXYQ" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AU1k0OMkEd2zc-bceOzXYQ" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_R_qg8OYHEd2ikLHnwqSzSg" name="XMLException"/> + <packagedElement xmi:type="uml:Class" xmi:id="_JUeMMOlZEd2hcOPlZHSiFw" name="FileFormatException"> + <generalization xmi:id="_NYDWYulZEd2hcOPlZHSiFw" general="_c4VnwHXGEd2Ekv686xx4qA"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_sPzWgD-kEd6_O_u-D-Y8sg" name="DataException"> + <generalization xmi:id="_wz83ID-kEd6_O_u-D-Y8sg" general="_Z3cGsHj0Ed2Lq_BH-5XVEg"/> + <ownedAttribute xmi:id="_9xb30ECBEd6bJJyFu8UH4w" name="reason"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="__k0DAHmZEd2HRLLd0I1WrA" name="org.sharengo.utils.utils.validation"> + <packagedElement xmi:type="uml:Class" xmi:id="_CXHykHmaEd2HRLLd0I1WrA" name="ParameterValidator"> + <ownedOperation xmi:id="_YWpvgnmbEd2HRLLd0I1WrA" name="checkNullParameter" isStatic="true" raisedException="_YNI5EHmZEd2HRLLd0I1WrA"> + <ownedParameter xmi:id="_o27D4HmbEd2HRLLd0I1WrA" name="o"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_xqoXkASfEd2Qys9YSCxJaQ"/> + </ownedParameter> + <ownedParameter xmi:id="_5tKO8HmgEd2HRLLd0I1WrA" name="parameterName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_yXGkMHmcEd2HRLLd0I1WrA" name="checkEmptyString" isStatic="true" raisedException="_YNI5EHmZEd2HRLLd0I1WrA _GfaEUHmfEd2HRLLd0I1WrA"> + <ownedParameter xmi:id="_zwq_MHmcEd2HRLLd0I1WrA" name="s"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_86WjsHmgEd2HRLLd0I1WrA" name="parameterName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_--Be8H2uEd22ZfAQrfk_WQ" name="checkEmptyCollection" isStatic="true" raisedException="_YNI5EHmZEd2HRLLd0I1WrA _GfaEUHmfEd2HRLLd0I1WrA"> + <ownedParameter xmi:id="_DJ968H2vEd22ZfAQrfk_WQ" name="c"> + <type xmi:type="uml:Class" href="conception-helper.uml#_cYCF4H2vEd22ZfAQrfk_WQ"/> + </ownedParameter> + <ownedParameter xmi:id="_F4q84H2vEd22ZfAQrfk_WQ" name="parameterName"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + </packagedElement> + <profileApplication xmi:id="_LmCD4PWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_LmFHMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </uml:Model> + <AcceleoBusiness:BusinessException xmi:id="_mYV-YHXGEd2Ekv686xx4qA" base_Class="_c4VnwHXGEd2Ekv686xx4qA"/> + <AcceleoBusiness:BusinessException xmi:id="_0riGIHm2Ed2HRLLd0I1WrA"/> + <AcceleoBusiness:BusinessException xmi:id="_-ZM-gOMjEd2zc-bceOzXYQ" base_Class="_vE68IOMjEd2zc-bceOzXYQ"/> + <AcceleoBusiness:BusinessException xmi:id="_Tq23cOYHEd2ikLHnwqSzSg" base_Class="_R_qg8OYHEd2ikLHnwqSzSg"/> +</xmi:XMI> diff --git a/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.umldi b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.umldi new file mode 100644 index 0000000..9956a4f --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/org.sharengo.utils.utils/src/main/uml/conception.umldi @@ -0,0 +1,784 @@ +<?xml version="1.0" encoding="UTF-8"?> +<diagrams:Diagrams xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.topcased.org/DI/1.0" xmlns:diagrams="http://www.topcased.org/Diagrams/1.0" xmi:id="_cd3aIPWREdy_h6Mk-BiOHw" activeDiagram="_CP4_cPWTEdy_h6Mk-BiOHw"> + <model href="conception.uml#_qb8akM37EdqwVrslYOdUDA"/> + <diagrams xmi:id="_CP4_cPWTEdy_h6Mk-BiOHw" position="0,0" size="100,100" name="Package Overview" zoom="0.75" viewport="144,0"> + <property xmi:id="_CQUdQPWTEdy_h6Mk-BiOHw" key="pageFormatName" value="A3"/> + <property xmi:id="_CQUdQfWTEdy_h6Mk-BiOHw" key="diagramWidth" value="1188"/> + <property xmi:id="_CQUdQvWTEdy_h6Mk-BiOHw" key="diagramHeight" value="1680"/> + <property xmi:id="_CQUdQ_WTEdy_h6Mk-BiOHw" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_CQUdRPWTEdy_h6Mk-BiOHw" key="diagramTopMargin" value="20"/> + <property xmi:id="_CQUdRfWTEdy_h6Mk-BiOHw" key="diagramBottomMargin" value="20"/> + <property xmi:id="_CQUdRvWTEdy_h6Mk-BiOHw" key="diagramLeftMargin" value="20"/> + <property xmi:id="_CQUdR_WTEdy_h6Mk-BiOHw" key="diagramRightMargin" value="20"/> + <property xmi:id="_CQUdSPWTEdy_h6Mk-BiOHw" key="orientation" value="landscape"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_CP4_cfWTEdy_h6Mk-BiOHw" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception.uml#_qb8akM37EdqwVrslYOdUDA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_CiytUPWTEdy_h6Mk-BiOHw" position="588,732" size="988,378"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_CiytUfWTEdy_h6Mk-BiOHw" presentation="default"> + <element href="conception.uml#_w8IxIM37EdqwVrslYOdUDA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_l20zsKEeEd2PM6_wGJR42Q" position="25,28" size="368,-1"> + <anchorage xmi:id="_LD_tgaHmEd2BIt21aAt4XQ" graphEdge="_LEDX4KHmEd2BIt21aAt4XQ"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_l20zsaEeEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_l25sMKEeEd2PM6_wGJR42Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_l20zsqEeEd2PM6_wGJR42Q"> + <property xmi:id="_l20zs6EeEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_l20ztKEeEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_l25sMKEeEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_l20ztaEeEd2PM6_wGJR42Q"> + <property xmi:id="_l20ztqEeEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_l20zt6EeEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_l25sMKEeEd2PM6_wGJR42Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_1Tq8MKEeEd2PM6_wGJR42Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_1Tq8MaEeEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_1TsKUKEeEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_9UoQAKEgEd2PM6_wGJR42Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9UoQAaEgEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_0ve_IKEgEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_9Uo3EKEgEd2PM6_wGJR42Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9Uo3EaEgEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_2y7dkKEgEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_9UpeIKEgEd2PM6_wGJR42Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9UpeIaEgEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_3wMXEKEgEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_9UpeIqEgEd2PM6_wGJR42Q" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9UpeI6EgEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_4Gn6EKEgEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Lnb5MKEfEd2PM6_wGJR42Q" position="36,191" size="115,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Lnb5MaEfEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_LncgQKEfEd2PM6_wGJR42Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_Lnb5MqEfEd2PM6_wGJR42Q"> + <property xmi:id="_Lnb5M6EfEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Lnb5NKEfEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_LncgQKEfEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Lnb5NaEfEd2PM6_wGJR42Q"> + <property xmi:id="_Lnb5NqEfEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Lnb5N6EfEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_LncgQKEfEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MhyooKEfEd2PM6_wGJR42Q" position="301,192" size="115,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MhyooaEfEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_Mhz2wKEfEd2PM6_wGJR42Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_MhyooqEfEd2PM6_wGJR42Q"> + <property xmi:id="_Mhyoo6EfEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_MhyopKEfEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_Mhz2wKEfEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_MhyopaEfEd2PM6_wGJR42Q"> + <property xmi:id="_MhyopqEfEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Mhyop6EfEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_Mhz2wKEfEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_QfxPMKEhEd2PM6_wGJR42Q" position="38,253" size="183,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_QfxPMaEhEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_Qfx2QKEhEd2PM6_wGJR42Q"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_QfxPMqEhEd2PM6_wGJR42Q"> + <property xmi:id="_QfxPM6EhEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_QfxPNKEhEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_Qfx2QKEhEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_QfxPNaEhEd2PM6_wGJR42Q"> + <property xmi:id="_QfxPNqEhEd2PM6_wGJR42Q" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_QfxPN6EhEd2PM6_wGJR42Q" presentation="default"> + <element href="conception.uml#_Qfx2QKEhEd2PM6_wGJR42Q"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6Lp3YKHlEd2BIt21aAt4XQ" position="511,14" size="448,-1"> + <anchorage xmi:id="_LD_tgKHmEd2BIt21aAt4XQ" graphEdge="_LEDX4KHmEd2BIt21aAt4XQ"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6LqecKHlEd2BIt21aAt4XQ" presentation="default"> + <element href="conception.uml#_6MN4EKHlEd2BIt21aAt4XQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_6LqecaHlEd2BIt21aAt4XQ"> + <property xmi:id="_6LqecqHlEd2BIt21aAt4XQ" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6Lqec6HlEd2BIt21aAt4XQ" presentation="default"> + <element href="conception.uml#_6MN4EKHlEd2BIt21aAt4XQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_6LqedKHlEd2BIt21aAt4XQ"> + <property xmi:id="_6LqedaHlEd2BIt21aAt4XQ" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6LqedqHlEd2BIt21aAt4XQ" presentation="default"> + <element href="conception.uml#_6MN4EKHlEd2BIt21aAt4XQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_5mccEKHmEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5mccEaHmEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_gUeBgKHmEd2BIt21aAt4XQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_5mdDIKHmEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5mdDIaHmEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_h-vyAKHmEd2BIt21aAt4XQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_5meRQKHmEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5meRQaHmEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_x1foQKHmEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_5me4UKHmEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5me4UaHmEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_yucpgKHmEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_5me4UqHmEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_5me4U6HmEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_zTIq8KHmEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_-cmSsKHmEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_-cmSsaHmEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_-cp9EKHmEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_aPiOIKHnEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_aPiOIaHnEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_aPi1MKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_oCaIIKHnEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_oCaIIaHnEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_oCavMKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ytZEIKHnEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ytZEIaHnEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_ytZrMKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_1jz3oKHnEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_1jz3oaHnEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_1j0esKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_9IWnIKHnEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9IWnIaHnEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_9IXOMKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Gpj3oKHoEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Gpj3oaHoEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_GpkesKHoEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_OR13oKHoEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_OR2esKHoEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_OR2esaHoEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_k0j2oKHoEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_k0kdsKHoEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_k0lEwKHoEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_u1lPoKHoEd2T0aUWLQqzuQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_u1lPoaHoEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_u1l2sKHoEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_LEDX4KHmEd2BIt21aAt4XQ" anchor="_LD_tgKHmEd2BIt21aAt4XQ _LD_tgaHmEd2BIt21aAt4XQ"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_LEDX4aHmEd2BIt21aAt4XQ" presentation="default"> + <element href="conception.uml#_LED-8KHmEd2BIt21aAt4XQ"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_LEDX4qHmEd2BIt21aAt4XQ" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_31e_UKHnEd2T0aUWLQqzuQ" position="301,254" size="119,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_31e_UaHnEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_31g0gKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_31e_UqHnEd2T0aUWLQqzuQ"> + <property xmi:id="_31e_U6HnEd2T0aUWLQqzuQ" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_31e_VKHnEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_31g0gKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_31e_VaHnEd2T0aUWLQqzuQ"> + <property xmi:id="_31e_VqHnEd2T0aUWLQqzuQ" key="eStructuralFeatureID" value="38"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_31e_V6HnEd2T0aUWLQqzuQ" presentation="default"> + <element href="conception.uml#_31g0gKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_C1ow0PWTEdy_h6Mk-BiOHw" position="206,16" size="82,50"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_C1ow0fWTEdy_h6Mk-BiOHw" presentation="default"> + <element href="conception.uml#_tBzGgPWREdy_h6Mk-BiOHw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_DGWtYPWTEdy_h6Mk-BiOHw" position="112,12" size="84,54"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_DGWtYfWTEdy_h6Mk-BiOHw" presentation="default"> + <element href="conception.uml#__PrMMPWREdy_h6Mk-BiOHw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_DYMrUPWTEdy_h6Mk-BiOHw" position="292,13" size="77,54"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_DYMrUfWTEdy_h6Mk-BiOHw" presentation="default"> + <element href="conception.uml#_Cp0X0PWSEdy_h6Mk-BiOHw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_bKJAkHXGEd2Ekv686xx4qA" position="17,70" size="1534,633"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bKJAkXXGEd2Ekv686xx4qA" presentation="default"> + <element href="conception.uml#_bKMq8HXGEd2Ekv686xx4qA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_c3xAAHXGEd2Ekv686xx4qA" position="521,50" size="213,-1"> + <anchorage xmi:id="_nMqbYXj0Ed2Lq_BH-5XVEg" graphEdge="_nMrpgHj0Ed2Lq_BH-5XVEg _nYJ5sHj0Ed2Lq_BH-5XVEg _AU1kwOMkEd2zc-bceOzXYQ _NYCvUOlZEd2hcOPlZHSiFw"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_c3xAAXXGEd2Ekv686xx4qA" presentation="default"> + <element href="conception.uml#_c4VnwHXGEd2Ekv686xx4qA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_c3xAAnXGEd2Ekv686xx4qA"> + <property xmi:id="_c3xAA3XGEd2Ekv686xx4qA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_c3xABHXGEd2Ekv686xx4qA" presentation="default"> + <element href="conception.uml#_c4VnwHXGEd2Ekv686xx4qA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_c3xABXXGEd2Ekv686xx4qA"> + <property xmi:id="_c3xABnXGEd2Ekv686xx4qA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_c3xAB3XGEd2Ekv686xx4qA" presentation="default"> + <element href="conception.uml#_c4VnwHXGEd2Ekv686xx4qA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_672esHXGEd2Ekv686xx4qA" position="484,391" size="170,-1"> + <anchorage xmi:id="_nt4SEHj0Ed2Lq_BH-5XVEg" graphEdge="_nt5gMHj0Ed2Lq_BH-5XVEg"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_672esXXGEd2Ekv686xx4qA" presentation="default"> + <element href="conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_672esnXGEd2Ekv686xx4qA"> + <property xmi:id="_672es3XGEd2Ekv686xx4qA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_672etHXGEd2Ekv686xx4qA" presentation="default"> + <element href="conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_iaKI0KtAEd2Nmqhc73l7SA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_iaKI0atAEd2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_iaKv4KtAEd2Nmqhc73l7SA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_jlAyYKtAEd2Nmqhc73l7SA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_jlAyYatAEd2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_jlBZcKtAEd2Nmqhc73l7SA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_672etXXGEd2Ekv686xx4qA"> + <property xmi:id="_672etnXGEd2Ekv686xx4qA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_672et3XGEd2Ekv686xx4qA" presentation="default"> + <element href="conception.uml#_673s0HXGEd2Ekv686xx4qA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_oGJtkHXSEd20DoWUDUK0Ig" position="916,301" size="221,-1"> + <anchorage xmi:id="_o_9lAHj0Ed2Lq_BH-5XVEg" graphEdge="_o_-zIHj0Ed2Lq_BH-5XVEg"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_oGJtkXXSEd20DoWUDUK0Ig" presentation="default"> + <element href="conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_oGJtknXSEd20DoWUDUK0Ig"> + <property xmi:id="_oGJtk3XSEd20DoWUDUK0Ig" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_oGJtlHXSEd20DoWUDUK0Ig" presentation="default"> + <element href="conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_oGK7sHXSEd20DoWUDUK0Ig" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_oGK7sXXSEd20DoWUDUK0Ig" presentation="default"> + <element href="conception.uml#_qoDjQHXKEd20DoWUDUK0Ig"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_oGK7snXSEd20DoWUDUK0Ig" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_oGK7s3XSEd20DoWUDUK0Ig" presentation="default"> + <element href="conception.uml#_ryxC4HXKEd20DoWUDUK0Ig"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_oGKUoHXSEd20DoWUDUK0Ig"> + <property xmi:id="_oGKUoXXSEd20DoWUDUK0Ig" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_oGKUonXSEd20DoWUDUK0Ig" presentation="default"> + <element href="conception.uml#_yvGYUHXJEd20DoWUDUK0Ig"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_bIqVsHg-Ed2lVPDSSAZWVg" position="198,187" size="282,-1"> + <anchorage xmi:id="_nMqbYHj0Ed2Lq_BH-5XVEg" graphEdge="_nMrpgHj0Ed2Lq_BH-5XVEg _nt5gMHj0Ed2Lq_BH-5XVEg _6-mZ4Ks-Ed2Nmqhc73l7SA _S6EfEKtAEd2Nmqhc73l7SA"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bIq8wHg-Ed2lVPDSSAZWVg" presentation="default"> + <element href="conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_bIq8wXg-Ed2lVPDSSAZWVg"> + <property xmi:id="_bIq8wng-Ed2lVPDSSAZWVg" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bIq8w3g-Ed2lVPDSSAZWVg" presentation="default"> + <element href="conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_IGG1UHg_Ed2lVPDSSAZWVg" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_IGG1UXg_Ed2lVPDSSAZWVg" presentation="default"> + <element href="conception.uml#_IGOxIHg_Ed2lVPDSSAZWVg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_XjqvgHg_Ed2lVPDSSAZWVg" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_XjqvgXg_Ed2lVPDSSAZWVg" presentation="default"> + <element href="conception.uml#_Xjqvgng_Ed2lVPDSSAZWVg"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_bIq8xHg-Ed2lVPDSSAZWVg"> + <property xmi:id="_bIq8xXg-Ed2lVPDSSAZWVg" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_bIq8xng-Ed2lVPDSSAZWVg" presentation="default"> + <element href="conception.uml#_bI0twHg-Ed2lVPDSSAZWVg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_YPG3kKvkEd2rnp-byoZYOw" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_YPG3kavkEd2rnp-byoZYOw" presentation="default"> + <element href="conception.uml#_YPQokKvkEd2rnp-byoZYOw"/> + </semanticModel> + </contained> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_KQqi8HjwEd2MH8DN-NMNrA" position="669,299" size="205,-1"> + <anchorage xmi:id="_o2ancHj0Ed2Lq_BH-5XVEg" graphEdge="_o2bOgHj0Ed2Lq_BH-5XVEg"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_KQqi8XjwEd2MH8DN-NMNrA" presentation="default"> + <element href="conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_KQqi8njwEd2MH8DN-NMNrA"> + <property xmi:id="_KQqi83jwEd2MH8DN-NMNrA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_KQqi9HjwEd2MH8DN-NMNrA" presentation="default"> + <element href="conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_NpxMwHjwEd2MH8DN-NMNrA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_NpxMwXjwEd2MH8DN-NMNrA" presentation="default"> + <element href="conception.uml#_NpxMwnjwEd2MH8DN-NMNrA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_PLYJcHjwEd2MH8DN-NMNrA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_PLYJcXjwEd2MH8DN-NMNrA" presentation="default"> + <element href="conception.uml#_PLYJcnjwEd2MH8DN-NMNrA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_KQqi9XjwEd2MH8DN-NMNrA"> + <property xmi:id="_KQqi9njwEd2MH8DN-NMNrA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_KQqi93jwEd2MH8DN-NMNrA" presentation="default"> + <element href="conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Z3YcUHj0Ed2Lq_BH-5XVEg" position="790,198" size="180,-1"> + <anchorage xmi:id="_nYIrkHj0Ed2Lq_BH-5XVEg" graphEdge="_nYJ5sHj0Ed2Lq_BH-5XVEg _o2bOgHj0Ed2Lq_BH-5XVEg _o_-zIHj0Ed2Lq_BH-5XVEg _wz8QED-kEd6_O_u-D-Y8sg"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z3YcUXj0Ed2Lq_BH-5XVEg" presentation="default"> + <element href="conception.uml#_Z3cGsHj0Ed2Lq_BH-5XVEg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_Z3YcUnj0Ed2Lq_BH-5XVEg"> + <property xmi:id="_Z3YcU3j0Ed2Lq_BH-5XVEg" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z3YcVHj0Ed2Lq_BH-5XVEg" presentation="default"> + <element href="conception.uml#_Z3cGsHj0Ed2Lq_BH-5XVEg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_Z3YcVXj0Ed2Lq_BH-5XVEg"> + <property xmi:id="_Z3YcVnj0Ed2Lq_BH-5XVEg" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_Z3YcV3j0Ed2Lq_BH-5XVEg" presentation="default"> + <element href="conception.uml#_Z3cGsHj0Ed2Lq_BH-5XVEg"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_nMrpgHj0Ed2Lq_BH-5XVEg" anchor="_nMqbYHj0Ed2Lq_BH-5XVEg _nMqbYXj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_nMrpgXj0Ed2Lq_BH-5XVEg" presentation="default"> + <element href="conception.uml#_nMrpg3j0Ed2Lq_BH-5XVEg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_nMrpgnj0Ed2Lq_BH-5XVEg" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_nYJ5sHj0Ed2Lq_BH-5XVEg" anchor="_nYIrkHj0Ed2Lq_BH-5XVEg _nMqbYXj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_nYJ5sXj0Ed2Lq_BH-5XVEg" presentation="default"> + <element href="conception.uml#_nYJ5s3j0Ed2Lq_BH-5XVEg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_nYJ5snj0Ed2Lq_BH-5XVEg" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_nt5gMHj0Ed2Lq_BH-5XVEg" anchor="_nt4SEHj0Ed2Lq_BH-5XVEg _nMqbYHj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_nt5gMXj0Ed2Lq_BH-5XVEg" presentation="default"> + <element href="conception.uml#_nt5gM3j0Ed2Lq_BH-5XVEg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_nt5gMnj0Ed2Lq_BH-5XVEg" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_o2bOgHj0Ed2Lq_BH-5XVEg" anchor="_o2ancHj0Ed2Lq_BH-5XVEg _nYIrkHj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_o2bOgXj0Ed2Lq_BH-5XVEg" presentation="default"> + <element href="conception.uml#_o2bOg3j0Ed2Lq_BH-5XVEg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_o2bOgnj0Ed2Lq_BH-5XVEg" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_o_-zIHj0Ed2Lq_BH-5XVEg" anchor="_o_9lAHj0Ed2Lq_BH-5XVEg _nYIrkHj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_o_-zIXj0Ed2Lq_BH-5XVEg" presentation="default"> + <element href="conception.uml#_o_-zI3j0Ed2Lq_BH-5XVEg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_o_-zInj0Ed2Lq_BH-5XVEg" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_YNCycHmZEd2HRLLd0I1WrA" position="37,522" size="225,-1"> + <anchorage xmi:id="_51DicKs_Ed2Nmqhc73l7SA" graphEdge="_N2AIQKtAEd2Nmqhc73l7SA"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_YNDZgHmZEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_YNDZgXmZEd2HRLLd0I1WrA"> + <property xmi:id="_YNDZgnmZEd2HRLLd0I1WrA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_YNDZg3mZEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_YNDZhHmZEd2HRLLd0I1WrA"> + <property xmi:id="_YNDZhXmZEd2HRLLd0I1WrA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_YNDZhnmZEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_GfY2MHmfEd2HRLLd0I1WrA" position="278,524" size="209,-1"> + <anchorage xmi:id="_6AMbcKs_Ed2Nmqhc73l7SA" graphEdge="_OEX7cKtAEd2Nmqhc73l7SA"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_GfY2MXmfEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_GfY2MnmfEd2HRLLd0I1WrA"> + <property xmi:id="_GfY2M3mfEd2HRLLd0I1WrA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_GfY2NHmfEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_GfY2NXmfEd2HRLLd0I1WrA"> + <property xmi:id="_GfY2NnmfEd2HRLLd0I1WrA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_GfY2N3mfEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_4Q42cKs-Ed2Nmqhc73l7SA" position="31,361" size="212,-1"> + <anchorage xmi:id="_6-kksKs-Ed2Nmqhc73l7SA" graphEdge="_6-mZ4Ks-Ed2Nmqhc73l7SA"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_4Q42cas-Ed2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_4Q42cqs-Ed2Nmqhc73l7SA"> + <property xmi:id="_4Q42c6s-Ed2Nmqhc73l7SA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_4Q42dKs-Ed2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_4Q42das-Ed2Nmqhc73l7SA"> + <property xmi:id="_4Q42dqs-Ed2Nmqhc73l7SA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_4Q42d6s-Ed2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_6-mZ4Ks-Ed2Nmqhc73l7SA" anchor="_6-kksKs-Ed2Nmqhc73l7SA _nMqbYHj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_6-mZ4as-Ed2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_6-nA8Ks-Ed2Nmqhc73l7SA"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_6-mZ4qs-Ed2Nmqhc73l7SA" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_EbHiMKtAEd2Nmqhc73l7SA" position="254,334" size="256,-1"> + <anchorage xmi:id="_N1_hMKtAEd2Nmqhc73l7SA" graphEdge="_N2AIQKtAEd2Nmqhc73l7SA _OEX7cKtAEd2Nmqhc73l7SA _S6EfEKtAEd2Nmqhc73l7SA"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_EbHiMatAEd2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_EbHiMqtAEd2Nmqhc73l7SA"> + <property xmi:id="_EbHiM6tAEd2Nmqhc73l7SA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_EbHiNKtAEd2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_EbHiNatAEd2Nmqhc73l7SA"> + <property xmi:id="_EbHiNqtAEd2Nmqhc73l7SA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_EbHiN6tAEd2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_EbIwUKtAEd2Nmqhc73l7SA"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_N2AIQKtAEd2Nmqhc73l7SA" anchor="_51DicKs_Ed2Nmqhc73l7SA _N1_hMKtAEd2Nmqhc73l7SA"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_N2AvUKtAEd2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_N2AvUqtAEd2Nmqhc73l7SA"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_N2AvUatAEd2Nmqhc73l7SA" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_OEX7cKtAEd2Nmqhc73l7SA" anchor="_6AMbcKs_Ed2Nmqhc73l7SA _N1_hMKtAEd2Nmqhc73l7SA"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_OEX7catAEd2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_OEX7c6tAEd2Nmqhc73l7SA"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_OEX7cqtAEd2Nmqhc73l7SA" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_S6EfEKtAEd2Nmqhc73l7SA" anchor="_N1_hMKtAEd2Nmqhc73l7SA _nMqbYHj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_S6EfEatAEd2Nmqhc73l7SA" presentation="default"> + <element href="conception.uml#_S6EfE6tAEd2Nmqhc73l7SA"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_S6EfEqtAEd2Nmqhc73l7SA" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_vEdpIOMjEd2zc-bceOzXYQ" position="951,49" size="212,-1"> + <anchorage xmi:id="_AU0WoOMkEd2zc-bceOzXYQ" graphEdge="_AU1kwOMkEd2zc-bceOzXYQ"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_vEdpIeMjEd2zc-bceOzXYQ" presentation="default"> + <element href="conception.uml#_vE68IOMjEd2zc-bceOzXYQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_vEdpIuMjEd2zc-bceOzXYQ"> + <property xmi:id="_vEdpI-MjEd2zc-bceOzXYQ" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_vEdpJOMjEd2zc-bceOzXYQ" presentation="default"> + <element href="conception.uml#_vE68IOMjEd2zc-bceOzXYQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_vEdpJeMjEd2zc-bceOzXYQ"> + <property xmi:id="_vEdpJuMjEd2zc-bceOzXYQ" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_vEdpJ-MjEd2zc-bceOzXYQ" presentation="default"> + <element href="conception.uml#_vE68IOMjEd2zc-bceOzXYQ"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_AU1kwOMkEd2zc-bceOzXYQ" anchor="_AU0WoOMkEd2zc-bceOzXYQ _nMqbYXj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_AU1kweMkEd2zc-bceOzXYQ" presentation="default"> + <element href="conception.uml#_AU1kyuMkEd2zc-bceOzXYQ"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_AU1kwuMkEd2zc-bceOzXYQ" id="srcNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_AU1kw-MkEd2zc-bceOzXYQ" id="srcPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_AU1kxOMkEd2zc-bceOzXYQ" id="srcCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_AU1kxeMkEd2zc-bceOzXYQ" id="targetNameEdgeObject" uDistance="10" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_AU1kxuMkEd2zc-bceOzXYQ" id="targetPropertiesEdgeObject" uDistance="25" vDistance="10"/> + <contained xsi:type="di:EdgeObjectUV" xmi:id="_AU1kx-MkEd2zc-bceOzXYQ" id="targetCountEdgeObject" uDistance="10" vDistance="-10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_AU1kyOMkEd2zc-bceOzXYQ" visible="false" id="middleNameEdgeObject" offset="0,10"/> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_AU1kyeMkEd2zc-bceOzXYQ" id="stereotypeEdgeObject" offset="0,-10"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_R_p54OYHEd2ikLHnwqSzSg" position="145,46" size="156,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_R_p54eYHEd2ikLHnwqSzSg" presentation="default"> + <element href="conception.uml#_R_qg8OYHEd2ikLHnwqSzSg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_R_p54uYHEd2ikLHnwqSzSg"> + <property xmi:id="_R_p54-YHEd2ikLHnwqSzSg" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_R_p55OYHEd2ikLHnwqSzSg" presentation="default"> + <element href="conception.uml#_R_qg8OYHEd2ikLHnwqSzSg"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_R_p55eYHEd2ikLHnwqSzSg"> + <property xmi:id="_R_p55uYHEd2ikLHnwqSzSg" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_R_p55-YHEd2ikLHnwqSzSg" presentation="default"> + <element href="conception.uml#_R_qg8OYHEd2ikLHnwqSzSg"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_JUFKoOlZEd2hcOPlZHSiFw" position="1162,210" size="235,-1"> + <anchorage xmi:id="_NYCIQOlZEd2hcOPlZHSiFw" graphEdge="_NYCvUOlZEd2hcOPlZHSiFw"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_JUFKoelZEd2hcOPlZHSiFw" presentation="default"> + <element href="conception.uml#_JUeMMOlZEd2hcOPlZHSiFw"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_JUFKoulZEd2hcOPlZHSiFw"> + <property xmi:id="_JUFKo-lZEd2hcOPlZHSiFw" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_JUFKpOlZEd2hcOPlZHSiFw" presentation="default"> + <element href="conception.uml#_JUeMMOlZEd2hcOPlZHSiFw"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_JUFKpelZEd2hcOPlZHSiFw"> + <property xmi:id="_JUFKpulZEd2hcOPlZHSiFw" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_JUFKp-lZEd2hcOPlZHSiFw" presentation="default"> + <element href="conception.uml#_JUeMMOlZEd2hcOPlZHSiFw"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_NYCvUOlZEd2hcOPlZHSiFw" anchor="_NYCIQOlZEd2hcOPlZHSiFw _nMqbYXj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_NYDWYOlZEd2hcOPlZHSiFw" presentation="default"> + <element href="conception.uml#_NYDWYulZEd2hcOPlZHSiFw"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_NYDWYelZEd2hcOPlZHSiFw" id="stereotypeEdgeObject"/> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_sPw6QD-kEd6_O_u-D-Y8sg" position="1162,301" size="325,-1"> + <anchorage xmi:id="_wz7pAD-kEd6_O_u-D-Y8sg" graphEdge="_wz8QED-kEd6_O_u-D-Y8sg"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_sPw6QT-kEd6_O_u-D-Y8sg" presentation="default"> + <element href="conception.uml#_sPzWgD-kEd6_O_u-D-Y8sg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_sPxhUD-kEd6_O_u-D-Y8sg"> + <property xmi:id="_sPxhUT-kEd6_O_u-D-Y8sg" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_sPxhUj-kEd6_O_u-D-Y8sg" presentation="default"> + <element href="conception.uml#_sPzWgD-kEd6_O_u-D-Y8sg"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_9xbQwECBEd6bJJyFu8UH4w" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_9xbQwUCBEd6bJJyFu8UH4w" presentation="default"> + <element href="conception.uml#_9xb30ECBEd6bJJyFu8UH4w"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_sPxhUz-kEd6_O_u-D-Y8sg"> + <property xmi:id="_sPxhVD-kEd6_O_u-D-Y8sg" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_sPyIYD-kEd6_O_u-D-Y8sg" presentation="default"> + <element href="conception.uml#_sPzWgD-kEd6_O_u-D-Y8sg"/> + </semanticModel> + </contained> + </contained> + <contained xsi:type="di:GraphEdge" xmi:id="_wz8QED-kEd6_O_u-D-Y8sg" anchor="_wz7pAD-kEd6_O_u-D-Y8sg _nYIrkHj0Ed2Lq_BH-5XVEg"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_wz8QET-kEd6_O_u-D-Y8sg" presentation="default"> + <element href="conception.uml#_wz83ID-kEd6_O_u-D-Y8sg"/> + </semanticModel> + <contained xsi:type="di:EdgeObjectOffset" xmi:id="_wz8QEj-kEd6_O_u-D-Y8sg" id="stereotypeEdgeObject"/> + </contained> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="__ky04HmZEd2HRLLd0I1WrA" position="20,738" size="550,147"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="__ky04XmZEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#__k0DAHmZEd2HRLLd0I1WrA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_CXGkcHmaEd2HRLLd0I1WrA" position="80,26" size="441,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_CXGkcXmaEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_CXHykHmaEd2HRLLd0I1WrA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_CXGkcnmaEd2HRLLd0I1WrA"> + <property xmi:id="_CXGkc3maEd2HRLLd0I1WrA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_CXGkdHmaEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_CXHykHmaEd2HRLLd0I1WrA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_CXGkdXmaEd2HRLLd0I1WrA"> + <property xmi:id="_CXGkdnmaEd2HRLLd0I1WrA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_CXGkd3maEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_CXHykHmaEd2HRLLd0I1WrA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_YWpvgHmbEd2HRLLd0I1WrA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_YWpvgXmbEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_YWpvgnmbEd2HRLLd0I1WrA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_yXF9IHmcEd2HRLLd0I1WrA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_yXF9IXmcEd2HRLLd0I1WrA" presentation="default"> + <element href="conception.uml#_yXGkMHmcEd2HRLLd0I1WrA"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_-9_pwH2uEd22ZfAQrfk_WQ" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_-9_pwX2uEd22ZfAQrfk_WQ" presentation="default"> + <element href="conception.uml#_--Be8H2uEd22ZfAQrfk_WQ"/> + </semanticModel> + </contained> + </contained> + </contained> + </contained> + </diagrams> + <subdiagrams xmi:id="_blzJsPWREdy_h6Mk-BiOHw"> + <model href="conception.uml#_w8IxIM37EdqwVrslYOdUDA"/> + <diagrams xmi:id="_3z5UoKQ8Ed2AzttPnb4djA" position="0,0" size="100,100" name="unnamed" viewport="0,0"> + <property xmi:id="_30mfQKQ8Ed2AzttPnb4djA" key="pageFormatName" value="A4"/> + <property xmi:id="_30mfQaQ8Ed2AzttPnb4djA" key="diagramWidth" value="840"/> + <property xmi:id="_30mfQqQ8Ed2AzttPnb4djA" key="diagramHeight" value="1188"/> + <property xmi:id="_30mfQ6Q8Ed2AzttPnb4djA" key="pageMarginName" value="Small Margin"/> + <property xmi:id="_30mfRKQ8Ed2AzttPnb4djA" key="diagramTopMargin" value="20"/> + <property xmi:id="_30mfRaQ8Ed2AzttPnb4djA" key="diagramBottomMargin" value="20"/> + <property xmi:id="_30mfRqQ8Ed2AzttPnb4djA" key="diagramLeftMargin" value="20"/> + <property xmi:id="_30mfR6Q8Ed2AzttPnb4djA" key="diagramRightMargin" value="20"/> + <property xmi:id="_30mfSKQ8Ed2AzttPnb4djA" key="orientation" value="portrait"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_3z5UoaQ8Ed2AzttPnb4djA" presentation="org.topcased.modeler.uml.classdiagram"> + <element href="conception.uml#_w8IxIM37EdqwVrslYOdUDA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_4I8XkKQ8Ed2AzttPnb4djA" position="57,35" size="658,436"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_4I8XkaQ8Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_4JKaAKQ8Ed2AzttPnb4djA"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ER5GYKQ9Ed2AzttPnb4djA" position="85,36" size="448,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER5GYaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_6MN4EKHlEd2BIt21aAt4XQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ER5GYqQ9Ed2AzttPnb4djA"> + <property xmi:id="_ER5GY6Q9Ed2AzttPnb4djA" key="eStructuralFeatureID" value="37"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER5GZKQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_6MN4EKHlEd2BIt21aAt4XQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ER5GZaQ9Ed2AzttPnb4djA"> + <property xmi:id="_ER5GZqQ9Ed2AzttPnb4djA" key="eStructuralFeatureID" value="47"/> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER5GZ6Q9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_6MN4EKHlEd2BIt21aAt4XQ"/> + </semanticModel> + <contained xsi:type="di:GraphNode" xmi:id="_ER8JsKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER8JsaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_gUeBgKHmEd2BIt21aAt4XQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ER9-4KQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER9-4aQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_h-vyAKHmEd2BIt21aAt4XQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ER-l8KQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER-l8aQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_x1foQKHmEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ER_NAKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER_NAaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_yucpgKHmEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ER_0EKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER_0EaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_zTIq8KHmEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ER_0EqQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ER_0E6Q9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_-cp9EKHmEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESAbIKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESAbIaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_aPi1MKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESAbIqQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESAbI6Q9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_oCavMKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESBCMKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESBCMaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_ytZrMKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESBpQKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESBpQaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_1j0esKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESBpQqQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESBpQ6Q9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_9IXOMKHnEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESCQUKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESCQUaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_GpkesKHoEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESC3YKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESC3YaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_OR2esaHoEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESC3YqQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESC3Y6Q9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_k0lEwKHoEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + <contained xsi:type="di:GraphNode" xmi:id="_ESEFgKQ9Ed2AzttPnb4djA" position="0,0" size="-1,-1"> + <semanticModel xsi:type="di:EMFSemanticModelBridge" xmi:id="_ESEFgaQ9Ed2AzttPnb4djA" presentation="default"> + <element href="conception.uml#_u1l2sKHoEd2T0aUWLQqzuQ"/> + </semanticModel> + </contained> + </contained> + </contained> + </contained> + </diagrams> + </subdiagrams> +</diagrams:Diagrams> diff --git a/eugene/src/test/resources/xmi/2.1/vpod.uml b/eugene/src/test/resources/xmi/2.1/vpod.uml new file mode 100644 index 0000000..5d3c93b --- /dev/null +++ b/eugene/src/test/resources/xmi/2.1/vpod.uml @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:AcceleoBusiness="http:///schemas/AcceleoBusiness/_my2ZAHXaEd2S2Y-Jnv-fiQ/2" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http:///schemas/AcceleoBusiness/_my2ZAHXaEd2S2Y-Jnv-fiQ/2 pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"> + <uml:Model xmi:id="_qb8akM37EdqwVrslYOdUDA" name="org::sharengo::s4a::storage::http::vpod"> + <packagedElement xmi:type="uml:Package" xmi:id="_w8IxIM37EdqwVrslYOdUDA" name="services"> + <packagedElement xmi:type="uml:Class" xmi:id="_lfUrOPEWEd2YNfzDP2MSAQ" name="VpodHttpStorageSrv" clientDependency="_KgAvo_EXEd2YNfzDP2MSAQ _T9NPk_EnEd2YNfzDP2MSAQ _u2XgBPFLEd2IhJnrV0PXeg"> + <interfaceRealization xmi:id="_KgAvo_EXEd2YNfzDP2MSAQ" name="InterfaceRealization1" client="_lfUrOPEWEd2YNfzDP2MSAQ"> + <supplier xmi:type="uml:Interface" href="http-storage-api/src/main/uml/conception.uml#_hqBkGO7mEd2ObcIAlNg7-w"/> + <contract href="http-storage-api/src/main/uml/conception.uml#_hqBkGO7mEd2ObcIAlNg7-w"/> + </interfaceRealization> + <ownedOperation xmi:id="_2inkYvEnEd2YNfzDP2MSAQ" name="getDescription"> + <ownedParameter xmi:id="_0l9YgPEpEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:Class" href="http-storage-api/src/main/uml/conception.uml#_nstfSO7mEd2ObcIAlNg7-w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_30k7gvEnEd2YNfzDP2MSAQ" name="getContract"> + <ownedParameter xmi:id="_2xusgPEpEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:Class" href="http-storage-api/src/main/uml/conception.uml#_8lDAGO7mEd2ObcIAlNg7-w"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_46dlgvEnEd2YNfzDP2MSAQ" name="createFileEntry"> + <ownedParameter xmi:id="_VI7mYPEoEd2YNfzDP2MSAQ" name="fileEntry"> + <type xmi:type="uml:Class" href="http-storage-api/src/main/uml/conception.uml#_e_H4iO7wEd2ObcIAlNg7-w"/> + </ownedParameter> + <ownedParameter xmi:id="_W6VSkPEoEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:Class" href="http-storage-api/src/main/uml/conception.uml#_e_H4iO7wEd2ObcIAlNg7-w"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_6Cb6MvEnEd2YNfzDP2MSAQ" name="deleteFileEntry"> + <ownedParameter xmi:id="_a7rBEPEoEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_7PeVEvEnEd2YNfzDP2MSAQ" name="retrieveFileEntry"> + <ownedParameter xmi:id="_dLUvgPEoEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:Class" href="http-storage-api/src/main/uml/conception.uml#_e_H4iO7wEd2ObcIAlNg7-w"/> + </ownedParameter> + <ownedParameter xmi:id="_fpkTkPEoEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="_-l6FYvEnEd2YNfzDP2MSAQ" name="getUploadToken"> + <ownedParameter xmi:id="_j5hF0PEoEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:Class" href="http-storage-api/src/main/uml/conception.uml#_VmNvyO7tEd2ObcIAlNg7-w"/> + </ownedParameter> + <ownedParameter xmi:id="_nescwPEoEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + <ownedOperation xmi:id="__tR9IvEnEd2YNfzDP2MSAQ" name="getDownloadUrl"> + <ownedParameter xmi:id="_lpICQPEoEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_pT98UPEoEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_JGiykvEoEd2YNfzDP2MSAQ" name="getThumbnailHtmlCode"> + <ownedParameter xmi:id="_rwlIsPEoEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_uhTj4PEoEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_Ph0M4vEoEd2YNfzDP2MSAQ" name="getViewerHtmlCode"> + <ownedParameter xmi:id="_v-vLMPEoEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_ykcCIPEoEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_Q41qMvEoEd2YNfzDP2MSAQ" name="getThumbnailJpegImageUrl"> + <ownedParameter xmi:id="_xP87cPEoEd2YNfzDP2MSAQ" name="return" direction="return"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_0Qn3IPEoEd2YNfzDP2MSAQ" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_4RBZUKs-Ed2Nmqhc73l7SA"/> + </ownedOperation> + <ownedOperation xmi:id="_xQ6YEvLFEd2tb4J5u_5Mmg" name="validateUpload"> + <ownedParameter xmi:id="_m7XOoPLHEd2tb4J5u_5Mmg" name="return" type="__l5j0PLJEd2tb4J5u_5Mmg" direction="return"/> + <ownedParameter xmi:id="_sOqUQPLHEd2tb4J5u_5Mmg" name="id"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <ownedParameter xmi:id="_sUnyUPLHEd2tb4J5u_5Mmg" name="postResponseCode"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Integer"/> + </ownedParameter> + <ownedParameter xmi:id="_salQYPLHEd2tb4J5u_5Mmg" name="postResponseContent"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_YNI5EHmZEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_GfaEUHmfEd2HRLLd0I1WrA"/> + <raisedException xmi:type="uml:Class" href="org.sharengo.utils.utils/src/main/uml/conception.uml#_KQqi-HjwEd2MH8DN-NMNrA"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_T9NPk_EnEd2YNfzDP2MSAQ" name="Dependency1" supplier="_O9ud2PEnEd2YNfzDP2MSAQ" client="_lfUrOPEWEd2YNfzDP2MSAQ"/> + <profileApplication xmi:id="_MIURkPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_MIURkfWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_tBzGgPWREdy_h6Mk-BiOHw" name="daos"> + <packagedElement xmi:type="uml:Class" xmi:id="_O9ud2PEnEd2YNfzDP2MSAQ" name="VpodMappingDao" clientDependency="_UfePI_EnEd2YNfzDP2MSAQ"> + <ownedOperation xmi:id="_nMbbgPE9Ed2IhJnrV0PXeg" name="findByVpodId"> + <ownedParameter xmi:id="_sN2G8PE9Ed2IhJnrV0PXeg" name="return" type="_rbNnmPEmEd2YNfzDP2MSAQ" direction="return"/> + <ownedParameter xmi:id="_uPVdkPE9Ed2IhJnrV0PXeg" name="vpodId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + <ownedOperation xmi:id="_Daw8YvKlEd2tb4J5u_5Mmg" name="findByStorageId"> + <ownedParameter xmi:id="_LP5FkPKlEd2tb4J5u_5Mmg" name="return" type="_rbNnmPEmEd2YNfzDP2MSAQ" direction="return"/> + <ownedParameter xmi:id="_MrPCMPKlEd2tb4J5u_5Mmg" name="storageId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedParameter> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_UfePI_EnEd2YNfzDP2MSAQ" name="Dependency1" supplier="_rbNnmPEmEd2YNfzDP2MSAQ" client="_O9ud2PEnEd2YNfzDP2MSAQ"/> + <profileApplication xmi:id="_Mg9bEPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_Mg-CIPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="__PrMMPWREdy_h6Mk-BiOHw" name="dtos"> + <packagedElement xmi:type="uml:Class" xmi:id="_PZiDWPEXEd2YNfzDP2MSAQ" name="VpodFileEntry"> + <generalization xmi:id="_XS1h4_EXEd2YNfzDP2MSAQ"> + <general xmi:type="uml:Class" href="http-storage-api/src/main/uml/conception.uml#_e_H4iO7wEd2ObcIAlNg7-w"/> + </generalization> + <ownedAttribute xmi:id="_s7YNQvE7Ed2YNfzDP2MSAQ" name="vpodId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_uuWXsPKkEd2tb4J5u_5Mmg" name="storageId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:id="_M2BsIPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_M2CTMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_Cp0X0PWSEdy_h6Mk-BiOHw" name="entities"> + <packagedElement xmi:type="uml:Class" xmi:id="_rbNnmPEmEd2YNfzDP2MSAQ" name="VpodMapping"> + <ownedAttribute xmi:id="_w-wIovEmEd2YNfzDP2MSAQ" name="vpodId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="__5BIgvEmEd2YNfzDP2MSAQ" name="filename"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + <ownedAttribute xmi:id="_F4uoMPEnEd2YNfzDP2MSAQ" name="state"> + <type xmi:type="uml:Enumeration" href="http-storage-api/src/main/uml/conception.uml#_FboYJfEJEd2YNfzDP2MSAQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_Gm6j4vEnEd2YNfzDP2MSAQ" name="creationDate"> + <type xmi:type="uml:DataType" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_unIxYASfEd2Qys9YSCxJaQ"/> + </ownedAttribute> + <ownedAttribute xmi:id="_7_3REvKkEd2tb4J5u_5Mmg" name="storageId"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/UML.metamodel.uml#String"/> + </ownedAttribute> + </packagedElement> + <profileApplication xmi:id="_NQyVgPWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_NQy8kPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </packagedElement> + <packagedElement xmi:type="uml:Dependency" xmi:id="_u2XgBPFLEd2IhJnrV0PXeg" name="Dependency1" client="_lfUrOPEWEd2YNfzDP2MSAQ"> + <supplier xmi:type="uml:Class" href="../../../../vpod-api/src/main/uml/conception.uml#_-qf24LCvEd2UyNhL8QTcHA"/> + </packagedElement> + <packagedElement xmi:type="uml:DataType" xmi:id="__l5j0PLJEd2tb4J5u_5Mmg" name="Boolean"/> + <profileApplication xmi:id="_LmCD4PWdEdyp25RO5nzQ4A"> + <eAnnotations xmi:id="_LmFHMPWdEdyp25RO5nzQ4A" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_81g14fWcEdyuYMHNZCqWBQ"/> + </eAnnotations> + <appliedProfile href="pathmap://ACCELEO_PROFILES/Acceleo.Business.profile.uml#_JX9fQPWcEdyuYMHNZCqWBQ"/> + </profileApplication> + </uml:Model> + <AcceleoBusiness:Service xmi:id="_oE4YMPEWEd2YNfzDP2MSAQ" base_Class="_lfUrOPEWEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Dto xmi:id="_Ries0PEXEd2YNfzDP2MSAQ" base_Class="_PZiDWPEXEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Entity xmi:id="_QuOLEPEnEd2YNfzDP2MSAQ" base_Class="_rbNnmPEmEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Dao xmi:id="_RwrtoPEnEd2YNfzDP2MSAQ" base_Class="_O9ud2PEnEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_SRsEwPEuEd2YNfzDP2MSAQ" base_Operation="_2inkYvEnEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_Sw-o0PEuEd2YNfzDP2MSAQ" base_Operation="_30k7gvEnEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_TWOq8PEuEd2YNfzDP2MSAQ" base_Operation="_46dlgvEnEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_T4zMgPEuEd2YNfzDP2MSAQ" base_Operation="_6Cb6MvEnEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_UbOkIPEuEd2YNfzDP2MSAQ" base_Operation="_7PeVEvEnEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_VFPxgPEuEd2YNfzDP2MSAQ" base_Operation="_-l6FYvEnEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_VgqiMPEuEd2YNfzDP2MSAQ" base_Operation="__tR9IvEnEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_V-UHgPEuEd2YNfzDP2MSAQ" base_Operation="_JGiykvEoEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_WhLkAPEuEd2YNfzDP2MSAQ" base_Operation="_Ph0M4vEoEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_XCtjwPEuEd2YNfzDP2MSAQ" base_Operation="_Q41qMvEoEd2YNfzDP2MSAQ"/> + <AcceleoBusiness:Remote xmi:id="_Bxjf4PLGEd2tb4J5u_5Mmg" base_Operation="_xQ6YEvLFEd2tb4J5u_5Mmg"/> + <AcceleoBusiness:Remote xmi:id="_CP8sEPLGEd2tb4J5u_5Mmg"/> +</xmi:XMI> diff --git a/maven-eugene-plugin/LICENSE.txt b/maven-eugene-plugin/LICENSE.txt new file mode 100644 index 0000000..3f7b8b1 --- /dev/null +++ b/maven-eugene-plugin/LICENSE.txt @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/maven-eugene-plugin/README.txt b/maven-eugene-plugin/README.txt new file mode 100644 index 0000000..d2e50d3 --- /dev/null +++ b/maven-eugene-plugin/README.txt @@ -0,0 +1,2 @@ +To deploy new version of pom: mvn deploy +To install localy: mvn install diff --git a/maven-eugene-plugin/changelog.txt b/maven-eugene-plugin/changelog.txt new file mode 100644 index 0000000..dddb0de --- /dev/null +++ b/maven-eugene-plugin/changelog.txt @@ -0,0 +1,53 @@ +1.0.0 xxx xxx + * Add multiple models loading and restricted package generation + * Recode EugenePlugin without ant + * Move to org.nuiton groupid + * Rename project to Eugene + +0.64 chemit 20090218 + * 20090211 [chatellier] add testPhase property in mojo to specify when using it in test phase + * 20090210 [chatellier] add info and debug maven log messages + * 20090210 [chatellier] add default value on all non required parameters + * 20090209 [chemit] fix bug when using sibling dependencies in a multi-module project + * 20090129 [chemit] use lutinproject 3.4 (suppress javadoc plugin invocation) + +0.63 chemit 20081215 + * 20081215 [chemit] follow lutingenerator release + +0.62 chemit 20081210 + * 20081210 [chemit] use lutinpluginproject 3.2 + * 20081203 [chemit] add a encoding goal property to be dispatched in all generator to control file generation encoding + * 20081118 [chemit] use lutinproject 3.1 + * 20081117 [chemit] + - add extraClassPathDirectory parameter to can specify an extra directory to add in classLoader + - bump lutingenerator version + +0.61 chatellier 20081114 + * 20081107 [chatellier] + - add test compile dir and test resources in generation gaol + * 20081101 [chemit] + - add an excludeTemplates property on GeneratorPlugin to permit exclusion of generators for some composite generator + - bump lutingenerator to 0.61 + +0.60 chemit 20081013 + * 20081013 [chemit] + - remove addCompileDirectory option (always done) + add dynamic resources + - use lutingenerator 0.60 + - clean pom + +0.51 thimel 20080925 + * 20080925 [thimel] Refactor pom using the correct architecture + * 20080925 [thimel] Switched License to LGPL + * 20080723 [chemit] + - add generated sources in maven project's compilation directories via addCompilationDirectory plugin property + + * 20070525 [chatellier] + - add Xmi2StateModel goal + - improve Xmi2Model Hierarchy + * 20070525 [chatellier] update ant dependency to 1.7.0 + * 20070525 [chatellier] replacing lutinxml.XSLAntTask by Ant.XSLTProcess + +0.50 ??? ??? + + * 20070420 [chatellier] add goal to copy a set of generated files + * 20070420 [chatellier] update lutingenerator depencency to 0.50 \ No newline at end of file diff --git a/maven-eugene-plugin/pom.xml b/maven-eugene-plugin/pom.xml new file mode 100644 index 0000000..6e88699 --- /dev/null +++ b/maven-eugene-plugin/pom.xml @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <parent> + <groupId>org.nuiton</groupId> + <artifactId>eugene</artifactId> + <version>1.0.0</version> + </parent> + + <groupId>org.nuiton.eugene</groupId> + <artifactId>maven-eugene-plugin</artifactId> + + <!-- POM Relationships : Inheritance : Dependencies --> + <dependencies> + + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>eugene</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + <exclusions> + <exclusion> + <groupId>org.apache.ant</groupId> + <artifactId>ant</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + </dependency> + + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>maven-helper-plugin</artifactId> + </dependency> + + </dependencies> + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + <name>EUGene - plugin maven</name> + <inceptionYear>2006</inceptionYear> + <description>maven plugin to use the eugene library</description> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + <packaging>maven-plugin</packaging> + + <build> + + <defaultGoal>install</defaultGoal> + + <plugins> + <!-- plugin plugin --> + <plugin> + <artifactId>maven-plugin-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>helpmojo</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + + </build> + + <!--Site--> + <reporting> + <plugins> + <!--Site report's plugin--> + <plugin> + <artifactId>maven-plugin-plugin</artifactId> + </plugin> + </plugins> + </reporting> + +</project> + diff --git a/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java new file mode 100644 index 0000000..d28855a --- /dev/null +++ b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java @@ -0,0 +1,264 @@ +/* *##% Plugin maven Generator + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ +package org.nuiton.eugene.plugin; + +import org.nuiton.util.PluginIOContext; +import java.io.File; +import java.io.FileFilter; + +import java.io.IOException; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugin.logging.Log; +import org.dom4j.DocumentException; +import org.dom4j.Node; +import org.dom4j.io.SAXReader; +import org.dom4j.Document; +import org.nuiton.util.PluginHelper; + +/** + * Copy a file set to a versionned directory structure. + * + * @author chatellier + * + * @version $Revision$ + * + * Last update : $Date$ By : $Author$ + * + * @goal copyVersionFiles + */ +public class CopyVersionFiles extends EugeneAbstractMojo implements FileFilter { + + /** + * Les entrées sorties du plugin. + * + * <p/> + * + * En entrée on demande des répertoires où chercher les fichiers objectmodel a convertir. + * <p/> + * En sortie on demande le répertoire ou generer les classes java. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <code> + * <copyVersionResources> + * </p> + * <input>target/generated-sources/models</input> + * </p> + * <output>target/generated-sources/java</output> + * </p> + * </copyVersionResources> + * </code> + * </p> + * + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <code> + * <copyVersionResources> + * </p> + * <input>target/generated-sources/test-models</input> + * </p> + * <output>target/generated-sources/test-java</output> + * </p> + * </copyVersionResources> + * </code> + * + * @parameter + * @since 1.0.0-rc-8 + */ + protected PluginIOContext copyVersionResources; + /** + * Fichiers objectModel a lire pour determiner la version. + * + * @parameter expression="${generator.includes}" default-value="*.*model" + * @since 0.51 + */ + protected String includes; + /** + * Le dossier de destination des fichiers copiés. + * + * Doit contenir un nom de modele : <tt>%MODELNAME%</tt> + * + * @parameter expression="${generator.copyVersionDir}" + * @since 0.51 + * @required + */ + protected String copyVersionDir; + /** + * Les mappings a sauvegarder + * + * @parameter expression="${generator.copyVersionFiles}" + * @since 0.51 + * @required + */ + protected String copyVersionFiles; + /** + * Version trouvee dans les fichiers objectModel. + * + * Type string, parce que elle peut avoir la forme "1.3.2" par exemple + */ + protected String versionFound = null; + /** + * Nom du model sauvegarde + */ + protected String modelNameFound = null; + /** + * Maven logger + */ + protected Log logger; + /** + * Dossier incluant le nom de la version + */ + protected File fVersionDir; + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + + // get log + logger = getLog(); + + super.execute(); + + // find version and model name + findVersionAndModelName(); + + if (versionFound == null || !versionFound.matches("[0-9]+(\\.[0-9]+)*")) { + versionFound = "0"; + logger.info("No version found in model files, setting version to '" + versionFound + "'"); + } else { + logger.info("Version '" + versionFound + "' found in model description"); + } + + String destDir = copyVersionDir.replace("%MODELNAME%", modelNameFound) + File.separator + versionFound; + fVersionDir = new File(destDir); + if (overwrite || !checkExistence()) { + try { + PluginHelper.copyFiles(copyVersionResources.getOutput(), fVersionDir, new String[]{copyVersionFiles}, null, true); + } catch (IOException ex) { + throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex); + } + } + } + + @Override + protected PluginIOContext getResources() { + return copyVersionResources; + } + + @Override + protected PluginIOContext initResources() { + + File defaultIn = getFile("target", "generated-sources", "models"); + File defaultOut = getFile("target", "generated-sources", "java"); + + File defaultTestIn = getFile("target", "generated-sources", "test-models"); + File defaultTestOut = getFile("target", "generated-sources", "test-java"); + + copyVersionResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); + + return copyVersionResources; + } + + /** + * Check if previous saved files are already present + * @return <code>true</code> if already present,<code>false</code> otherwise. + */ + protected boolean checkExistence() { + + boolean exist = false; + + if (fVersionDir.exists() && fVersionDir.listFiles().length > 0) { + logger.warn("[COPY] Warning saved files for version '" + versionFound + "' and name '" + modelNameFound + "' already exists"); + logger.warn("[COPY] Copy won't be done unless copyOverwrite " + "parameter is set to 'true' or version is updated"); + + exist = true; + } + + return exist; + } + +// /** +// * Copy hibernate files. +// * +// * Using ant task +// * @throws IOException +// */ +// protected void copyAction() throws IOException { + // creation du repertoire +// fVersionDir.mkdirs(); +// destDirGen.mkdirs(); +// +// /* Création d'un projet ant */ +// Project p = createProject(); +// +// /* Création de la tâche ant Copy */ +// Copy copy = createCopyTask(p); +// +// /* Configuration */ +// copy.setTodir(fVersionDir); +// copy.setOverwrite(true); +// +// FileSet fileSet = new FileSet(); +//// fileSet.setDir(destDirGen); +// fileSet.setDir(copyVersionResources.getOutput()); +// fileSet.setIncludes(copyVersionFiles); +// copy.addFileset(fileSet); +// +// /* Execution */ +// copy.execute(); +// } + /** + * Find version and name in object model files + */ + protected void findVersionAndModelName() { + + //TODO TC-20090820 : iterate on all inputs + File srcModelDir = copyVersionResources.getInputs()[0]; + + File[] modelFiles = srcModelDir.listFiles(this); + + //FIXME TC-20090820 this is a bit funny iterate and keep the last model values ? + // should iterate and do the treatment for each model + for (File modelFile : modelFiles) { + SAXReader saxR = new SAXReader(); + Document document; + try { + document = saxR.read(modelFile); + Node node; + node = document.selectSingleNode("/objectModel/@version"); + if (node != null) { + versionFound = node.getStringValue(); + } + node = document.selectSingleNode("/objectModel/@name"); + if (node != null) { + modelNameFound = node.getStringValue(); + } + } catch (DocumentException e) { + logger.error("Can't read document", e); + } + } + } + + @Override + public boolean accept(File arg0) { + String fullPath = arg0.getAbsolutePath(); + // regex + String regexInclude = includes.replaceAll("\\.", "\\.").replaceAll( + "([^\\*])\\*([^\\*])", "$1[^/]*$2").replaceAll("\\*\\*", ".*") + "$"; + return fullPath.matches(regexInclude); + } +} diff --git a/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java new file mode 100644 index 0000000..6da955e --- /dev/null +++ b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java @@ -0,0 +1,173 @@ +package org.nuiton.eugene.plugin; + +import org.nuiton.util.PluginIOContext; +import java.io.File; +import java.net.URL; +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.MavenProject; +import org.apache.maven.settings.Settings; + +/** + * La classe de base pour definir des mojos dans eugene. + * + * @author chemit + * @since 1.0.0-rc-8 + */ +public abstract class EugeneAbstractMojo extends AbstractMojo { + + /** + * Maven project. + * + * @description Dépendance du projet. + * @parameter default-value="${project}" + * @readonly + * @since 1.0.0-rc-8 + */ + protected MavenProject project; + /** + * @description le settings (pour obtenir le mode offline) + * @parameter default-value="${settings}" + * @readonly + * @since 1.0.0-rc-4 + */ + protected Settings settings; + /** + * Ecrase les fichiers générés. + * + * @parameter expression="${eugene.overwrite}" default-value="false" + * @since 0.50 + */ + protected boolean overwrite; + /** + * Pour activer le mode verbeux. + * + * @parameter expression="${eugene.verbose}" default-value="${maven.verbose}" + * @since 1.0.0-rc-8 + */ + protected boolean verbose; + /** + * Encoding to be used for generation of files. + * + * @parameter expression="${eugene.encoding}" default-value="${project.build.sourceEncoding}" + * @since 0.60 + */ + protected String encoding; + /** + * A flag to mark the mojo to be used in a test phase. This will permits to add generated sources in test compile roots. + * + * @parameter expression="${eugene.testPhase}" default-value="false" + * @since 0.64 + */ + protected boolean testPhase; + + /** + * + * Note : l'objet peut etre {@null} si la configuration ne definit + * pas la propriété associées dans l'implentation. + * <p/> + * + * Dans tous les cas, une fois la methode {@link #initResources()} appele, + * l'objet devrait ne plus être null! + * + * @return l'io du plugin ou {@code null} si non initialisé + * + */ + protected abstract PluginIOContext getResources(); + + /** + * Initialiser les io du plugins. + * + * @return l'io intialisé (avec les valeurs par défaut, là où rien n'a + * été renseigné). + */ + protected abstract PluginIOContext initResources(); + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + + PluginIOContext p = initResources(); + + if ((p.getInputs() == null || p.getInputs().length == 0)) { + throw new MojoExecutionException("no input defined"); + } + if (p.getOutput() == null) { + throw new MojoExecutionException("no output defined"); + } + + p.getOutput().mkdirs(); + } + + protected PluginIOContext initResources(File defaultIn, File defaultOut, File defaultTestIn, File defaultTestOut) { + + PluginIOContext resources = getResources(); + if (resources == null) { + resources = new PluginIOContext(); + } + + // adding default inputs only if not consumed + if (resources.getInputs() == null) { + if (testPhase) { + resources.setInput(defaultTestIn); + } else { + resources.setInput(defaultIn); + } + getLog().info(" using default in : " + Arrays.asList(resources.getInputs())); + } else { + getLog().info(" in : " + Arrays.asList(resources.getInputs())); + } + + if (resources.getOutput() == null) { + if (testPhase) { + resources.setOutput(defaultTestOut); + } else { + resources.setOutput(defaultOut); + } + getLog().info(" using default out : " + resources.getOutput()); + } else { + getLog().info(" out : " + resources.getOutput()); + } + + return resources; + } + + /** + * Recupere le fichier donnée à partir de son chemin relatif sur le basedir + * du projet maven. + * + * @param paths les paths pour atteindre le fichier ou le répertoire + * + * @return le fichier de la destination + */ + protected File getFile(String... paths) { + File result = project.getBasedir(); + for (String path : paths) { + result = new File(result, path); + } + return result; + } + + /** + * Ajout dans la liste des urls et l'ensemble des urls sous forme de string, l'url + * donné. + * + * Note : l'utilisation de l'ensemble des urls sous forme de String est utile + * sinon la comparaison entre url requiere des appels reseaux et cela n'est + * pas acceptable dans notre cas (mode offline ne marcherait plus...). + * + * @param url l'url a rajouter dans la liste + * @param urls la liste des urls + * @param urlsAsString l'ensemble des urls sous forme de String + */ + protected void addUrl(URL url, List<URL> urls, Set<String> urlsAsString) { + String toString = url.toString(); + if (!urlsAsString.contains(toString)) { + urlsAsString.add(toString); + urls.add(url); + } + } +} diff --git a/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java new file mode 100644 index 0000000..5d6be9d --- /dev/null +++ b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java @@ -0,0 +1,394 @@ +/* *##% Plugin maven Generator + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ +package org.nuiton.eugene.plugin; + +import org.nuiton.util.PluginIOContext; +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; +import java.util.Map.Entry; + +import java.util.Set; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.model.Resource; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.MavenProject; +import org.nuiton.eugene.Generator; +import org.nuiton.util.PluginHelper; + +/** + * Effectue toutes les générations et copie les fichiers générés + * dans le répertoire de compilation + * + * @author ruchaud + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + * + * @goal generate + * @projectRequired true + */ +public class EugenePlugin extends EugeneAbstractMojo { + + /** + * Les entrées sorties du plugin. + * + * <p/> + * + * En entrée on demande des répertoires où chercher les fichiers objectmodel a convertir. + * <p/> + * En sortie on demande le répertoire ou generer les classes java. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <code> + * <generateResources> + * </p> + * <input>target/generated-sources/models</input> + * </p> + * <output>target/generated-sources/java</output> + * </p> + * </generateResources> + * </code> + * </p> + * + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <code> + * <generateResources> + * </p> + * <input>target/generated-sources/test-models</input> + * </p> + * <output>target/generated-sources/test-java</output> + * </p> + * </generateResources> + * </code> + * + * @parameter + * @since 1.0.0-rc-8 + */ + protected PluginIOContext generateResources; + /** + * Templates à utiliser, séparés par des virgules. + * + * @parameter expression="${eugene.templates}" + * @required + * @since 0.50 + */ + protected String templates; + /** + * Templates à ne pas utiliser. + * + * @parameter expression="${eugene.excludeTemplates}" + * @since 0.63 + */ + protected String[] excludeTemplates; + /** + * Fichier à inclure. + * + * @parameter expression="${eugene.includes}" default-value="*.*model" + * @since 0.50 + */ + protected String includes; + /** + * Nom par défaut du paquetage généré. + * + * @parameter expression="${eugene.defaultPackage}" default-value="${project.groupId}.${project.artifactId}" + * @since 0.50 + */ + protected String defaultPackage; + /** + * An extra directory to be added to the classpath. + * + * @parameter expression="${eugene.extraClassPathDirectory}" + * @since 0.63 + */ + protected File extraClassPathDirectory; + /** + * List of packages to generate (comma separated). + * + * If the parameter is not filled, will generate all packages. + * + * @parameter expression="${eugene.generatedPackages}" + * @since 1.0.0-rc-8 + */ + protected String generatedPackages; + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + + getLog().info("Generating java sources from models"); + getLog().info(" includes : " + includes); + getLog().info(" using template : " + templates); + getLog().info(" using defaultPackage : " + defaultPackage); + super.execute(); + + File[] modelFiles = getModelFiles(); + if (modelFiles.length == 0) { + // can skip + getLog().warn("no model to treate"); + return; + } + if (verbose) { + for (File m : modelFiles) { + getLog().info("will treate model file : " + m); + } + } + + List<String> packages = getPackagesToGenerate(); + + if (packages == null) { + getLog().info(" generating all packages"); + } else { + getLog().info(" generating only for packages " + packages); + } + + List<Generator> generators = getGenerators(packages); + + for (Generator generator : generators) { + getLog().info("Apply " + generator.getClass().getSimpleName() + " generator"); + + //TC-20090829 fix when loading more than one model together... + generator.generate(modelFiles, generateResources.getOutput()); +// for (File modelFile : modelFiles) { +// getLog().debug(" on " + modelFile.getAbsolutePath()); +// +// // generation +// generator.generate(modelFile, destDirGen); +// } + } + + fixCompileSourceRoots(); + } + + @Override + protected PluginIOContext getResources() { + return generateResources; + } + + @Override + protected PluginIOContext initResources() { + + File defaultIn = getFile("target", "generated-sources", "models"); + File defaultOut = getFile("target", "generated-sources", "java"); + + File defaultTestIn = getFile("target", "generated-sources", "test-models"); + File defaultTestOut = getFile("target", "generated-sources", "test-java"); + + generateResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); + + return generateResources; + } + + protected List<String> getPackagesToGenerate() { + List<String> generatedPackagesAsList = null; + if (generatedPackages != null && !generatedPackages.isEmpty()) { + generatedPackagesAsList = new ArrayList<String>(); + for (String s : generatedPackages.split(",")) { + generatedPackagesAsList.add(s); + } + } + return generatedPackagesAsList; + } + + /** + * Recuperation de la liste des fichiers de modele a traite. + * + * @return la liste des modeles a utiliser + */ + protected File[] getModelFiles() { + List<File> modelFiles = new ArrayList<File>(); + String[] includePatterns = includes.split(","); + + for (File srcDirGen : generateResources.getInputs()) { + + if (verbose) { + getLog().info("Search for " + Arrays.toString(includePatterns) + " in " + srcDirGen.getAbsolutePath()); + } + List<File> currentFiles = PluginHelper.getIncludedFiles(srcDirGen, includePatterns, null); + modelFiles.addAll(currentFiles); + } + return modelFiles.toArray(new File[modelFiles.size()]); + } + +// protected File[] getModelFiles() { +// // get file to generate +// // TODO improve this loop +// // TODO too strange code +// //TODO TC-20090820 use a DirectoryScanner which understand ant-like regex patterns :) +// List<File> modelFiles = new ArrayList<File>(); +// String[] includePatterns = includes.split(","); +// for (File srcDirGen : generateResources.getInputs()) { +// for (String includePattern : includePatterns) { +// includePattern = includePattern.trim(); +// boolean recursive = false; +// if (includePattern.startsWith("**/")) { +// recursive = true; +// includePattern = includePattern.substring(3); +// } +// // transform pattern in java regex +// includePattern = includePattern.replaceAll("\\.", "\\\\."); +// includePattern = includePattern.replaceAll("\\*", ".*"); +// // log java regex +// if (verbose) { +// getLog().info("Search for " + includePattern + " in " + srcDirGen.getAbsolutePath()); +// } +// List<File> currentFiles = FileUtil.find(srcDirGen, includePattern, recursive); +// modelFiles.addAll(currentFiles); +// } +// } +// return modelFiles.toArray(new File[modelFiles.size()]); +// } + + protected List<Generator> getGenerators(List<String> generatedPackagesAsList) throws MojoFailureException, MojoExecutionException { + // init generators + Properties generatorProperties = new Properties(); + generatorProperties.setProperty("defaultPackage", defaultPackage); + List<Generator> generators = new ArrayList<Generator>(); + String[] templatesNames = templates.split(","); + ClassLoader fixedClassLoader = fixClassLoader(); + for (String templateName : templatesNames) { + // remove trailing spaces + templateName = templateName.trim(); + try { + Generator generator = (Generator) Class.forName(templateName, + true, fixedClassLoader).newInstance(); + // configuration + generator.setExcludeTemplates(Arrays.asList(excludeTemplates)); + generator.setProperties(generatorProperties); + generator.setOverwrite(overwrite); + generator.setEncoding(encoding); + generator.setGeneratedPackages(generatedPackagesAsList); + generators.add(generator); + } catch (InstantiationException e) { + throw new MojoFailureException("Can't instantiate generator : " + templateName, e); + } catch (IllegalAccessException e) { + throw new MojoFailureException("Can't access generator : " + templateName, e); + } catch (ClassNotFoundException e) { + throw new MojoFailureException("Can't found generator : " + templateName, e); + } + } + return generators; + } + + /** + * permet d'ajout le répertoire de génération des fichiers java dans les répertoires + * de compilation du projet Maven. + */ + protected void fixCompileSourceRoots() { + + if (project == null) { + // no project defined, can not fix anything + // this case could appears if we wanted to do some tests of the plugin + return; + } + + File destDirGen = generateResources.getOutput(); + + if (testPhase) { + if (!project.getTestCompileSourceRoots().contains( + destDirGen.getPath())) { + getLog().info("Add test compile source root : " + destDirGen); + project.addTestCompileSourceRoot(destDirGen.getPath()); + Resource resources = new Resource(); + resources.setDirectory(destDirGen.getAbsolutePath()); + resources.setExcludes(Arrays.asList("**/*.java")); + getLog().info("Add test resource root :" + resources); + project.addTestResource(resources); + } + } else { + if (!project.getCompileSourceRoots().contains(destDirGen.getPath())) { + getLog().info("Add compile source root : " + destDirGen); + project.addCompileSourceRoot(destDirGen.getPath()); + Resource resources = new Resource(); + resources.setDirectory(destDirGen.getAbsolutePath()); + resources.setExcludes(Arrays.asList("**/*.java")); + getLog().info("Add resource root :" + resources); + project.addResource(resources); + } + } + } + + /** + * Prepare le classLoader a utiliser dans le generateur. + * <p/> + * Si un {@link #extraClassPathDirectory} a été renseigné, il est rajouté. + * <p/> + * Si des références à des sibling modules, ils seront rajoutés aussi. + * + * @return le class loader modifie + * @throws MojoExecutionException if any pb + */ + protected ClassLoader fixClassLoader() throws MojoExecutionException { + List<URL> urls = new ArrayList<URL>(); + Set<String> urlsAsString = new HashSet<String>(); + try { + ClassLoader loader = null; + if (extraClassPathDirectory != null) { + if (verbose) { + getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory); + } + urls.add(extraClassPathDirectory.toURI().toURL()); + } + if (project.getProjectReferences() != null) { + // this case is for multi-module when calling from a parent module + for (Object o : project.getProjectReferences().entrySet()) { + Entry<?, ?> entry = (Entry<?, ?>) o; + MavenProject relatedProject = (MavenProject) entry.getValue(); + if (verbose) { + getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'"); + } + //TODO il faudrait peut-etre aussi ajouter les dependances ? + addUrl(relatedProject.getArtifact().getFile().toURI().toURL(), urls, urlsAsString); + } + } + if (!project.getArtifacts().isEmpty()) { + // this is a special case when artifacts were resolved (for example in site phase) + if (verbose) { + getLog().info("Use resolved artifacts to build class-path"); + } + for (Object o : project.getArtifacts()) { + Artifact a = (Artifact) o; + if (!a.getScope().equals("provided")) { + addUrl(a.getFile().toURI().toURL(), urls, urlsAsString); + } + } + } + // we ask to add the directory in classloader + loader = getClass().getClassLoader(); + if (!urls.isEmpty()) { + loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), + loader); + } + return loader; + } catch (MalformedURLException e) { + throw new MojoExecutionException(e.getMessage()); + } finally { + urls.clear(); + urlsAsString.clear(); + } + + } +} diff --git a/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java new file mode 100644 index 0000000..e32979a --- /dev/null +++ b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java @@ -0,0 +1,416 @@ +/* *##% Plugin maven Generator + * Copyright (C) 2006 - 2008 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ +package org.nuiton.eugene.plugin; + +import org.nuiton.util.PluginIOContext; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import java.util.Map.Entry; +import java.util.Set; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.URIResolver; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.MavenProject; +import org.nuiton.util.FasterCachedResourceResolver; +import org.nuiton.util.FileUtil; +import org.nuiton.util.PluginHelper; +import org.nuiton.util.Resource; +import org.nuiton.util.ResourceResolver; +import org.nuiton.util.StringUtil; + +/** + * Converti les fichiers XMI en fichier Model via une transformation XSLT a + * définir. + * + * Class abstraite sans feuille de style ni extension. + * + * @author ruchaud + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public abstract class Xmi2Model extends EugeneAbstractMojo { + + /** + * Les entrées sorties du plugin. + * + * <p/> + * + * En entrée on demande des répertoires où chercher les fichiers xmi a convertir. + * <p/> + * En sortie on demande le répertoire ou extraire les xmi et copier les resources. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <code> + * <xmiResources> + * </p> + * <input>target/generated-sources/xmi<\input> + * </p> + * <output>target/generated-sources/models<\output> + * </p> + * </xmiResources> + * </code> + * + * </p> + * + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <code> + * <xmiResources> + * </p> + * <input>target/generated-sources/xmi<\input> + * </p> + * <output>target/generated-sources/test-models<\output> + * </p> + * </xmiResources> + * </p> + * </code> + * + * @parameter + * @since 1.0.0-rc-8 + */ + protected PluginIOContext xmiResources; + /** + * Nom du paquetage pour les fichiers générés + * + * @parameter expression="${generator.fullPackagePath}" default-value="${project.groupId}.${project.artifactId}" + * @since 0.50 + */ + protected String fullPackagePath; + /** + * Nom du paquetage à généré + * + * @parameter expression="${generator.extractedPackages}" default-value="${project.groupId}.${project.artifactId}" + * @since 0.50 + */ + protected String extractedPackages; + /** + * Liste des types de modeles acceptés séparés par des vigules. + * + * @parameter expression="${generator.acceptedXmiTypes}" default-value="xmi,uml" + * @since 1.0.0-rc-4 + */ + protected String acceptedXmiTypes; + /** + * Nom du resolver a utiliser + * + * @parameter expression="${generator.resolver}" default-value="org.nuiton.util.ResourceResolver" + * @since 1.0.0-rc-4 + */ + protected String resolver; + /** + * An extra directory to be added to the classpath. + * + * @parameter expression="${eugene.extraClassPathDirectory}" + * @since 1.0.0-rc-4 + */ + protected File extraClassPathDirectory; + + /** + * Get extension. + * + * @return the extension + */ + protected abstract String getExtension(); + + /** + * Get style sheet. + * + * @param model the model file used to determine the stylesheet to use + * @return the stylesheet name + */ + protected abstract String getStyleSheet(File model); + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + long t0 = System.nanoTime(); + super.execute(); + try { + + getLog().info("Processing XSL tranformation"); + getLog().info(" with fullPackagePath : " + fullPackagePath); + getLog().info(" with extractedPackages : " + extractedPackages); + getLog().info(" with acceptedXmiTypes : " + acceptedXmiTypes); + getLog().info(" with resolver : " + resolver); + + TransformerFactory factory = TransformerFactory.newInstance(); + + ClassLoader fixedClassLoader = fixClassLoader(); + String[] includes = getSuffixPattern("*"); + + String[] acceptedTypesAsArray = getAcceptedTypesAsArray(); + + for (File dir : xmiResources.getInputs()) { + // recuperation des fichiers a traiter + List<File> files = PluginHelper.getIncludedFiles(dir, includes, null); + + // lancement des traitements xsl sur les fichiers trouvés + // dans le repertoire + actionXsl(dir, files, factory, fixedClassLoader, acceptedTypesAsArray); + } + } finally { + getLog().info("xsl done in " + StringUtil.convertTime(System.nanoTime() - t0)); + } + + getLog().info("Copy resources files"); + + try { + String[] excludes = getSuffixPattern("**/*"); + PluginHelper.copyFiles(xmiResources, null, excludes, overwrite); + } catch (IOException ex) { + throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex); + } + } + + @Override + protected PluginIOContext getResources() { + return xmiResources; + } + + @Override + protected PluginIOContext initResources() { + + File defaultIn = getFile("target", "generated-sources", "xmi"); + File defaultOut = getFile("target", "generated-sources", "models"); + File defaultTestIn = getFile("target", "generated-sources", "test-xmi"); + File defaultTestOut = getFile("target", "generated-sources", "test-models"); + + xmiResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); + + return xmiResources; + } + + protected String[] getSuffixPattern(String prefix) { + String[] acceptedSuffixes = getAcceptedTypesAsArray(); + int max = acceptedSuffixes.length; + final String[] patterns = new String[max]; + for (int i = 0; i < max; i++) { + patterns[i] = prefix + acceptedSuffixes[i]; + } + return patterns; + } + + protected void actionXsl(File dir, List<File> files, TransformerFactory factory, ClassLoader fixedClassLoader, String[] acceptedSuffixes) throws MojoExecutionException { + for (File file : files) { + try { + if (getLog().isDebugEnabled()) { + getLog().debug("treate file : " + file); + } + // Prepare resolver, stylesheet + URIResolver fileResolver = getUriResolver(file, fixedClassLoader); + String styleSheet = getStyleSheet(file); + URL xsl = Resource.getURL(styleSheet); + + //TC-20090820 : using recursive for xmi +// File result = new File(destDirModel, FileUtil.basename(file, +// acceptedSuffixes).concat(".").concat(getExtension())); + String filename = FileUtil.basename(file, acceptedSuffixes).concat(".").concat(getExtension()); + String relatifPath = file.getParentFile().getAbsolutePath().substring(dir.getAbsolutePath().length()); + File dstDir = xmiResources.getOutput(); + if (!relatifPath.isEmpty()) { + dstDir = new File(dstDir, relatifPath); + dstDir.mkdirs(); + } + File result = new File(dstDir, filename); + if (!overwrite && file.lastModified() < result.lastModified()) { + getLog().info("file up-to-date : " + result); + continue; + } + if (getLog().isDebugEnabled()) { + getLog().debug("generate " + result); + } + + // Create the xsl transformer and set parameters + Transformer transformer = factory.newTransformer(new StreamSource(xsl.openStream())); + + transformer.setParameter("fullPackagePath", fullPackagePath); + transformer.setParameter("extraPackages", extractedPackages); + + transformer.setURIResolver(fileResolver); + transformer.transform(new StreamSource(file), new StreamResult( + new FileOutputStream(result))); + + } catch (Exception e) { + throw new MojoExecutionException(e.getMessage(), e); + } + } + } + + /** + * Look for the types declared in property "acceptedXmiTypes", split it + * on ',' and check for the leading '.'. + * + * @return an array with all the accepted xmi types and a leading '.' + */ + protected String[] getAcceptedTypesAsArray() { + String[] splittedTypes = acceptedXmiTypes.split(","); + String[] result = new String[splittedTypes.length]; + + for (int i = 0; i < splittedTypes.length; i++) { + String type = splittedTypes[i]; + if (!type.startsWith(".")) { + type = "." + type; + } + result[i] = type; + } + + return result; + } + + protected URIResolver getUriResolver(File model, ClassLoader cl) { + URIResolver result = null; + + try { + Class<?> clazz = (Class<?>) Class.forName(resolver, true, cl); + + // Try to set the base using the constructor + try { + // Look for a constructor with a String parameter (base) + Constructor<?> withBaseConstructor = clazz.getConstructor(String.class); + // Set the xmi folder as the base + String base = model.getParentFile().getAbsolutePath(); + // Instantiate + result = (URIResolver) withBaseConstructor.newInstance(base); + } catch (Exception eee) { + getLog().warn("Unable to instantiate resolver with String parameter", + eee); + } + + // If resolver is still not created, create it using the default + // constructor + if (result == null) { + result = (URIResolver) clazz.newInstance(); + } + + if (result instanceof ResourceResolver) { + ((ResourceResolver) result).setVerbose(verbose); + ((ResourceResolver) result).setCl(cl); + if (result instanceof FasterCachedResourceResolver) { + boolean offline = settings.isOffline(); + getLog().debug("using offline mode ? : " + offline); + ((FasterCachedResourceResolver) result).setOffline(offline); + } + } + + } catch (Exception eee) { + getLog().warn("Unable to instantiate resolver using the default constructor", eee); + } + + return result; + } + + /** + * Prepare le classLoader a utiliser dans le generateur. + * <p/> + * Si un {@link #extraClassPathDirectory} a été renseigné, il est rajouté. + * <p/> + * Si des références à des sibling modules, ils seront rajoutés aussi. + * + * @return le class loader modifie + * @throws MojoExecutionException if any pb + */ + protected ClassLoader fixClassLoader() throws MojoExecutionException { + Set<String> urlsAsString = new HashSet<String>(); + List<URL> urls = new ArrayList<URL>(); + try { + ClassLoader loader = null; + if (extraClassPathDirectory != null) { + if (verbose) { + getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory); + } + urls.add(extraClassPathDirectory.toURI().toURL()); + } + if (project.getProjectReferences() != null) { + // this case is for multi-module when calling from a parent module + for (Object o : project.getProjectReferences().entrySet()) { + Entry<?, ?> entry = (Entry<?, ?>) o; + MavenProject relatedProject = (MavenProject) entry.getValue(); + if (verbose) { + getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'"); + } + //TODO il faudrait peut-etre aussi ajouter les dependances ? + addUrl(relatedProject.getArtifact().getFile().toURI().toURL(), urls, urlsAsString); + } + } + if (!project.getArtifacts().isEmpty()) { + // this is a special case when artifacts were resolved (for example in site phase) + if (verbose) { + getLog().info("Use resolved artifacts to build class-path"); + } + for (Object o : project.getArtifacts()) { + Artifact a = (Artifact) o; + if (!a.getScope().equals("provided")) { + addUrl(a.getFile().toURI().toURL(), urls, urlsAsString); + } + } + } + // we ask to add the directory in classloader + loader = getClass().getClassLoader(); + if (getLog().isDebugEnabled()) { + getLog().info("original classloader " + loader); + } + if (loader instanceof URLClassLoader) { + // on reinjecte les urls de loader de base + // car sinon on risque de ne pas retrouver les resources... + for (URL u : ((URLClassLoader) loader).getURLs()) { + addUrl(u, urls, urlsAsString); + if (getLog().isDebugEnabled()) { + getLog().debug("original cp entry: " + u); + } + } + // et on force l'utilisation du classloader parent + // s'il existe + if (loader.getParent() != null) { + loader = loader.getParent(); + } + } + if (!urls.isEmpty()) { + loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), + loader); + } + if (getLog().isDebugEnabled()) { + for (URL u : urls) { + getLog().debug("cp entry: " + u); + } + } + return loader; + } catch (MalformedURLException e) { + throw new MojoExecutionException(e.getMessage()); + } finally { + urls.clear(); + urlsAsString.clear(); + } + + } +} diff --git a/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java new file mode 100644 index 0000000..e4bc6ac --- /dev/null +++ b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java @@ -0,0 +1,132 @@ +/* *##% Plugin maven Generator + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package org.nuiton.eugene.plugin; + +import java.io.File; +import java.io.IOException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +/** + * Converti les fichiers XMI en fichier ObjectModel + * + * @goal xmi2objectmodel + * + * @requiresDependencyResolution compile + * @requiresProject + */ +public class Xmi2ObjectModel extends Xmi2Model { + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + getLog().info("Conversion of XMI files into ObjectModel"); + super.execute(); + } + + @Override + public String getExtension() { + return "objectmodel"; + } + + @Override + protected String getStyleSheet(File model) { + String styleSheet = null; + + String version = getXmiVersion(model); + if (version.startsWith("1.")) { + styleSheet = "xmi1.2ToObjectModel.xsl"; + } else if (version.startsWith("2.")) { + styleSheet = "xmi2.1ToObjectModel.xsl"; + } else { + getLog().error("Unsupported xmi version [" + version + "]"); + } + + return styleSheet; + } + + /** + * Try to find xmi version on a file. + * + * @param xmiFile + * file to inspect + * @return version or null if version can't have been found + */ + protected String getXmiVersion(File xmiFile) { + String version = null; + + SAXParserFactory factory = SAXParserFactory.newInstance(); + + try { + SAXParser parser = factory.newSAXParser(); + + XmiVersionHandler handler = new XmiVersionHandler(); + parser.parse(xmiFile, handler); + + version = handler.getVersion(); + } catch (ParserConfigurationException e) { + getLog().debug("Can't parse file as xmi", e); + } catch (SAXException e) { + getLog().debug("Can't parse file as xmi", e); + } catch (IOException e) { + getLog().debug("Can't parse file as xmi", e); + } + + return version; + } + + /** + * Sax handler to find xmi version into xmi document. + */ + protected class XmiVersionHandler extends DefaultHandler { + + public String version = null; + + public XmiVersionHandler() { + super(); + } + + public String getVersion() { + return version; + } + + @Override + public void startElement(String uri, String localName, String qName, + Attributes attributes) throws SAXException { + + if (qName.equals("XMI")) { + version = attributes.getValue("xmi.version"); + getLog().debug("XMI version found : " + version); + } + + if (version == null) { + version = attributes.getValue("xmi:version"); + getLog().debug("XMI version found : " + version); + } + + } + } + +} diff --git a/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java new file mode 100644 index 0000000..9033c89 --- /dev/null +++ b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java @@ -0,0 +1,47 @@ +/* *##% Plugin maven Generator + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ +package org.nuiton.eugene.plugin; + +import java.io.File; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; + +/** + * Converti les fichiers XMI en fichier StateModel + * + * @goal xmi2statemodel + */ +public class Xmi2StateModel extends Xmi2Model { + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + getLog().info("Conversion of XMI files into StateModel"); + super.execute(); + } + + @Override + protected String getExtension() { + return "statemodel"; + } + + @Override + protected String getStyleSheet(File model) { + //TODO when StateModel will be supported in 2.1, compute the version to resolve the correct stylesheet + return "xmi1.2ToStateModel.xsl"; + } +} diff --git a/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java new file mode 100644 index 0000000..bc54fa3 --- /dev/null +++ b/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java @@ -0,0 +1,120 @@ +/* *##% Plugin maven Generator + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ +package org.nuiton.eugene.plugin; + +import java.io.IOException; +import org.nuiton.util.PluginIOContext; +import java.io.File; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.nuiton.util.PluginHelper; + +/** + * Extract zipped XMI files from zargo archive. + * + * @author ruchaud + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + * + * @goal zargo2xmi + */ +public class Zargo2Xmi extends EugeneAbstractMojo { + + public static final String[] ZARGO_FILE_FILTER = new String[]{"**/*.zargo", "**/*.zuml"}; + public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"}; + /** + * Les entrées-sorties du plugin. + * + * <p/> + * + * En entrée on demande des répertoires où chercher les fichiers zargo a convertir. + * <p/> + * En sortie on demande le répertoire ou extraire les xmi et copier les resources. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <code> + * <zargoResources> + * </p> + * <input>src/main/xmi</input> + * </p> + * <output>target/generated-sources/xmi</ouput> + * </p> + * </zargoResources> + * </code> + * </p> + * + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <code> + * <zargoResources> + * </p> + * <input>src/test/xmi</input> + * </p> + * <output>target/generated-sources/test-xmi</ouput> + * </p> + * <zargoResources> + * </code> + * + * @parameter + * @since 1.0.0-rc-8 + */ + protected PluginIOContext zargoResources; + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + getLog().info("Extract zipped XMI files from zargo archive and copy resources"); + super.execute(); + + getLog().info("Extract zipped XMI files"); + try { + PluginHelper.expandFiles(zargoResources, ZARGO_FILE_FILTER, null, XMI_FILE_FILTER, overwrite); + } catch (IOException ex) { + throw new MojoExecutionException("could not expand files for reason " + ex.getMessage(), ex); + } + + getLog().info("Copy resources"); + try { + PluginHelper.copyFiles(zargoResources, null, ZARGO_FILE_FILTER, overwrite); + } catch (IOException ex) { + throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex); + } + + } + + @Override + protected PluginIOContext getResources() { + return zargoResources; + } + + @Override + protected PluginIOContext initResources() { + + File defaultIn = getFile("src", "main", "xmi"); + File defaultOut = getFile("target", "generated-sources", "xmi"); + + File defaultTestIn = getFile("src", "test", "xmi"); + File defaultTestOut = getFile("target", "generated-sources", "test-xmi"); + + zargoResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); + + return zargoResources; + } +} diff --git a/maven-eugene-plugin/src/main/resources/log4j.properties b/maven-eugene-plugin/src/main/resources/log4j.properties new file mode 100644 index 0000000..0abf18f --- /dev/null +++ b/maven-eugene-plugin/src/main/resources/log4j.properties @@ -0,0 +1,8 @@ +# Global logging configuration +log4j.rootLogger=WARN, stdout +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n +# package level +log4j.logger.org.nuiton=INFO diff --git a/maven-eugene-plugin/src/site/rst/index.rst b/maven-eugene-plugin/src/site/rst/index.rst new file mode 100644 index 0000000..28b4c3f --- /dev/null +++ b/maven-eugene-plugin/src/site/rst/index.rst @@ -0,0 +1,20 @@ +=================== +Maven-eugene-plugin +=================== + +.. contents:: + + +Présentation +------------ + +Le plugin maven-eugene-plugin permet l'utilisation depuis maven de +Eugene. Pour plus de détails sur Eugene veuillez consulter +l'adresse suivante http://maven-site.nuiton.org/eugene/eugene + +Utilisation dans le pom.xml +--------------------------- + +Voir la `page`_ de détail des goals. + +.. _page: plugin-info.html \ No newline at end of file diff --git a/maven-eugene-plugin/src/site/site.xml b/maven-eugene-plugin/src/site/site.xml new file mode 100644 index 0000000..72bc2ff --- /dev/null +++ b/maven-eugene-plugin/src/site/site.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + </bannerLeft> + + <body> + <links> + <item name="Eugene" href="../eugene"/> + </links> + + <breadcrumbs> + <item name="${project.name}" href="${project.url}" /> + </breadcrumbs> + + <menu ref="parent"/> + + <menu name="Utilisateur"> + <item href="index.html" name="Accueil"/> + <item name="Goals" href="plugin-info.html"> + <item name="zargo2xmi" href="zargo2xmi-mojo.html"/> + <item name="xmi2statemodel" href="xmi2statemodel-mojo.html"/> + <item name="xmi2objectmodel" href="xmi2objectmodel-mojo.html"/> + <item name="generate" href="generate-mojo.html"/> + <item name="copyVersionFiles" href="copyVersionFiles-mojo.html"/> + <item name="help" href="help-mojo.html"/> + </item> + </menu> + + <menu name="Téléchargement"> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar" + name="Librairie (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" + name="Javadoc (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" + name="Sources (jar)"/> + </menu> + + <menu ref="reports"/> + + </body> +</project> diff --git a/maven-eugene-plugin/src/xmi/.dummy b/maven-eugene-plugin/src/xmi/.dummy new file mode 100644 index 0000000..e69de29 diff --git a/maven-eugene-plugin/src/xmi/chorem_diagram.zuml b/maven-eugene-plugin/src/xmi/chorem_diagram.zuml new file mode 100644 index 0000000..0f81cd5 Binary files /dev/null and b/maven-eugene-plugin/src/xmi/chorem_diagram.zuml differ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..7c4a4dd --- /dev/null +++ b/pom.xml @@ -0,0 +1,218 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <parent> + <groupId>org.nuiton</groupId> + <artifactId>mavenpom</artifactId> + <version>1.0.0</version> + </parent> + + <artifactId>eugene</artifactId> + <version>1.0.0</version> + + <modules> + <module>eugene</module> + <module>maven-eugene-plugin</module> + <!--module>eugene-demo</module--> + </modules> + + <dependencyManagement> + <dependencies> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + <version>1.1.0</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>commons-digester</groupId> + <artifactId>commons-digester</artifactId> + <version>2.0</version> + <scope>compile</scope> + </dependency> + + <!-- JAXP parser impl for digester --> + <dependency> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + <version>2.9.1</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.4</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant</artifactId> + <version>1.7.1</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>dom4j</groupId> + <artifactId>dom4j</artifactId> + <version>1.6.1</version> + <scope>compile</scope> + <exclusions> + <exclusion> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + </exclusion> + </exclusions> + </dependency> + + <!-- dom4j dep --> + <dependency> + <groupId>jaxen</groupId> + <artifactId>jaxen</artifactId> + <version>1.1.1</version> + <scope>runtime</scope> + <exclusions> + <exclusion> + <groupId>com.ibm.icu</groupId> + <artifactId>icu4j</artifactId> + </exclusion> + <exclusion> + <groupId>xerces</groupId> + <artifactId>xmlParserAPIs</artifactId> + </exclusion> + </exclusions> + </dependency> + + <!-- Meta model uml d'eclipse --> + <dependency> + <groupId>org.eclipse.uml2.uml</groupId> + <artifactId>resources</artifactId> + <version>2.1.0-v200706251652</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.eclipse.uml2</groupId> + <artifactId>uml</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>maven-helper-plugin</artifactId> + <version>${helper.version}</version> + </dependency> + + <!-- TODO TC-20090823 remove ant deps --> + <!--dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant</artifactId> + <version>${ant.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant-trax</artifactId> + <version>${ant.version}</version> + <scope>runtime</scope> + </dependency--> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + <version>${maven.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + <version>${maven.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <version>1.5.15</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.6</version> + <scope>test</scope> + </dependency> + + </dependencies> + </dependencyManagement> + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + <name>EUGene - pom</name> + <description>Efficient Universal Generator</description> + <inceptionYear>2004</inceptionYear> + <url>http://maven-site.nuiton.org/eugene</url> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>pom</packaging> + + <properties> + <!-- pour un muli module on doit fixer le projectId --> + <projectId>eugene</projectId> + + <!-- TODO TC-20090823 remove ant deps --> + <ant.version>1.7.1</ant.version> + + </properties> + + <build> + + <defaultGoal>install</defaultGoal> + + <pluginManagement> + <plugins> + + <plugin> + <artifactId>maven-site-plugin</artifactId> + <dependencies> + <dependency> + <groupId>org.nuiton.jrst</groupId> + <artifactId>doxia-module-jrst</artifactId> + <version>1.0.0</version> + </dependency> + </dependencies> + </plugin> + + </plugins> + </pluginManagement> + + </build> + + <!-- ************************************************************* --> + <!-- *** Build Environment ************************************** --> + <!-- ************************************************************* --> + + <!-- Source control management. --> + <scm> + + <connection>scm:svn:http://svn.nuiton.org/svn/eugene/tags/eugene-1.0.0</connection> + <developerConnection>scm:svn:http://svn.nuiton.org/svn/eugene/tags/eugene-1.0.0</developerConnection> + <url>http://www.nuiton.org/repositories/browse/eugene/tags/eugene-1.0.0</url> + </scm> + +</project> + diff --git a/src/site/site.xml b/src/site/site.xml new file mode 100644 index 0000000..f5562cf --- /dev/null +++ b/src/site/site.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + <href>/</href> + </bannerLeft> + + <poweredBy> + <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/> + <logo href="http://jrst.labs.libre-entreprise.org" name="JRst" img="${project.url}/images/jrst-logo.png"/> + <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/> + </poweredBy> + + <body> + + <breadcrumbs> + <item name="${project.name}" href="${project.url}" /> + </breadcrumbs> + + <menu ref="modules"/> + + <menu ref="reports"/> + </body> +</project> -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm